[tesseract]用jTessBoxEditor制作训练库

做课题的时候,用tesseract-ocr进行字符识别时,有官方提供的字库,但这些字库并不能满足我们所有的需求,例如手写字体以及一些其他的字体。tesseract提供的字库中没有我们相应的字体时,就会出现识别错误的问题,这个时候就需要训练自己的字库进行训练了。

1.准备训练图片,并且制作tif格式

字库的训练图片格式最好是png的,注意图片数字周围的空白区域不能太窄,tesseract无法识别空白区域太窄的字符。

将上面的图片放到一个D:\jesdor目录下(自己可以命名)新建的文件夹下,在D:\jesdor目录下有一个jTessBoxEditor.jar的java文件,这个文件需要用java虚拟机打开,电脑上配置了java环境就可以直接打开。

 

 

选择 Tools -> Merge TIFF,打开对话框,选择训练样本所在文件夹,并选中所有要参与训练的样本图片,注意对话框中“文件类型”的选取,选择所有的图片文件。

 

选择好了后,点击打开按钮,出现文件保存对话框,输入文件名:num_1.font.exp0.tif

 

正确进行上述步骤后会出现merge完成的提示

 

然后在图片集那个文件目录下会出现生成的这个tif文件

 

2. 使用tesseract生成.box文件

打开命令提示符,进入步骤2生成的num_1.font.exp0.tif文件所在目录

然后执行命令:tesseract num_1.font.exp0.tif num_1.font.exp0 –l eng batch.nochop makebox

 

执行完成后,会在当前目录下生成num_1.font.exp0.box文件。

 

使用jTessBoxEditor调整.box训练文件
.box文件中记录了每个字符在图片上的位置以及识别出的内容,训练之前需要使用jTessBoxEditor调整字符的位置和内容。
打开 jTessBoxEditor ,点击 Box Editor -> Open ,打开步骤2中生成的 “num_1font.exp0.tif” ,会自动关联到 “num_1.font.exp0.box” 文件:

 

打开完成后,每一个会显示每一张图片的的识别结果

 

接下来我们对每张图片的识别字符和识别框进行纠正,如果字符识别错了,我们就改成正确的,如果识别出现偏差,我们也要进行调整。

 

这个过程是非常重要的,字符框的好坏取决于方框是否调整的准确。
我们把所有图片的全部纠正完。

 

点击save按钮,将校正后的box文件保存。


3.使用echo命令创建字体特征文件

在命令符窗口中输入如下命令:echo font 0 0 0 0 0>font_properties

执行完成之后,在当前文件夹下生成font_properties文件
也可以手动在该文件夹下建立一个名为 “font_properties” 的文件,这个文件没有后缀名称,输入内容 “font 0 0 0 0 0” , 表示字体 font 的粗体、倾斜等共计5个属性全都设置为0

 

4. 使用tesseract生成num_1.font.exp0.tr训练文件


在命令行窗口中输入命令: tesseract num_1.font.exp0.tif num_1.font.exp0 nobatch box.train

生成训练文件成功


5.生成字符集文件

在命令行中执行如下命令: unicharset_extractor num_1.font.exp0.box

 

执行之后在当前目录生成unicharset文件


6. 生成数据字典

在命令行中先执行如下命令: mftraining -F font_properties -U unicharset -O num_1.unicharset num_1.font.exp0.tr

接着执行另外一个训练命令:cntraining num_1.font.exp0.tr

 

会在当前目录下生成 4 个文件(inttemp、pffmtable、normproto、shapetable)

 

需要手动修改名称,这里我们修改成num_1.inttemp、num_1.pffmtable、num_1.normproto、num_1.shapetable。

 

7.合并数据文件,生成字库文件

在命令提示符中执行如下命令:combine_tessdata num_1.

生成字库文件成功,会在当前目录生成num_1.traineddata文件,这个语言就是跟我们下载的官方字库一样,例如eng,chi_sim一样,不过这个字库专门用于识别图片中那种数字字体。

我们把这个字库num_1放到tesseract-ocr的tessdata目录下D:\jTessBoxEditor\tesseract-ocr\tessdata

 

 

8.验证生成的语言包字库

输入命令:tesseract --list-langs
可以看到语言库中有自己刚添加的字库num_1

我们用这个字库来识别一张图片  tesseract 72.png out -l num_1
 会在图片目录下生成out.txt文件,我们打开这个txt文件,可以看到使用num_1字库识别这张图片的结果

 

 

打开out文件,发现识别结果与图片完全符合,至此,自己制作的字库就已经成功了,可以识别所有这种数字字体的图片。 

 

 

 

 

 

 

 

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Tesseract是一个开源的OCR(Optical Character Recognition)引擎,它可以识别图像中的文本。对于Tesseract来说,训练是非常重要的。训练包含了各种语言和字体的数据,用于训练Tesseract引擎以正确地识别和理解不同的字形。 训练不仅包含文字样本,还包含了这些文字样本的标签和特征信息。训练过程中,Tesseract会根据这些样本和标签对其进行学习,并根据字形特征来创建模型。这样,在实际应用中,Tesseract就能够根据训练中的数据进行文字识别。 为了让Tesseract更好地适应各种不同的语言和字体,我们可以根据需要自己生成训练。首先,我们需要准备包含大量文字样本的数据集。然后,通过对数据集进行标注,将每个字形与其对应的文本标签关联起来。接下来,在训练过程中,Tesseract会基于这些标注数据来优化其模型,并通过不断迭代来进一步提升准确性。 通过自己生成训练,我们可以更好地适应特定的应用需求。例如,对于特定行业的专门术语,我们可以使用专门构建的训练来提高文字识别的准确性。此外,自动生成训练还能够帮助Tesseract识别不常见的字体或手写文字。 总之,训练Tesseract的关键组成部分,它包含了各种语言和字体的数据样本,用于训练Tesseract引擎以识别和理解不同的字形。通过自己生成训练,我们可以提升Tesseract的识别准确性,并使其更好地适应特定的应用场景。 ### 回答2: Tesseract是一个光学字符识别(OCR)引擎,可以将印刷字体文字转换成计算机可读的文本。为了实现准确的字符识别,Tesseract提供了训练供用户使用。 训练Tesseract的核心组件之一,它主要用于训练Tesseract识别新的字体和语言Tesseract默认只具备对一些常见语言和字体的识别能力,但用户可以通过使用训练来增加新的字体和语言的支持。 训练的使用需要一定的技术知识和编程经验。用户需要准备一组包含大量字体样本的图像,这些样本涵盖了待识别字体的各种字符。然后,用户需要用这些图像训练Tesseract识别这些新的字体。训练过程中,Tesseract会根据图像样本中的字符特征对其进行学习和训练,以提高对这些字体的识别准确性。 训练提供了一些工具和脚本来辅助用户进行训练过程。例如,用户可以使用其提供的文本文件来定义新的语言特征,如字符集、模式等。此外,训练还提供了一些评估工具,用户可以用来测试训练后的模型的准确性和性能。 总之,Tesseract训练是一个强大的工具,可以帮助用户训练和定制Tesseract来识别新的字体和语言。通过合理使用训练,用户可以增加Tesseract的可适用范围,提高其字符识别的准确性和效果。但要注意,使用训练需要一定的技术知识和经验,并且需要大量的图像样本来进行训练和测试。 ### 回答3: tesseract是一个开源的OCR(光学字符识别)引擎,可以用于识别图像中的文字内容。为了更好地适应不同种类的文本和字体,tesseract提供了训练(training data)。 训练包含了用于训练和优化tesseract的模型所需的数据。通过使用训练,用户可以自定义和训练tesseract以更好地适应特定字体、语言或文本样式。训练提供了大量的样本数据,包括字母、数字、标点符号等。用户可以通过添加自己的样本数据,进一步提高tesseract在特定领域的识别准确度。 使用训练进行训练是一个复杂的过程,需要用户具备一定的技术知识和经验。首先,用户需要收集适当的样本数据,尽可能覆盖各种字体和样式。然后,用户需要对数据进行预处理和标注,以便tesseract可以正确地识别和学习。接着,用户需要使用训练工具将样本数据和tesseract的基础模型进行训练和优化。训练的过程可能需要反复尝试和调整,直到达到满意的准确度。 训练为用户提供了一个定制和优化tesseract的工具,使其能够更好地应对各种不同类型的文本和字体。但是,使用训练进行训练需要投入大量的时间和精力,并且需要一定的专业知识。对于一般用户来说,可以直接使用tesseract的默认模型进行文字识别,而不需要额外的训练过程。然而,对于特定领域或特殊需求的用户来说,使用训练进行定制训练可以提供更准确和可靠的识别结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值