Tesseract训练识别数字

一、软件环境

1.安装Tesseract 3.0.2

Github上找到 Tesseract ,安装 windows下的版本(无需源代码)

2.安装jTessBoxEditorFX训练工具

    需要JDK1.8

二、训练前需要准备的素材

1.多张包含数字的图片
  d盘新建一个文件夹 number, 将图片放入其中,(白底黑字,图片大小恰好包含数字,一张可包含多个数字,一般一个图片包含1234567890.,并且是一种字体)

三、开始训练

1. 新建一个名为 font_propertities 的文本文件
               里面内容为 normal 0 0 0 0 0 
              (normal代表字体名)
2. 用jTessBoxEditorFx将多个图片合并成一个包含多页图片的tif文件
            合成的文件取名为 number.normal.exp2.tif

点Tools->Merge,选择图片

3. 创建Box文件
          cd d:\number
          tesseract number.normal.exp2.tif number.normal.exp2 -l eng batch.nochop makebox
          这里的eng是默认的语言,当我们创建好自己的number语言后,以后再次重新训练可以改成number,也就是:

tesseract number.normal.exp2.tif number.normal.exp2 -l number batch.nochop makebox

4. jTessBoxEditorFx打开Box文件
           打开后,查看识别的结果,并纠正错误,保存

在这里插入图片描述

5. 根据BOX文件和tif文件生成特征文件
     命令行 执行如下命令(可放入一个.bat文件便于执行)
      tesseract number.normal.exp2.tif number.normal.exp2  nobatch box.train

      unicharset_extractor number.normal.exp2.box

      shapeclustering -F font_properties -U unicharset number.normal.exp2.tr

      mftraining -F font_properties -U unicharset -O unicharset number.normal.exp2.tr

       cntraining  number.normal.exp2.tr

  执行完毕,将生成5个文件
  inttemp  normproto  pffmtable  shapetable   unicharset
6. 生成最终语言文件
  将以上五个文件前面都改名,前面加上 number.

此时文件夹如上
然后,命令行执行

combine_tessdata number.

就会生成 number.traineddata, 将其拷贝的tesseract 执行目录的tessdata下

tessedata文件夹

6. 通过命令行验证训练结果

tesseract number.normal.exp2.tif output -l number

执行后,执行结果在output.txt里

以上过程可以反复执行,不断修正精确度

四. 在c# 中使用

1.引入
          nuget引入 tesseract ,2.41版(为何使用低版本?2.41以上版本,无法在xp下使用,使用时报错,找不到libtesseract304.dll文件,事实上文件都在那里,而且需要的vc runtime 都装上了)   
          tesseract 2.41 依赖于vc++ runtime 2012 ,如果不安装,会报错找不到dll文件
2.代码
a.初始化

初始化代码

b.识别

识别前先二值化(转换成白底黑字),然后识别

参考:

https://blog.csdn.net/jianglei1310446/article/details/77572435

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Tesseract 是一个开源光学字符识别引擎,它可以用于识别数字符号和字母等字符。为了使 Tesseract 能够准确识别特定的字符集,我们需要训练一个适用于我们所需字符集的模型。 训练集是用于训练模型的数据集合,它包含了我们希望 Tesseract 能够识别数字符号和字母样本。训练集应该包含多种不同的字体、大小和样式的字符,以获得更好的训练效果。 首先,我们需要收集一组包含所需字符的图像样本。这些图像样本应该以数字符号和字母的不同组合形式呈现,并尽可能地覆盖各种字体和风格。接下来,我们需要手动标记这些图像样本,将每个字符与对应的标签关联起来,以告诉模型它们所代表的字符。 然后,我们可以使用 Tesseract 提供的训练工具将标记数据集训练成一个新的字符识别模型。这个过程包括将样本图像转换成 Tesseract 特定的训练数据格式,并使用这些数据来训练模型。训练过程可能需要花费一定时间和计算资源,但训练完成后,我们将得到一个能够识别训练集中提取的数字符号和字母的模型。 最后,我们可以将这个训练好的模型应用于我们想要识别字符的任务中。通过使用该模型,我们可以提高识别数字符号和字母的准确性和效率。 总而言之,利用 Tesseract训练集,我们可以训练一个能够识别数字符号和字母的定制模型,从而实现更精准和个性化的字符识别任务。 ### 回答2: Tesseract是一个开源的OCR(光学字符识别)引擎,开发者可以用它识别各种类型的文字,包括数字符号和字母。为了让Tesseract可以准确识别不同字体、大小和样式的字符,我们需要为其提供一个训练集。 训练集是用于训练OCR引擎的数据集合,包含大量的文本图片,这些图片中包含各种不同的数字符号和字母。为了制作一个训练集,我们首先需要收集大量的样本图片,包括各种类型和风格的数字符号和字母。接下来,我们需要手动标注每个图片中的字符,以便Tesseract可以学习它们的特征和形状。 当我们有了足够大的样本集和相应的标注后,就可以使用Tesseract训练工具来训练我们自己的OCR引擎了。这个过程涉及到一些参数调整和模型训练的步骤,以确保引擎能够准确地识别字符。 训练集的质量对于Tesseract识别效果至关重要。为了准确识别数字符号和字母,我们需要确保训练集覆盖了各种不同的字体、大小和样式。此外,还需要保证标注的准确性,避免错误的标注导致训练出的OCR引擎产生误识别。 总结来说,通过收集样本图片、标注字符,然后使用Tesseract训练工具进行训练,我们可以创建一个能够准确识别数字符号和字母的OCR引擎。但是制作高质量的训练集是一个复杂和耗时的过程,需要充分的技术知识和大量的工作。 ### 回答3: Tesseract 是一个开源的 OCR(Optical Character Recognition,光学字符识别)引擎,可以用于识别数字符号和字母等不同类型的字符。为了使 Tesseract 能够准确识别特定类型的字符,我们需要创建一个适应的训练集。 创建训练集的过程可以分为以下几步: 1. 收集样本:首先需要收集包含所需字符的样本图像。这些样本图像可以从不同的来源获取,例如互联网、书籍、照片等。确保样本图像的质量和多样性,以便提高识别准确率。 2. 标注样本:将收集到的样本图像进行标注,即为每个字符添加正确的标签。这样做是为了告诉 Tesseract 每个字符的正确形状和特征,以便提高识别精度。可以使用标注工具,如 jTessBoxEditor,来手动为每个字符标注。 3. 创建训练数据:使用标注的样本图像生成训练数据文件,这些文件将作为训练集供 Tesseract 使用。可以使用 Tesseract 提供的一些命令行工具来实现这一步骤。 4. 训练模型:使用生成的训练数据文件训练一个自定义的 OCR 模型。训练过程将会基于收集到的样本图像和标注信息来调整模型参数,以便提高字符识别的准确率。训练模型可能需要一定时间,具体取决于样本数量和复杂性。 5. 测试和优化:完成模型训练后,可以使用一部分未参与训练的样本图像进行测试,并评估模型的性能。如果识别准确率不理想,可以通过调整模型参数或增加更多样本来进行优化。 通过以上步骤,我们可以创建一个适用于 Tesseract训练集,使其能够正确识别数字符号和字母等各种字符。请注意,这是一个繁琐的过程,需要有一定的编程和图像处理知识,但是通过合理的设计和大量的样本,我们可以获得较高的字符识别准确率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值