提高Tesseract-OCR验证码识别率

Tesseract-OCR训练自己需要的语言

在正常使用Tesseract-OCR的默认eng去识别复杂的验证码失败率很高,这时候就需要自己训练出自己需要的语言来提高识别成功率。如何训练呢?

训练提高识别率

jTessBoxEditor:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,上下载jTessBoxEditor训练工具,训练工具是java写的,所以需要你电脑上有java环境变量(什么,如何装?妈耶,不会吧不会吧!不会有人不会装java环境变量吧!不会那个人就是你吧!百度呀,兄嘚)不多说了。
1、 下载好jTessBoxEditor.zip之后解压如下。

提高Tesseract-OCR验证码识别率
2、 双击运行jTessBoxEditor.jar,tools–>Merge TIFF
提高Tesseract-OCR验证码识别率
3、 选择图片,选好后点击打开
提高Tesseract-OCR验证码识别率
4、 然后名字命名为:num.font.exp0.tif,点击保存
提高Tesseract-OCR验证码识别率
5、 点击确定,会发现多一个文件
提高Tesseract-OCR验证码识别率
提高Tesseract-OCR验证码识别率
6、 将num.font.exp0.tif拷贝到C:\Program Files (x86)\Tesseract-OCR安装位置
提高Tesseract-OCR验证码识别率
7、 打开cmd 运行 tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox
生成的box文件为num.font.exp0.box,box文件为Tesseract识别出的字符及其坐标。
注:Make Box File 文件名有一定的格式,不能随便乱取名字,命令格式为:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。

将生成的.box和.tif样本文件放在同一目录。我是放在Tesseract-OCR默认安装目录下。

提高Tesseract-OCR验证码识别率
提高Tesseract-OCR验证码识别率
8、 运行jTessBoxEditor工具,点击Box Editor。然后点击open
提高Tesseract-OCR验证码识别率
9、 选择之前生成的num.font.exp0.tif,点击打开。
提高Tesseract-OCR验证码识别率
10、 有些字符识别的位置不准确,可以通过该工具手动对每张图片中识别错误的字符和位置进行校正。校正完成后保存即可。

注: 这里必须修改识别错误的字符,否则做出来的traineddata文件也是错的。可以在下面的界面中修改并保存,也可以直接在traineddata文件中修改。

提高Tesseract-OCR验证码识别率
Box View,可以让框中的位置更精确,x,y,w,h四个来调整识别的位置。Insert插入按钮,Delete删除某个按钮。
底部是下一张图片,上一张图片。具体情况将会公之于众。
[En]

At the bottom is the next picture, the previous picture. The details will be known.

11、 定义字体特征文件。创建一个名称为font_properties的字体特征文件
font 0 0 0 0 0
这里全取值为0,表示字体不是粗体、斜体等等。

提高Tesseract-OCR验证码识别率

12、 生成语言文件。在样本图片所在目录下创建一个批处理文件,输入如下内容:
内容如下

rem 执行改批处理前先要目录下创建font_properties文件

echo Run Tesseract for Training..

tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

echo Compute the Character Set..

unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr

echo Clustering..

cntraining.exe num.font.exp0.tr

echo Rename Files..

rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..

combine_tessdata.exe num.

提高Tesseract-OCR验证码识别率

执行批处理脚本。双击运行num.bat

提高Tesseract-OCR验证码识别率
把num.traineddata移动到 C:\Program Files (x86)\Tesseract-OCR\tessdata目录下
提高Tesseract-OCR验证码识别率
在这一点上,可以使用您训练的语言。
[En]

At this point, the language you train can be used.

使用效果

将代码中的语言更改为您自己的培训语言。

[En]

Change the language in the code to your own training language.

提高Tesseract-OCR验证码识别率

没训练之前的样子

提高Tesseract-OCR验证码识别率
提高Tesseract-OCR验证码识别率
训练之后的效果
提高Tesseract-OCR验证码识别率
提高Tesseract-OCR验证码识别率

Original: https://blog.csdn.net/qq_39095899/article/details/120302439
Author: qq_39095899
Title: 提高Tesseract-OCR验证码识别率

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/498493/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球