记录一下对这一篇文章的学习过程。https://blog.csdn.net/qq_38190041/article/details/102931415
1、下载 jTessBoxEditorFX。(https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/)
2、制作2个简单的汉字图片。用Photoshop转成16位。
第一个文件,chr1.tif
试试直接识别成什么,输入命令: tesseract chr1.tif outtxt -l chi_sim,得到结果:
我 仇 要 有 充 分
如果没有显示 page1,就说明没有正常执行。比如识别jpg格式的文件:
得到的结果是:
这 秦 非 E 式 发 禹
第二个文件,chr2.tif
试一下直接识别,输入命令: tesseract chr1.tif outtxt -l chi_sim,得到结果:
十 五 年 断
下面开始生成训练文件。
3、用 jTessBoxEditorFX 把这两个图片合并为一个tif文件。具体按照上一篇的操作。
生成 chr.font.exp0.tif。要注意文件名格式,[lang].[fontname].exp[num].tif ,lang和fontname、num自己定义。
4、生成box文件。
命令行:tesseract chr.font.exp0.tif chr.font.exp0 -l chi_sim batch.nochop makebox
如果不加参数 -l chi_sim,则生成的box文件中没有汉字,后面用 jTessBoxEditorFX 编辑box文件的时候,在左侧的编辑框中,没有汉字。
5、用 jTessBoxEditorFX ,boxEditor——open,打开 chr.font.exp0.tif 对应图像编辑box文件内容,调整每个汉字及字符对应的图块位置。
前面包含进来了2个图片,所以这里分为2个页面,每个页面都要编辑。
6、定义字体特征文件。
创建一个名称为font_properties的字体特征文件。font_properties不含有BOM头,文件内容格式如下:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。
这里在样本图片所在目录下创建一个名称为font_properties的文件,用记事本打开,输入以下下内容:
font 0 0 0 0 0
这里全取值为0,表示字体不是粗体、斜体等等。
7、制作批处理文件 dochr.bat
echo Run Tesseract for Training..
tesseract.exe chr.font.exp0.tif chr.font.exp0 nobatch box.train
echo Compute the Character Set..
unicharset_extractor.exe chr.font.exp0.box
mftraining -F font_properties -U unicharset -O chr.unicharset chr.font.exp0.tr
echo Clustering..
cntraining.exe chr.font.exp0.tr
echo Rename Files..
rename normproto chr.normproto
rename inttemp chr.inttemp
rename pffmtable chr.pffmtable
rename shapetable chr.shapetable
echo Create Tessdata..
combine_tessdata.exe chr.
echo. & pause
8、将生成的“chr.traineddata”语言包文件复制到Tesseract-OCR 安装目录下的tessdata文件夹中
9、测试
tesseract chr2.tif outtxt -l chr
输出:十五年前