浅谈验证码识别,并训练pytesseract提高识别率

  • A+
所属分类:安全博客
摘要

pytesseract 最近在写织梦的验证码识别遇到的小问题,用pytesseract默认的字典效果不是很理想于是就有了这篇文章。 记录一下方便查询

pytesseract

前言

最近在写织梦的验证码识别遇到的小问题,用pytesseract默认的字典效果不是很理想于是就有了这篇文章。 记录一下方便查询

介绍

谷歌的开源框架 tesseract-ocr可以帮助我们进行识别图像,文字等等,tesseract可以识别多种语言(一些常用的语言),多种图片格式,非常强大。

相关工具

下载并安装tesseract(配置环境变量,后面需要用到)

地址:https://sourceforge.net/projects/tesseract-ocr/ 

下载并安装jTessBoxEditor(用于纠正)

地址:http://vietocr.sourceforge.net/training.html 

集合

https://github.com/tesseract-ocr/tesseract/wiki/AddOns 

准备工作

1、准备要识别的典型图片用作测试图片,将图片转为tif格式的(在线转换地址,还可以用自带的画图打开,选择另存为tif)
2、用jTessBoxEditor把所有的测试图片合成一张 (打开jTessBoxEditor.jar,然后点菜单上的Tool->Merge TIFF)

生成识别字典

1、在合成的tif文件夹打开cmd进入 why4.tif 所在的目录,生成对应的 .box 文件输入以下命令(why为合成的tif)

tesseract why.tif  why4 batch.nochop makebox  

2、用 jTessBoxEditor来调整识别文字的位置、结果。

用 jTessBoxEditor打开生成的图片集why4.tif ,注意 why4.tif 对应的box文件一定要和他处于同一个文件夹下(请保持文件名),否则,用jTessBoxEditor打开没有 位置、识别结果等信息,然后就可以调整了,调整完之后保存 浅谈验证码识别,并训练pytesseract提高识别率 3、生成.tr文件

tesseract why4.tif  why4   nobatch box.train  

4、计算字符集,从生成的 box文件中提取

unicharset_extractor why4.box  

5、生成字体特征文件,现在文件夹下新建文件名为“"font_properties.txt"” 特征文件内容为:

why4 0 0 0 0 0 

6、输入命令

mftraining -F font_properties.txt -U unicharset why4.tr 

7、聚集tesseract 识别的训练文件

cntraining why4.tr 

执行完这一步之后发现文件夹下生产了许多文件,把unicharset, inttemp, normproto, pffmtable, shapetable这几个文件加上前缀 why4.

8、最后一步,合并相关文件,生成字典文件

combine_tessdata why4. 

9、好了,至此字典文件就生产了,我们把生成的字典文件why4.traineddata放入到 tesseract_ocr 根目录下的 tessdata文件夹

10、修改识别语言包

code = pytesseract.image_to_string(img,lang='why') 

参考

https://blog.csdn.net/zhanghaiming012/article/details/80522992 https://www.jianshu.com/p/6633a7a85add

来源:http://www.safe6.cn/

本文由 safe6 创作,著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

浅谈验证码识别,并训练pytesseract提高识别率

本站的所有程序和文章,仅限用于学习和研究目的;不得用于商业或者非法用途,否则,一切后果请用户自负!! 最后编辑时间为: 2019-09-06

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: