作为学了两个多月python的小白,深深地感受到“由此可得”的恶意,所以文章力求详细。
1.工具和环境
语言: python3.5
系统:win7 64位
浏览器:chrome
2.安装
2.1PIL安装
打开命令提示符,输入 pip install Pillow ,按Enter即可。
关于PIL模块的教程,参考http://www.cnblogs.com/apexchu/p/4231041.html
2.2Tesseract安装
下载地址:https://code.google.com/p/tesseract-ocr/downloads/list
如果没有VPN,翻不了墙,直接网上搜EXE安装包直接安装即可。
注意在 “Language data” 那个选项里,默认是只勾选了英文的,如果需要进行其他语言的识别,记得勾选对应的语言。
接着一路下一步就可以了。
安装完了之后需要设置 环境变量。
具体步骤是 右击我的电脑--左击属性--高级系统设置--高级--环境变量--选中PATH--编辑


在变量值一栏的最后加入 刚才安装的 Tesseract的路径,以英文的分号“;”结尾。
2.3pytesser3
注意,这里是pytesser3,而不是pytesser。
目前网上的教程基本上都是只适用python2.x的pytesser,因为这个我浪费了两个多小时试了各种教程,最后才发现github上有个大神做了一个适用于python3.x的轮子,附上地址https://github.com/songluyi/pytesser3
安装过程很简单,在命令提示符输入:pip install pytesser3,按Enter。
3.验证码识别
3.1图片降噪
所谓降噪就是将验证码上的干扰信息去除掉。比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。

from PIL import Image
im = Image.open("7364.jpg")
im_gary = im.point(lambda x: 0 if x<143 else 255) #二值化处理
im_gary.show()
处理后的验证码:

处理后背景上的噪点就没有了。
3.2 利用pytesser模块实现识别
from PIL import Image
import pytesser3
print (pytesser3.image_file_to_string('7364.jpg'))

代码其实很简单的,真正的难度是在安装模块上面。
如果运行代码出现了下面这种情况:

那么请修改__init__.py里面第十二行tesseract_exe_name为你tesseract安装路径。
网友评论