首先,本地环境: Ubuntu 16.40 + Tesseract-ocr + jTessBoxEditor 1.7.3
(具体的环境搭建在之前都有介绍,此处不再赘述。)
这里详细介绍使用图片文件作为输入的训练方法。比如我的训练素材是十张带字体格式的数字图片,最后我经过训练得到的语言库为: num1.tessdata
准备好用作训练素材的图片:
跳转到 jTessBoxEditor 的安装目录,打开 jTessBoxEditor 客户端:
cd /your/path/jTessBoxEditor-1.7.3 java -Xms128m -Xmx1024m -jar jTessBoxEditor.jar
由素材图片生成 ~.tif 文件; 即 图片素材 –> .tif
a) Tools -> Merge TIFFb) 弹出对话框:Select Input Images
c) 弹出对话框:Save Multi-page TIFF Image
D)此步成功会在保存路径中生成 ~.tif 文件,在这里就是 num1.invoicenum.exp0.tif
由 .tif 文件 -> .box 文件
两种方式:jTessBoxEditor 和 命令行。
a) jTessBoxEditorb) 命令行输入:
tesseract num1.invoicenum.exp0.tif num1.invoicenum.exp0 batch.nochop makebox
// 此步执行成功会生成 ~.box 文件,在这里就是 num1.invoicenum.exp0.box
修正 Box 文件
// 以后的操作都可以选择 jTessBoxEditor 或者 命令行 来操作,这里选择的是 命令行:
由 .box 文件 -> .tr
tesseract num1.invoicenum.exp0.tif num1.invoicenum.exp0 box.train.stderr
由 .box 文件 -> unicharset
unicharset_extractor num1.invoicenum.exp0.box
生成 font_properties // 本质是 ~.txt 文件,但是不带后缀
echo invoicenum 0 1 1 0 1 >font_properties
由 font_properties, unicharset, .tr -> shapetable
shapeclustering -F font_properties -U unicharset num1.invoicenum.exp0.tr
由 font_properties, unicharset, .tr ->lang.unicharset, inttemp, pffmtable
mftraining -F font_properties -U unicharset -O num1.unicharset num1.invoicenum.exp0.tr
由.tr 文件 -> normproto
cntraining num1.invoicenum.exp0.tr
重命名 以 lang. 开头重命名 inttemp, normproto, pffmtable, shapetable
mv inttemp num1.inttemp mv normproto num1.normproto mv pffmtable num1.pffmtable mv shapetable num1.shapetable
// 重命名后有
合并生成 lang.traineddata文件,在这里为 num1.traineddata
combine_tessdata num1.
将生成的lang.traineddata 文件拷贝到系统中 ~/tessdata/目录下.
如我的tessdata目录为: /usr/local/share/tessdata/sudo cp /your/path/num1.traineddata /usr/local/share/tessdata/
测试
要识别的图片:
a) 使用自带的语言库 eng.traineddata 识别结果:
b) 使用刚才训练得到的库 num1.tessdata 识别结果:
End