《python识别验证码》

来源:互联网 发布:java定时器 任务超时 编辑:程序博客网 时间:2024/04/30 09:36

上一篇博文《模拟登陆》中遇到了一个问题:由于登陆需要输入验证码,而没能模拟登陆成功,今天刚好借着开题有点时间,因此就研究了下这个问题,百度了下,发现这个问题还是挺复杂的,但是,对于只含有“数字”的验证码,还是挺容易的。

程序需要PIL库和pytesser库支持。
关于PIL可以直接用官网下载。
关于pytesser可以到这里下载:到时候我提供给一个连接。
关于pytesser的使用:直接加压缩后,放在程序的相同目录下。

对一般数字型的验证码的识别实现代码如下:

#encoding=utf-8#Author:wuranghao#Date   :2015年12月17日20:29:21#HomePage :http://write.blog.csdn.net/postlist#email:wuranghao@foxmail.com#function:get verifyfrom pytesser import *import Image#第一步:打开图像im=Image.open("example_3.jpg")#第二步:把彩色图像转化为灰度图像imgry=im.convert('L')#第三步:把图像中的噪声去除掉这里的图像比较简单,直接阈值化就行了。我们把大于阈值threshold的像素置为1,其他的置为0。#对此,先生成一张查找表,映射过程让库函数帮我们做。threshold=140table=[]for i in range(256):    if i<threshold:        table.append(0)    else:        table.append(1)##映射out=imgry.point(table,'1')##第四步:把图片中的字符转化为文本,采用pytesser中的image_to_string函数text=image_to_string(out)print text

上面的程序验证类似简单的检验码是没有问题的。

但是,是没法识别如下的验证码的:

更复杂的图片就更加无法识别了,类似12306网站上面的图片验证码就更复杂了。

测试代码和图片资源可以从这里下载:https://github.com/wojiushimogui/getverify

1 0
原创粉丝点击