这两天在写识别身份证信息,发现tesseract-ocr识别字库中的中文chi_sim识别字体仍然有乱码出现,识别率不是很高,所以各种百度找准确率高的字库,结果就是自己创造,下面就说步骤,很简单哦,大家直接按照步骤完成就好啦!
第一步:找到jTessBoxEditor压缩包,解压到你想放到的路径,这里提供的版本为2.2.0版本
注意:这里也必须你的电脑上要有jre,而且版本必须为1.8.0以上
第二步:首先准备一张地址图片,放在自定义的文件夹下,命名为address.normal.exp0.jpg,并且复制一份命名为address.normal.exp0.tif
说明:1、 .jpg命名要与.tif命名相同,不然一会识别tif文件识别不出来
2、 .tif命名格式是有规定的:
[lang].[fontname].exp[num].tif
lang是语言 fontname是字体
例如:训练自定义库名为address
字体名为normal
所以将address.normal.exp0.jpg重命名为.tif。
第三步:生成box文件,执行命令
tesseract address.normal.exp0.jpg address.normal.exp0 -l chi_sim batch.nochop makebox
执行成功,我们用记事本看一下box文件,发现是乱七八糟的
说明:box文件一定要与tif文件放在同一个文件夹下
第四步:接下来就要用jTessBoxEditor进行纠错训练,打开jTessBoxEditor文件下的train.bat
选择Box Editor->open,打开address.normal.exp0.tif文件
注意:下图的内容是我操作完的,未操作的图片其实就是左侧的char为识别出来的乱码,大 家在红框地方进行操作就可以得到正确的结果
操作完成后,点击save保存box文件
第五步:用echo命令创建字体特征文件
echo address 0 0 0 0 0>font_properties
执行完成之后,在当前文件夹下生成font_properties文件
第六步:用tesseract生成.tr训练文件
tesseract address.normal.exp0.tif address.normal.exp0 nobatch box.train
成功后看到:
第七步:生成字符集文件
unicharset_extractor address.normal.exp0.box
第八步:生成数据字典
mftraining -F font_properties -U unicharset -O address.unicharset address.normal.exp0.tr
cntraining address.normal.exp0.tr
执行后,会生成四个文件:inttemp、pffmtable、normproto、shapetable
这里需要手动修改成为:address.inttemp、address.pffmtable、address.normproto、address.shapetable
第九步:合并数据文件,生成字库文件
combine_tessdata address.
成功后会在当前文件夹下生成address.traineddata文件,这个语言就是跟我们下载的官方字库一样,例如eng,chi_sim一样,不过这个字库专门用于识别纠正图片中那种数字字体。
我们把这个字库address放到tesseract-ocr的tessdata目录下C:\Program Files (x86)\Tesseract-OCR\tessdata
第十步:测试结果,完全的将文字正确的识别出来了