博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python处理验证码第一篇(pytesser初探及报错处理)
阅读量:5213 次
发布时间:2019-06-14

本文共 2264 字,大约阅读时间需要 7 分钟。

(原文链接:)

前言:

春节期间,无法全身心投入地去写爬虫,那就玩玩验证码吧,应该比较有趣!

首次接触验证码识别,用pytesser接触一下最简单的验证码先,代码参照:。具体细节可以参见原文,里面安装和报错处理没有详细记录,我在此处主要记录一下自己的安装及处理过程。 

 

 

效果:

可识别以下类型的验证码: 

这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述 

 

 

正文:

代码:

# encoding=utf-8from PIL import Imagefrom pytesser import *img = Image.open('验证码.jpg') img_grey = img.convert('L') threshold = 140 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) img_out = img_grey.point(table, '1') text = image_to_string(img_grey) # 将图片转成字符串 print text
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

 

 

 

安装包:

需要安装的包主要有两个: PIL 和 pytesser 。 

我的环境:64位win8系统、python2.7

PIL模块的安装:

PIL 全称 “ Imaging Library”。 

下载地址:

我下载了这里写图片描述

运行报错:Python version 2.7 required, which was not found in the registry. 

Python version 2.7 required, which was not found in the registry.

网上找出原因:这个 PIL 安装资源是给32位,32位和64位操作系统下的python在注册表中的路径是不一样的: 

64位检查注册表的位置是: HKLM|HKCU\SOFTWARE\ 
32位检查注册表的位置是: HKLM|HKCU\SOFTWARE\wow6432node\ 
所以在64位系统中自然检查不出有Python。

解决方案: 

官方没有提供64位的PIL库,但非官方有:。 
下载里面的pillow库: 
64位PIL
然后在命令行安装该模块: 
pip install G:/For_Life/360download/Pillow-3.1.1-cp27-none-win_amd64.whl

注意:在 pillow 下载页中有一行 “Use ‘from PIL import Image’ instead of ‘import Image’” ,所以一般方法安装的 PIL 要导入 Image 模块使用 “import Image” ,而此方法安装的 PIL 要使用 “from PIL import Image” 。 

更多请见:。

 

 

 

pytesser模块的安装:

下载地址:。(此网址有时候会加载失败,我将自己下载的放在微盘上了: 密码:DPHE)

下载后得到 “pytesser_v0.0.1.zip”,是一个压缩文件,使用方法: 

1、在 “D:\For_Software\others\Python_PyDev\Python\Lib\site-packages” 路径下新建一个文件夹,命名 “pytesser” 。把 “pytesser_v0.0.1.zip” 里的文件解压到该目录: 
pytesser模块的安装

2、将 “pytesser.py” 改名为 “__init__.py”。

3、打开 “__init__.py” 文件,将 “tesseract_exe_name” 变量的值改为 “‘D:/For_Software/others/Python_PyDev/Python/Lib/site-packages/pytesser/tesseract’”(原值为 “‘tesseract’”)。

4、pytesser 模块依赖于 PIL 模块,如果是按照上面的方法安装 PIL 的话,需要把 “init.py” 文件里的 “import Image” 改成 “from PIL import Image” 。 

(注意以上的路径要改成自己的路径,不要原搬照抄,应该不会这么笨吧)

如果报错:WindowsError: [Error 2] 

pytesser WindowsError:[Error 2] 
可能的原因:python找不到 “tesseract.exe”,执行步骤3给python指定一个绝对路径就可以了。

如果报错:ImportError: No module named Image 

pytesser ImportError: No module named Image 
可能的原因:在 pytesser 中的 “__init__.py” ,导入 Image 的方式不对,见步骤4。 

 

 

总结:

其实这只是处理最简单的验证码而已,代码也很简单,主要做两个工作而已。第一个是将彩色图片转成灰度图片并除噪,第二个是使用 pytesser.image_to_string() 将图片中的字符提取出来。

处理的图片也是非常有限的图片上的数字或字母必须没有变形(即使是没有变形的情况下还会出现数字跟字母混淆的情况),验证码的背景不能太复杂,允许字体加上一些颜色。 

这么简单的验证码估计很少见,不常用。所以这么简单的处理方法,我们看一看也就可以了,如果实际使用的话技术还有待深入。

 

 

转载请注明出处,谢谢!(原文链接:)

转载于:https://www.cnblogs.com/Devopser/p/6405846.html

你可能感兴趣的文章
XML 创建
查看>>
http-https php文件下载
查看>>
html--onreadystatechange属性
查看>>
BZOJ 2553 禁忌
查看>>
6.15 考试修改+总结
查看>>
综合布线系统---常见机柜尺寸
查看>>
【皇甫】☀Struts_第一节课
查看>>
关于mysql启动问题---mysqld_safe mysqld from pid file * ended
查看>>
python操作mysql数据库
查看>>
codeforces1097D Makoto and a Blackboard 数学+期望dp
查看>>
NOIP练习赛题目4
查看>>
工作996生病ICU,程序员的工作就不能没有加班?
查看>>
Android Eclipse JNI 调用 .so文件加载【转】
查看>>
iOS基于B站的IJKPlayer框架的流媒体探究
查看>>
ios之库Protobuf的使用
查看>>
Hibernate初探之单表映射——第二章:Hibernate进阶
查看>>
QuickHit游戏
查看>>
C#之四十 Winform MD5加密
查看>>
ASP.NET(C#)——GridView刷新
查看>>
ansible案例-安装nginx
查看>>