python3爬虫之验证码的识别——图形验证码

环境安装见博文《python3爬虫之验证码的识别——环境安装

 

图形验证看似是最为简单的验证,但是因为涉及到了很多图像处理方面的知识,想要做一个通用的验证程序并不简单

并且tesserocr自带的训练库识别的效果真是差强人意啊

本例通过中国知网注册页面的验证码为例 http://my.cnki.net/elibregister/commonRegister.aspx

通过浏览器工具将验证码图片保存到python工程文件下

 

主要代码为(验证码图片不经过任何处理):

import tesserocr
from PIL import Image

image = Image.open('tzxw.jpg')
image.show()
res = tesserocr.image_to_text(image)# 在pycharm中有兼容性问题
print(res)

ps:tesserocr.image_to_text( ) 这个方法可能在PyCharm里会标红,但是不影响运行

 

输出结果为空,即未识别出来,因此我们需要将图片处理一下,例如减少背景噪点、增加对比度之类

本例中采用设定一个阈值将图片转换为二值图

threshold = 135 # 阈值
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
image = image.point(table,'1')

阈值设定的大小与识别结果息息相关,当然不同的图片可能会有不同的阈值才能识别出来。因此这个方法并不是一个通用的方法

本例中输出结果:

(二值图)

输出结果也是tzxw

 

but!

换了几张一样大小的图测试发现,阈值的选择各不相同,有的图片就是怎么都识别不了或者识别错误

 

posted @ 2019-08-12 14:32  aby321  阅读(1038)  评论(0编辑  收藏  举报