码迷,mamicode.com
首页 > 系统相关 > 详细

linux环境下pytesseract的安装和央行征信中心的登录验证码识别实战

时间:2017-09-28 14:14:29      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:log   import   tail   linxu   截图   zlib   ttl   技术分享   ring   

首先是安装,我参考的是这个 http://blog.csdn.net/xinghun_4/article/details/47860645

 

我是centos,使用yum

yum install python-devel libjpeg libjpeg-devel freetype freetype-devel zlib zlib-devel littlecms littlecms-devel libwebp libwebp-devel libfreetype libfreetype-devel giflib-devel automake libtool

 tesseract安装包我下载的是3.0.4,安装的时候提示搭配的leptonica的版本必须是1.7.2以上,所以不能使用1.6.9的leptonica,这点要注意。

技术分享

 

 

上一些央行征信征信的验证码例子,这是截图

技术分享

 

 可以看到,字迹是相当的工整,但是直接使用image_to_string这个方法几乎是不可能是别的,只有少数图片可以转换输出文字。

需要做点处理,找规律可以发现这些噪点都是一些暗淡的像素点,可以把他们去掉(就是转换成白色的)。

 

#!/root/miniconda3/envs/crcc/bin/python2.7
#coding=utf-8

import pytesseract
from PIL import Image
import re

threshold = 140
table = []

name=‘test‘
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)


def pic2text(name):
im=Image.open(name+‘.jpg‘)
imgry = im.convert(‘L‘) #灰化
out = imgry.point(table,‘1‘) #二值化
out.save(name+‘b.jpg‘)
# i = Image.open(name+‘b.jpg‘)
# i.show()
text= pytesseract.image_to_string(out)
print text
text2=re.sub(‘[^a-z0-9]‘,‘‘,text)
return text2


if __name__=="__main__":
print pic2text(‘pictures/150656820893‘)

 

技术分享

这是pycharmm调用的是远程linux环境的截图,如果要在linxu直接执行./do_yzm.py,那就需要在代码第一行指明解释器路径,然后修改do_yzm.py的权限为可执行的权限.

 

实际识别率几乎达到了95%,效果还可以。如果错了再换个验证码登录就可以了。

 

这是原图技术分享

 

threshold这个值要设置合理,设置太大了,那些噪点全部变成黑色了。

技术分享

 

设置小了也不行,虽然噪点都去掉了,但会把字母也弄残了。

技术分享

 

这样就会识别不出来了。

这是设置140的结果技术分享

 

 

 

 



linux环境下pytesseract的安装和央行征信中心的登录验证码识别实战

标签:log   import   tail   linxu   截图   zlib   ttl   技术分享   ring   

原文地址:http://www.cnblogs.com/ydf0509/p/7606094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!