图像文字识别(三):Tesseract4.0训练字库,提高正确识别率

  由于tesseract的中文语言包“chi_sim”对中文手写字体或者环境比较复杂的图片,识别正确率不高,因此需要针对特定情况用自己的样本进行训练,提高识别率,通过训练,也可以形成自己的语言库。

 

步骤:

1、工具准备:

(1)官方文档:https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00

(2)Java虚拟机,由于jTessBoxEditor的运行依赖Java运行时环境,所以需要安装Java虚拟机。

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

(3)jTessBoxEditor2.0工具,用于调整图片上文字的内容和位置,

下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/

安装包解压后双击里边的“jTessBoxEditor.jar”,或者双击该目录下的“train.bat”脚本文件,就可以打开该工具了。

 

2、样本图片准备:(进行训练的样本图片数量越多越好)

这里只准备2种不同字体样本进行测试:

3、使用jTessBoxEditor生成训练样本的的合并tif图片:

(1)打开jTessBoxEditor,选择Tools->Merge TIFF,进入训练样本所在文件夹,选中要参与训练的样本图片:

(2)点击 “打开” 后弹出保存对话框,选择保存在当前路径下,文件命名为 “zwp.test.exp0.tif” ,格式只有一种 “TIFF” 可选。

tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言,fontname是字体,num为自定义数字。

比如我们要训练自定义字库 zwp,字体名test,那么我们把图片文件命名为 zwp.test.exp0.tif

 

4、使用tesseract生成.box文件:

在上一步骤生成的“zwp.test.exp0.tif”文件所在目录下打开命令行程序,执行下面命令,执行完之后会生成zwp.test.exp0.box文件。

tesseract zwp.test.exp0.tif zwp.test.exp0 -l chi_sim -psm 7 batch.nochop makebox

 

 

 

5、使用jTessBoxEditor矫正.box文件的错误:

.box文件记录了每个字符在图片上的位置和识别出的内容,训练前需要使用jTessBoxEditor调整字符的位置和内容。

打开jTessBoxEditor点击Box Editor ->Open,打开步骤2中生成的“zwp.test.exp0.tif”,会自动关联到“zwp.test.exp0.box”文件,这两文件要求在同一目录下。调整完点击“save”保存修改。

 

6、生成font_properties文件:(该文件没有后缀名)

(1)执行命令,执行完之后,会在当前目录生成font_properties文件

 

echo test 0 0 0 0 0 >font_properties

(2)也可以手工新建一个名为font_properties的文本文件,输入内容 “test 0 0 0 0 0” 表示字体test的粗体、倾斜等共计5个属性。这里的“test”必须与“zwp.test.exp0.box”中的“test”名称一致。

 

7、使用tesseract生成.tr训练文件:

执行下面命令,执行完之后,会在当前目录生成zwp.test.exp0.tr文件。

tesseract zwp.test.exp0.tif zwp.test.exp0 nobatch box.train

 

8、生成字符集文件:

执行下面命令:执行完之后会在当前目录生成一个名为“unicharset”的文件。

unicharset_extractor zwp.test.exp0.box

 

9、生成shape文件:

执行下面命令,执行完之后,会生成 shapetable 和 zwp.unicharset 两个文件。

shapeclustering -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr

 

10、生成聚字符特征文件:

执行下面命令,会生成 inttemp、pffmtable、shapetable和zwp.unicharset四个文件。

mftraining -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr

 

11、生成字符正常化特征文件:

执行下面命令,会生成 normproto 文件。

cntraining zwp.test.exp0.tr

 

12、文件重命名:

重新命名inttemp、pffmtable、shapetable和normproto这四个文件的名字为[lang].xxx。

这里修改为zwp.inttemp、zwp.pffmtable、zwp.shapetable和zwp.normproto

执行下面命令:

rename normproto zwp.normproto
rename inttemp zwp.inttemp
rename pffmtable zwp.pffmtable
rename shapetable zwp.shapetable

 

13、合并训练文件:

执行下面命令,会生成zwp.traineddata文件。

combine_tessdata zwp.

Log输出中的Offset 1、3、4、5、13这些项不是-1,表示新的语言包生成成功。

将生成的“zwp.traineddata”语言包文件复制到Tesseract-OCR 安装目录下的tessdata文件夹中,就可以使用训练生成的语言包进行图像文字识别了。

 

14、测试:

输入下面命令,-l后面为训练生成的语言包。

tesseract test.PNG test -l zwp

使用新训练的语言包进行文字识别后,会发现之前识别不出来的文字也可以识别出来了。

 

附:最终所有的生成文件:

  • 14
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 54
    评论
### 回答1: 要提高Tesseract OCR的识别率,可以尝试以下几种方法: 1. 使用更高质量的图像Tesseract OCR对图像质量要求较高,因此使用更高分辨率、更清晰的图像可以提高识别率。 2. 优化图像预处理:在进行OCR之前,可以对图像进行预处理,如去除噪声、平滑图像等,以提高识别率。 3. 调整识别参数:Tesseract OCR有许多可调参数,如语言模型、字符集、字体等,可以根据实际情况进行调整,以提高识别率。 4. 增加训练数据:Tesseract OCR可以通过增加训练数据来提高识别率,可以使用已有的数据集或自己收集数据进行训练。 5. 使用其他OCR引擎:如果Tesseract OCR无法满足需求,可以尝试其他OCR引擎,如ABBYY FineReader、Adobe Acrobat OCR等。 ### 回答2: Tesseract OCR是一款开源的OCR引擎,在OCR识别中应用非常广泛。但是,它的识别率并不总是最优的,因此需要一些技巧来提高它的识别率。以下是一些技巧: 1. 图像预处理:在使用Tesseract OCR进行识别之前,可以先对图像进行一些预处理,例如旋转、去噪等。这样可以提高图像的质量,从而提高识别率。 2. 字符集:Tesseract OCR支持多种语言和字符集,因此在进行识别时应选择正确的语言和字符集。如果选择了错误的语言和字符集,识别率可能会很低。 3. 字符大小和字体:字体大小和字体类型对于识别率也有很大影响。为了获得更好的识别率,可以尝试使用不同的字体和大小进行识别测试,并选择最适合的字体和大小。 4. 训练模型:如果Tesseract OCR不能很好地识别特定的字体或语言,可以使用训练模型来提高识别率训练模型需要使用一些训练图像和识别结果,以便Tesseract可以学习如何更好地识别这些字符。 5. 字典和术语表:如果OCR识别所需的术语和单词比较特殊,可以创建自定义的字典和术语表。这样Tesseract就可以更好地识别这些词汇,从而提高识别率。 总之,为了提高Tesseract OCR的识别率,需要进行一系列的技巧和处理。在实际应用中,需要根据不同的需求选择合适的技巧和方法,以获得最佳的识别效果。 ### 回答3: Tesseract OCR是一款开源OCR引擎,是Google公司从HP公司中收购的OCR技术,并基于该技术开发而来的。Tesseract OCR在业内有着较高的声誉,并被广泛应用于文本识别及数字化处理领域。尽管Tesseract OCR在识别中文等复杂语言上的表现不及商业OCR引擎,但在英文和数字的识别上表现出色。如何提高Tesseract OCR的识别率,应该采取以下措施: 1. 提高图像清晰度:Tesseract OCR对图像的清晰度要求高,图像清晰度低会导致识别率下降。因此,要提高图像清晰度,可以通过更改扫描分辨率、扫描参数和摄像机设置等来实现。 2. 优化预处理:识别前需要对原图进行预处理操作,包括二值化、去除干扰线条等。通过工具软件可以获得更好的预处理效果。 3. 选择合适的训练集:可以根据识别的对象,在训练集中选择合适的字体、字型等。同时,也可以对需要识别的对象进行标注,让Tesseract OCR知道这些文字,从而提高识别率。 4. 优化识别参数:可以通过更改Tesseract OCR的参数来提高识别率。这些参数包括识别文本的最小高度、间距、字母的最小数量等。 5. 引入语言模型:Tesseract OCR的识别率可以通过引入语言模型来提高,这可以让识别文字更加准确。可以使用语言模型训练工具,制作专业的语言模型。 综上所述,提高Tesseract OCR的识别率需要从多个方面入手。只有通过科学的算法和有效的技术手段,才能够提高Tesseract OCR的识别效果,实现更加准确和高效的 OCR 识别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张维鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值