图像识别学习记录——通过训练提高数字识别的准确率

根据这两篇:

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>  

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

可以看到准确率提高了。

猜你喜欢

转载自blog.csdn.net/bq_cui/article/details/108504135
今日推荐