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

/ 实用技巧 / 0 条评论 / 5103 浏览

本站的所有程序和文章,仅限用于学习和研究目的;不得用于商业或者非法用途,否则,一切后果请用户自负!!

前言

最近在写织梦的验证码识别遇到的小问题,用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打开没有 位置、识别结果等信息,然后就可以调整了,调整完之后保存 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

本文最后编辑时间为: 2019-09-06

如本文对你有帮助,点击下面广告支持一下吧,创作不易,感谢大佬。

safe6