根据这两篇:
https://www.cnblogs.com/cnlian/p/5765871.html
https://blog.csdn.net/sylsjane/article/details/83751297
1、先准备训练图形。
用photoshop建立6个图像文件用于训练。颜色模式,我用32位,后面生成box文件会失败。用16位就行。
创建的6个tif图像文件:
2、下载训练工具 jTessBoxEditor :https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
解压缩。由于这是一个java开发的工具,需要jre环境。运行批处理文件 train.bat,如果不能运行,需要先装上jre。
运行批处理文件 train.bat,出现了jTessBoxEditor界面。
运行菜单: tools——merge tiff
选中上面生成的6个tif文件并点击打开:
保存为同文件夹中文件名:num.font.exp0.tif
3、然后命令行,进入上面文件夹,运行:
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
生成文件: num.font.exp0.box
4、本文件夹内新建一个文本文件:font_properties,内容为:
font 0 0 0 0 0
注:【语法】:
fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用。
5、打开 jTessBoxEditor,BOX Editor -> Open,打开num.font.exp0.tif,进行数字矫正。
这个7被识别为1,修改一下。
以及9被识别为4,都要修改。
一共6页,每页都要修改。
完成后保存
6、生成box文件:
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
注:Make Box File 文件名有一定的格式,不能随便乱取名字,命令格式为:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。
生成了box文件: num.font.exp0.box
7、生成训练文件
制作一个批处理文件 do.bat
echo Compute the Character Set..
unicharset_extractor.exe num_all2.box
mftraining -F font_properties -U unicharset -O num.unicharset num_all2.tr
echo Clustering..
cntraining.exe num_all2.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.
echo. & pause
运行,生成文件 num.traineddata,把这个文件复制到Tesseract-OCR安装文件夹的:\tessdata 文件夹中
8、测试一下
首先试一下不用训练数据的准确度:
tesseract num_1.tif output_1 -l eng
输出:1234561840
然后使用训练数据:
tesseract num_1.tif output_1 -l num
输出:1234567890
可以看到准确率提高了。