对于图片的识别我们首先要进行图片的处理(包括滤波,去噪等),处理过的图片可以显著增加识别的正确率。
第一步首先下载tesseract-ocr3.02 。
第二步是下载JTessBoxEditor,因为这个组件是java开发的所以我们要装java的运行环境(其中注意如果是压缩的图片,JTessBoxEditor不能合并)。
第三步开始词库的训练
1.合并图片(图片必须为tif格式的,图片转换器ImageMagick,可以在网上下载)
用JTessBoxEditor合并多张tif图片合并为chm.test.exp0.tif。图片命名规则如[lang].[fontname].exp[num].tif,其中[]中是变量,里面的内容可以任意写。但是下面生成的文件也要是这种格式。
2.开始生成box文件,其命令语句如下所示(其中-l是小写的L,表示语言,-psm 7 表示的是将整张图片视为一行文本来读,如果是单个词可以用-psm 8表示。。。)
3 使用JTessBoxEditor来编辑box文件 如下图所示,编辑后保存。
4创建一个font_properties,这个文件是用来描述字体的属性的。该文件可以是无格式的或者txt格式的。该文件内容如下
test 0 0 0 0 0
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
其对应关系如上,test表示是我们自己训练的语言的名字 其他的数字表示字体的属性。
5开始训练词库
如果出现上图所示的情况说明训练成功,生成chm.test.exp0.tr(字符特征集文件)成功。
6计算字符集,生成字符集(unicharset)文件
这一步生成了unicharset文件。
7聚集字符特征(inttemp、pffmtable)
此时产生的Warning是说当前没有shapeTable,对我们的运行没有影响,这一步会产生一个shapeTable.
8产生字符形状正常化特征文件normproto。
更改生成的normproto、inttemp、pffmtable、unicharset、shapetable这些文件的名称,将它们命名为test.normproto、test.inttemp、test.pffmtable、test.unicharset、test.shapetable(网上很多资料上面对shapetable没有重命名,会出现一个异常)。
命令行窗口会出现如下的情况。
index >= 0 && index < size_used_:Error:Assert failed:in file c:\usr\projects\bui
ldfolder\tesseract-ocr\ccutil\genericvector.h, line 512
9生成训练字库文件
当地1、3、4、5、13不为-1的时候说明训练库生成成功。
10 测试