使用开源的tessnet-orc识别验证码——训练篇

转自:http://blog.sina.com.cn/s/blog_5c9288aa0101g0r0.html

使用开源的tessnet-orc识别验证码

 

准备篇

1.       下载最新的tesseract安装文件,博主下载时版本号是3.02https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe&can=2&q=

2.       下载工具jTessBoxEditor. http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,此工具用于生成tiff图片以及修改box文件,这是后话。

3.        

 

样本训练

 

1.  1.     下载工具jTessBoxEditor. http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,这个工具是用来训练样本用的,由于该工具是用JAVA开发的,需要安装JAVA虚拟机才能运行。

2.   2.   获取样本图像。获取用来训练的样本图像,注意一定要处理成白底黑字的灰度图,如图所示使用开源的tessnet-orc识别验证码——训练篇_第1张图片


3.     3. 合并样本图像。运行jTessBoxEditor工具,在点击菜单栏中Tools--->Merge TIFF。在弹出的对话框中选择样本图像(按Shift选择多张),合并成LAN.new.exp0.tif文件。(注意此处命名格式一定要为[lang].[fontname].exp[num].tif其中lang为语言名称,fontname为字体名称,num为序号ps:博主之前想当然clear0.tifclear1.tif结果在mftraining 步骤死活过不去了,sigh使用开源的tessnet-orc识别验证码——训练篇_第2张图片



 

4.     4.生成Box File文件。打开命令行,执行命令:

tesseract.exe LAN.new.exp0.tif LAN.new.exp0 -l eng batch.nochop makebox

该命令为tif图像生成一个LAN.new.exp0.box 的文件,内容为各字符及其边框坐标,需要注意的是,此坐标的起点为图片左下角,即左下角为X:0  Y:0

3.01这德行

 使用开源的tessnet-orc识别验证码——训练篇_第3张图片

3.02这德行

使用开源的tessnet-orc识别验证码——训练篇_第4张图片

 

5.   5.   文字校正。此时的Box文件有可能存在识别错误以及字符分割错误,运行jTessBoxEditor工具,打开num.font.exp0.tif文件(必须将上一步生成的.box.tif样本文件放在同一目录),如下图所示。可以看出有些字符识别的不正确,可以通过该工具手动对每张图片中识别错误的字符进行校正。校正完成后保存即可

使用开源的tessnet-orc识别验证码——训练篇_第5张图片


 

6.      6. 定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。font_properties含有BOM,文件内容格式如下:

其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致    的取值为10,表示字体是否具有这些属性。注意每一行对应一个训练文件,即如果有20个训练样本,font_properties里必须有20行!

7.     7. 把修改好的box文件保存,用以下命令为每个box文件生成tr文件

tesseract LAN.new.exp0.tif LAN.new.exp0 nobatch box.train

 

 使用开源的tessnet-orc识别验证码——训练篇_第6张图片


8.      8. unicharset_extractor程序命令行汇总这些box文件生成计算字符集unicharset unicharset_extractor LAN.new.exp0.box …… LAN.new.exp12.box

 

 使用开源的tessnet-orc识别验证码——训练篇_第7张图片

9.     9. 在聚集字符特征之前应该先聚类shape,

shapeclustering.exe –F font_properties  -U unicharset –O LAN.unicharset LAN.new.exp0.tr LAN.new.exp1.tr

博主之前直接用mftraining命令,结果warning:no shape file  https://code.google.com/p/tesseract-ocr/issues/detail?id=626

 使用开源的tessnet-orc识别验证码——训练篇_第8张图片

使用开源的tessnet-orc识别验证码——训练篇_第9张图片

 

 

10.  10聚集字符特征, mftraining生成字符特征文件.unicharsetinttemppffmtable

mftraining -F font_properties -U unicharset -O LAN.unicharset   LAN.new.exp0.tr ……

 

 使用开源的tessnet-orc识别验证码——训练篇_第10张图片

接着用mftraining生成字符形状正常化特征文件normproto

cntraining LAN.new.exp0.tr LAN.new.exp1.tr

使用开源的tessnet-orc识别验证码——训练篇_第11张图片

 

11. 11 合并训练文件

unicharset, inttemp, normproto, pffmtable,shapetable这四个文件加上前缀"LAN."

这里的前缀名就是新训练的语言字库的名字了。

使用开源的tessnet-orc识别验证码——训练篇_第12张图片

 

然后使用命令:"combine_tessdata LAN." (不能少了那个句点)

 

使用开源的tessnet-orc识别验证码——训练篇_第13张图片

需确认打印结果中的Offset 134513这些项不是-1。这样,一个新的语言文件就生成了。

生成一个LAN.traineddata 字典文件,然后把这个文件复制到Tessract的安装目录下一个叫tessdata的文件夹里,就可以使用新的训练字库了

 

 tips:训练图片很多时,可以写成批处理文件的形式,活用EXCEL填充句柄

 


 

 

 

参考资料:

1.       http://www.cnblogs.com/samlin/p/Tesseract-OCR.html

2.       http://www.cnblogs.com/sosoben/p/sosoben-tesseract.html

3.       https://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3#font_properties_(new_in_3.01)

4.       http://jingyan.baidu.com/article/a17d5285273c968098c8f2e5.html

5.         http://www.myexception.cn/vsts/1118613.html


你可能感兴趣的:(使用开源的tessnet-orc识别验证码——训练篇)