本篇是关于 jTessBoxEditor 进行训练,使 Tesseract-OCR
文字识别准确率得到极大的提高,本篇完善了很多细节,初学者也可以看懂,一起学习吧!

Tesseract-OCR-使用 jTessBoxEditor 进行训练

* 训练的大致步骤:
* 安装jTessBoxEditor -> 获取样本文件 -> Merge样本文件 –> 生成BOX文件 -> 定义字符配置文件 -> 字符矫正 ->
执行批处理文件 -> 将生成的traineddata放入tessdata中
1.安装 jTessBoxEditor

* 下载jTessBoxEditor,地址
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
<https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/>
* 解压后得到jTessBoxEditor

* 由于这是由Java开发的,所以我们应该确保在运行jTessBoxEditor前先安装JRE(Java Runtime
Environment,Java运行环境)
* 没有安装 jre 的可以到官网下载安装:

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

<http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html>

* jre 安装就不仔细介绍了,因为能找到这篇的,基本都安装过了,下面介绍 jTessBoxEditor
* 但是呢,这个 jTessBoxEditor ,不用安装,直接解压就可以,单击解压到或者直接拉出来就可以了

2.获取样本文件

* 我们可以用画图工具绘制样本文件,数量越多越好,我自己画了 5 张图作为训练的数据,如图:
* 【注意】:样本图像文件格式必须为tif\tiff格式,否则在Merge样本文件的过程中会出现 Couldn’t Seek 的错误。
* 再转格式嫌麻烦就直接拿走我的:https://pan.baidu.com/s/1hoTkxMVw5z_ve9hzftLOqw
<https://pan.baidu.com/s/1hoTkxMVw5z_ve9hzftLOqw>

3.Merge样本文件

* 在安装目录找到一个【train.bat】打开 jTessBoxEditor >【Tools】>【Merge TIFF】
* 操作截图:

* 将样本文件全部选上,安装 Ctrl 键不松
* 【注意】:这里是没有界面化的提示的,选中后,点击【打开】,立马就是输入合成后的文件名界面,输入num.font.exp0.tif,点击【保存】
* 也就是将合并文件保存为 num.font.exp0.tif

4.生成BOX文件

* 打开 cmd 并切换至 num.font.exp0.tif 所在目录

* 使用 cd 目录名 进入目录
* 使用 cd.. 返回上一级目录
*
输入下面命令,生成文件名为num.font.exp0.box

tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch
.nochop makebox 【语法】:lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式
* 操作截图

如果报错可能是没有进入合并好的 tif 文件目录下,也可能是没有换成自己用的文件名哦
5.定义字符配置文件

* 在文件夹文件夹内,新建一个文本文件,名为font_properties,删掉.txt,用记事本打开,写入内容为:
font 0 0 0 0 0 【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
【语法】:fontname为字体名称,italic为斜体,bold为黑体字, fixed为默认字体,serif为衬线字体,fraktur德文黑字体,
1和0代表有和无,精细区分时可使用
6.准备环节

*
将5个tif文件,num.font.exp0.tif,生成的num.font.exp0.box文件,还有font_properties文件放在同一个目录下
* 目前8个文件,截图:

7.字符矫正

* 打开 jTessBoxEditor>【BOX Editor】> 【Open】,打开num.font.exp0.tif;矫正【Char】上的字符
* 操作截图:

* 【注意】:记得[Page]有好多页哦!修改后记得保存
* 当然有可能生成的 box 文件后,会多一个盒子,它把7识别成了两个
* 处理方式:自己根据看到的数字修改char,如果不是完整字符就敲 空格,然后回车
* 操作截图:

* 然后就是依次处理 5 页
* 最后保存,替换原来的 box 文件

8.执行批处理文件

* 【注意】:执行该批处理文件前,先要目录下创建font_properties文件 ,也就是滴 5 步
* 在目标目录下,新建一个txt文件,复制代码,重命名为 do.bat,直接更改后缀名就可以
* 代码如下 echo Run Tesseract for Training.. tesseract.exe num.font.exp0.tif num
.font.exp0 nobatch box.train echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box mftraining -F font_properties -U
unicharset -O num.unicharset num.font.exp0.tr echo Clustering.. cntraining.exe
num.font.exp0.tr echo Rename Files.. rename normproto num.normproto rename
inttemp num.inttemp rename pffmtable num.pffmtable rename shapetable num
.shapetable echo Create Tessdata.. combine_tessdata.exe num. echo. & pause
* 保存后,双击执行即可,执行后会在文件夹生成很多文件,如下:

9.拷贝 num.trainddata 文件

* 最后将 num.trainddata 复制到 Tesseract-OCR 安装目录下的 tessdata 文件夹
* 【注意】:这里是【Tesseract-OCR 安装目录下的 tessdata 文件夹】

10.大功告成,测试结果

* 这里我是将图片 num1.jpg 放在了:D:\p
* 我们需要在 cmd 进入此目录

* 使用 cd 目录名 进入目录
* 使用 cd.. 返回上一级目录
* 使用 Tesseract 命令:
*
【注意】:语言参数要设置成 num,就是我们刚才拷贝的,没拷贝 num.trainddata 文件不能使用
tesseract 文件名 保存的txt文件名 例:

tesseract num1.jpg num01 -l num

*
操作截图:


* 运行结果:

*
我们可以看到新生成的文件 num01 的内容为 762408,内容完全正确。细心的人会发现,最后一句指令,我们使用了指令[-l num]而不是[-l
eng]。这说明,最后一次转换我们使用的是新生成的num语言的匹配库而不是默认的 eng 语言匹配库

*
我们可以看到,经过简单的训练,我们对于数字数据的转换准确率提高了很多

* 看到这里如果还没有安装工具,参考: Windows下 Tesseract-OCR 的安装与 环境变量配置
<https://blog.csdn.net/qq_40147863/article/details/82285920>
* 本篇完善了很多细节,初学者也可以看懂,奉上 原文链接 <http://www.cnblogs.com/cnlian/p/5765871.html#>
,拜拜
更多文章链接:Tesseract 随笔 <https://blog.csdn.net/column/details/26872.html>


- 本笔记不允许任何个人和组织转载

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信