图像⽂字识别(三):Tesseract4.0训练字库,提⾼正确识别
率
由于tesseract的中⽂语⾔包“chi_sim”对中⽂⼿写字体或者环境⽐较复杂的图⽚,识别正确率不⾼,因此需要针对特定情况⽤⾃⼰的样本进⾏训练,提⾼识别率,通过训练,也可以形成⾃⼰的语⾔库。
步骤:
1、⼯具准备:
(2)Java虚拟机,由于jTessBoxEditor的运⾏依赖Java运⾏时环境,所以需要安装Java虚拟机。
(3)jTessBoxEditor2.0⼯具,⽤于调整图⽚上⽂字的内容和位置,
安装包解压后双击⾥边的“jTessBoxEditor.jar”,或者双击该⽬录下的“train.bat”脚本⽂件,就可以打开该⼯具了。
2、样本图⽚准备:(进⾏训练的样本图⽚数量越多越好)
这⾥只准备2种不同字体样本进⾏测试:
3、使⽤jTessBoxEditor⽣成训练样本的的合并tif图⽚:
(1)打开jTessBoxEditor,选择Tools->Merge TIFF,进⼊训练样本所在⽂件夹,选中要参与训练的样本图⽚:
(2)点击 “打开” 后弹出保存对话框,选择保存在当前路径下,⽂件命名为 “p0.tif” ,格式只有⼀种 “TIFF” 可选。
tif⽂⾯命名格式[lang].[fontname].exp[num].tif
lang是语⾔,fontname是字体,num为⾃定义数字。
⽐如我们要训练⾃定义字库 zwp,字体名test,那么我们把图⽚⽂件命名为 p0.tif
4、使⽤tesseract⽣成.box⽂件:
在上⼀步骤⽣成的“p0.tif”⽂件所在⽬录下打开命令⾏程序,执⾏下⾯命令,执⾏完之后会⽣成p0.box⽂件。
5、使⽤jTessBoxEditor矫正.box⽂件的错误:
.box⽂件记录了每个字符在图⽚上的位置和识别出的内容,训练前需要使⽤jTessBoxEditor调整字符的位置和内容。
打开jTessBoxEditor点击Box Editor ->Open,打开步骤2中⽣成的“p0.tif”,会⾃动关联到“p0.box”⽂件,这两⽂件要求在同⼀⽬录下。调整完点击“save”保存修改。
st.exp0.st.exp0 -l chi_sim -psm hop makebox
6、⽣成font_properties⽂件:(该⽂件没有后缀名)
(1)执⾏命令,执⾏完之后,会在当前⽬录⽣成font_properties⽂件
(2)也可以⼿⼯新建⼀个名为font_properties的⽂本⽂件,输⼊内容 “test 0 0 0 0 0” 表⽰字体test的粗体、倾斜等共计5个属性。这⾥的“test”必须与“p0.box”中的“test”名称⼀致。
7、使⽤tesseract⽣成.tr训练⽂件:
执⾏下⾯命令,执⾏完之后,会在当前⽬录⽣成p0.tr⽂件。
8、⽣成字符集⽂件:
执⾏下⾯命令:执⾏完之后会在当前⽬录⽣成⼀个名为“unicharset”的⽂件。
echo test 0 0 0 0 0 >font_properties
st.exp0.st.exp0 ain
unicharset_st.exp0.box
9、⽣成shape⽂件:
执⾏下⾯命令,执⾏完之后,会⽣成 shapetable 和 zwp.unicharset 两个⽂件。
10、⽣成聚字符特征⽂件:
执⾏下⾯命令,会⽣成 inttemp、pffmtable、shapetable和zwp.unicharset四个⽂件。
11、⽣成字符正常化特征⽂件:
执⾏下⾯命令,会⽣成 normproto ⽂件。
shapeclustering -F font_properties -U unicharset -O zwp.
mftraining -F font_properties -U unicharset -O zwp.
12、⽂件重命名:
重新命名inttemp、pffmtable、shapetable和normproto这四个⽂件的名字为[lang].xxx。
这⾥修改为zwp.inttemp、zwp.pffmtable、zwp.shapetable和proto
执⾏下⾯命令:
1rename proto
2rename inttemp zwp.inttemp
3rename pffmtable zwp.pffmtable
4rename shapetable zwp.shapetable
13、合并训练⽂件:
执⾏下⾯命令,会⽣成aineddata⽂件。
combine_tessdata zwp.
Log输出中的Offset 1、3、4、5、13这些项不是-1,表⽰新的语⾔包⽣成成功。
将⽣成的“aineddata”语⾔包⽂件复制到Tesseract-OCR 安装⽬录下的tessdata⽂件夹中,就可以使⽤训练⽣成的语⾔包进⾏图像⽂字识别了。手写字体
14、测试:
输⼊下⾯命令,-l后⾯为训练⽣成的语⾔包。
tesseract test.PNG test -l zwp
使⽤新训练的语⾔包进⾏⽂字识别后,会发现之前识别不出来的⽂字也可以识别出来了。
附:最终所有的⽣成⽂件:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论