tess4j 文字识别
训练
1.下载jTessBoxEditor。
2.准备训练图片,将图片改为TIFF各式。
3.合并TIF文件。
打开jTessBoxEditor,点击Tools->Merge Tiff ,按住shift键选择前文提到的101个tif文件,并把生成的tif合并到新目录下,命名为snlang.sn.exp0.tif。
注意:snlang是本人定义的语言名称,sn是本人定义的字体名称,后续都会用到,你可以修改成你喜欢的名字。
4.生成box文件
【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。
tesseract snlang.sn.exp0.tif snlang.sn.exp0 -l eng -psm 7 batch.nochop makebox
5.修改box文件
切换到jTessBoxEditor工具的Box Editor页,点击open,打开前面的tiff文件snlang.sn.exp0.tif,工具会自动加载对应的box文件。
检查box数据,如下图所示,数字8被误认成字母H,手工修改H成8,并保存。
点击下图红色框的按钮,逐个核对tif文件的box数据,全部检查结束并保存。
6.生成font_properties
执行echo命令生成font_properties。
【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用
echo sn 0 0 0 0 0 >font_properties
也可以手工新建一个名为font_properties的文本文件(注意该文件没有扩展名),内容为字体名sn,后面带5个0,分别代表字体的粗体、斜体等属性,这里全部是0
7.生成训练文件
执行命令,生成snlang.sn.exp0.tr训练文件
tesseract snlang.sn.exp0.tif snlang.sn.exp0 box.train
8.生成字符集文件
执行命令,生成名为unicharset的字符集文件。
unicharset_extractor snlang.sn.exp0.box
9.生成shape文件
执行命令,生成shape文件
shapeclustering -F font_properties -U unicharset -O snlang.unicharset snlang.sn.exp0.tr
10.生成聚集字符特征文件
执行命令,生成3个特征字符文件,unicharset、inttemp、pffmtable
mftraining -F font_properties -U unicharset -O snlang.unicharset snlang.sn.exp0.tr
11生成字符正常化特征文件
执行命令,生成正常化特征文件normproto。
cntraining snlang.sn.exp0.tr
12.更名
rename normproto sn.normproto
rename inttemp sn.inttemp
rename pffmtable sn.pffmtable
rename unicharset sn.unicharset
rename shapetable sn.shapetable
13.合并训练文件
执行命令,生成sn.traineddata文件。
combine_tessdata sn.
注意:
a、sn.traineddata文件最终要拷贝tesseract安装目录的tessdata目录下,才能被tesseract找到。
b、命令行最后必须带一个点。
转载于:https://my.oschina.net/rouway/blog/1549025