1. 功能介绍

利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高验证码识别需求是对某个网站的验证码进行样本训练,形成自己的语言库,来提高验证码识别率。

2. 环境准备

关于tesseract样本训练有一个官方流程说明, https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract#run-tesseract-for-training 

具体的方法有两种: 1-利用三方工具,2-完全命令行操作, 三方工具主要在 https://github.com/tesseract-ocr/tesseract/wiki/AddOns 下载,本文将用到 jTessBoxEditor 这个工具,下载地址为https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-1.5.zip/download?use_mirror=jaist&download=&failedmirror=tenet.dl.sourceforge.net

3. 数据准备

使用抓取程序抓取验证码,放在E:\workspace\ocr\images\test目录下,分别按顺序命名为0.jpg,1.jpg,---,10000.jpg,如,

该验证码有几个特点:a、定长4位,b、都是数字,c、有背景干扰,但比较简单,d、字体颜色不确定,e、有粘连。

为了提高识别率,首先做了一个工作就是灰度化处理 如,并全部转换成tif文件,分别命名成:0.tif,1.tif,2.tif,……,10001.tif,统一存放在E:\workspace\ocr\images\tif下。

4. 利用jTessBoxEditor进行模型训练

4.1 训练步骤

4.1.1      运行程序

运行以下命令:

java-Xms128m -Xmx1024m -jar jTessBoxEditor.jar

4.1.2      合并样本图片

在打开的jtessboxeditor界面中,点击Tools->Merge Tiff ,如图:

按住shift键选择前文准备好的tif文件,并把生成的tif合并到新目录E:\workspace\ocr\images\tif\new2下,命名为langyp.fontyp.exp0.tif。

注意: langyp 是定义的语言名称, fontyp是定义的字体名称,后续都会用到,可以随意修名字 。

4.1.3      生成box文件

执行命令生成 langyp.fontyp.exp0.box 文件

tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0-l eng -psm 7 batch.nochop makebox

 

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  14:37   <DIR>          .

2017-05-10  14:37   <DIR>          ..

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

               2 个文件        132,383 字节

               2 个目录24,869,994,496 可用字节

4.1.4      修改box文件

切换到jTessBoxEditor工具的Box Editor页,点击open,打开前面的tiff文件langyp.fontyp.exp0.tif,工具会自动加载对应的box文件。

检查box数据,如下图所示是已经修改好的情况,如果数字被误认则手工修改,并保存。

点击下图红色框的按钮,逐个核对tif文件的box数据,全部检查结束并保存。

如上图:圈中的部分1为打开tif文件,2可以合并左边的行,3可以插入行,4可以删除行,5修改每行的数据,使得圈中识别的数字,character是识别的字符,X是起始横轴坐标,Y是起始纵轴坐标,W是宽度,H是高度

4.1.5      生成font_properties

执行echo命令生成font_properties。

echofontyp 0 0 0 0 0 >font_properties

也可以手工新建一个名为font_properties的文本文件(注意该文件没有扩展名),内容为字体名fontyp,后面带5个0,分别代表字体的粗体、斜体等属性,这里全部是0

4.1.6      生成训练文件

执行命令,生成langyp.fontyp.exp0.tr训练文件

tesseractlangyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng -psm 7 nobatch box.train

 E:\workspace\ocr\images\tif\new2 的目录

2017-05-10  16:34   <DIR>          .

2017-05-10  16:34   <DIR>          ..

2017-05-10  16:05                16 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  16:20           618,844 langyp.fontyp.exp0.tr

2017-05-10  16:20               202 langyp.fontyp.exp0.txt

               5 个文件        751,445 字节

               2 个目录24,869,101,568 可用字节

4.1.7      生成字符集文件

执行命令,生成名为unicharset的字符集文件。

unicharset_extractorlangyp.fontyp.exp0.box

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  16:41   <DIR>          .

2017-05-10  16:41   <DIR>          ..

2017-05-10  16:05                16 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  16:20           618,844 langyp.fontyp.exp0.tr

2017-05-10  16:20               202 langyp.fontyp.exp0.txt

2017-05-10  16:41               712 unicharset

               6 个文件        752,157 字节

               2 个目录24,869,171,200 可用字节

4.1.8      生成shape文件

执行命令,生成shape文件

shapeclustering-F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  17:24   <DIR>          .

2017-05-10  17:24   <DIR>          ..

2017-05-10  17:20                19 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  17:23           618,844 langyp.fontyp.exp0.tr

2017-05-10  17:23               202 langyp.fontyp.exp0.txt

2017-05-10  17:24               723 langyp.unicharset

2017-05-10  17:24               202 shapetable

2017-05-10  17:24               712 unicharset

               8 个文件        753,085 字节

               2 个目录24,868,278,272 可用字节

4.1.9      生成聚集字符特征文件

执行命令,生成3个特征字符文件,unicharset、inttemp、pffmtable

mftraining-F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

4.1.10   生成字符正常化特征文件

执行命令,生成正常化特征文件normproto。

cntraininglangyp.fontyp.exp0.tr

4.1.11   更名

执行命令,把步骤9,步骤10生成的特征文件进行更名。

renamenormproto fontyp.normproto 

renameinttemp fontyp.inttemp 

renamepffmtable fontyp.pffmtable 

renameunicharset fontyp.unicharset 

renameshapetable fontyp.shapetable

4.1.12   合并训练文件

执行命令,生成fontyp.traineddata文件。

combine_tessdatafontyp.

注意:

a、fontyp.traineddata文件最终要拷贝tesseract安装目录的tessdata目录下,才能被tesseract找到。

b、命令行最后必须带一个点。

c、执行结果中,1,3,4,5,13这几行必须有数值,才代表命令执行成功。

4.1.13   fontyp.traineddata拷贝

复制fontyp.traineddata到tesseract的安装目录的tessdata子目录下安装子目录C:\Program Files(x86)\Tesseract-OCR\tessdata,如下:

4.1.14   测试使用

使用命令重新验证码识别:

tesseract 1.jpg result -l fontyp-psm 7

4.2 总结

 jtessboxeditor 工具其实是一个基本成型的三方样本训练工具,它的功能就是自动执行上述脚本命令,但是在实际使用中,还存在不够完善的地方,譬如不能加psm参数,生成shape时经常程序异常崩溃,所以本文操作还是以命令行为主。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐