使⽤tesseract训练⾃⼰的字库提⾼识别率
问题描述:想使⽤tesseract识别中⽂,但是发现有⼀个字tesseract⾃带的库会识别错误或者不识别。⽐如下图的左图,其结果
是“肇”变成“告”,明显是识别错了。但是如果将“肇”单独去识别,会发现根本识别不出,结果的txt⽂本上会是空⽂件。所以推断在tesseract⾃带的中⽂库中是没有训练“肇”这个字的。现在我的⽬的是训练⼀个中⽂识别库,希望能够识别这个“肇”字。
图1:待识别的图⽚
图2:结果
⼀准备阶段
训练⼀个⾃⼰的库,需要以下⼯具:
properties文件用什么打开
1. tesseract:。注意尽量还是不要下载带dev,alpha,beta等,不稳定,可能是测试版本。⽐如说你是64位windows系统,可以下
载  tesseract-ocr-w64-setup-v5.0.。。
2. java的JDK:因为编辑训练集的⼯具是java开发的,运⾏该⼯具需要java环境。。。
3. jTessBoxEditor:。这个下载的是不需要安装的,如果你JDK安装没错的话点击train.bat⽂件就可以启动了。
⼆训练阶段
1. 配置环境:按照第⼀阶段的所写操作来即可。
2. 准备训练数据:根据⾃⼰识别的场景,提供训练数据。这⾥是⼀个⼩实验,所以就训练上⾯图1的数据了。
3. 将训练数据打包成⼀个tif:如果你的数据不⽌⼀个tif你可以使⽤jTessBoxEditor⼯具合并成⼀个tif⽂件。因为我这⾥只有⼀个图⽚,
所以就不需要打包成⼀个⽂件了,图⽚的名字有⼀定命名要求的,⽐如可以p0.tif,我这⾥命名的是
4. 将训练数据⽣成box格式:
如果你训练的是数字或者是英⽂字库,可以使⽤如下语法
【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] hop makebox
【语法】:lang为语⾔名称,fontname为字体名称,num为序号;在tesseract中,⼀定要注意格式
⽐如训练数字,可以使⽤如下命令:
enable英文tesseract p0.tif hop makebox
训练中⽂,可以使⽤如下命令:注意-l是英⽂字母l,不是数字1。
al.exp0.al.exp0 -l chi_hop makebox
5. ⽤jTessBoxEditor打开tif⽂件,然后根据实际情况修改box⽂件。如下图,这提⽰⼀下,⼤家都应该会操作了。注意如果你有很多数
据,它可能会分页,需要你逐页调整。
图3:校正数据集
6. 产⽣字符特征⽂件,⽣成.tr⽂件。命令如下:
al.exp0.al.exp0 ain
图4:⽣成.tr
7. 计算字符集,⽣成⼀个unicharset⽂件。命令如下:
unicharset_al.exp0.box
图5:⽣成unicharset⽂件
select多选嵌套checkbox
8. 定义字体特征⽂件,新建⼀个font_properties⽂件。注意,⽂件的名字就是font_properties,它没有.txt后缀。⾥⾯内容写⼊
bootstrap背景颜normal 0 0 0 0 0
thead标签什么意思表⽰默认普通字体。注意这⾥的normal要和p0.tif中的normal⼀样。
三角函数和角公式
标题
9. 聚集字符特征,运⾏如下命令:
shapeclustering -F font_properties -U
mftraining -F font_properties -U unicharset -O
运⾏完上⾯的那些命令后,会有如下五个⽂件:
在这五个⽂件前加上normal.(这的normal.也应该和p0.tif中的normal⼀样)进⾏重命名,最后会变成如下样⼦:
0. 合并五个⽂件,执⾏如下命令,会⽣成⽬标⽂件aineddata,该⽂件就是训练好的字库。将它复制到你安装的Tesseract程
序⽬录下的“tessdata”⽬录下即可。
combine_tessdata normal.
三验证阶段
执⾏命令如下:
tesseract test.png testT1 –l normal
左边是待识别的图⽚,中间是tesseract⾃带中⽂识别库识别的结果,右边⾃⼰训练的库识别的结果。
其他问题的⼀些总结:
1.执⾏⽣成box⽂件时,出现empty page!!时,可以尝试使⽤--psm 10等参数。详情可以通过运⾏tesseract --help。不过需要注意,当使⽤--psm等参数时,在后续的⽣成.tr⽂件时也需要使⽤--psm参数⼀起执⾏。
2.在多次训练中出现了“other case a of A is not in unicharset”的错误,⽬前来说还不清楚是什么原因。
3.这个写的⽐较详细,可以看看。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。