美文网首页
简单的验证码识别

简单的验证码识别

作者: 卜地锦 | 来源:发表于2017-09-01 15:27 被阅读0次

作为学了两个多月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进制点阵最好。

验证码图片7346.jpg

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安装路径。

相关文章

网友评论

      本文标题:简单的验证码识别

      本文链接:https://www.haomeiwen.com/subject/cptkjxtx.html