ocr项目———tesserct 的安装识别(中文)和重新训练

首先我们先来说一下现有的开源的字符识别的工具

参考:https://www.cnblogs.com/wzben/p/5930538.html

tesseract字符识别:

1:安装 

tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/

进入下载页面,可以看到有各种.exe文件的下其中文件名中带有dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的版本,例如可以选择下载tesseract-ocr-setup-3.05.02.exe。下载列表,这里可以选择下载3.0版本。

 

2:测试

版本打印:tesserct -v 可以看到版本信息。

执行tesseract test.jpg result  (test.jpg是测试的图像,result是输出的txt文件,会自己生成的)

 

3:报错

在安装完tesseract, pytesseract后执行测试命令,发现打印如下错误:

Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.


一看上面的提示就是路径有问题,windows路径是\的 
解决办法,添加TESSDATA_PREFIX的环境变量,设置为安装目录下的tessdata目录 
如:D:\Program Files (x86)\Tesseract-OCR\tessdata

如果还是不行,设置了环境变量可能需要重启下才生效

最快捷的试验方法是,命令行设置环境变量后测试

SET TESSDATA_PREFIX=F:\Tesseract-OCR\tessdata
tesseract 123.png 123.txt

4:乱码问题:

识别中文的时候,发现乱码:

1、下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。

2、下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。

3、下载jTessBoxEditor,这个是用来训练字库的。

 

 

1、进入cmd,进入到要识别的图片的路径下。

2、输入命令

1

tesseract 图片名称 生成的结果文件的名称 字库

例如我的图片识别就是:

1

tesseract test.jpg result -l chi_sim

识别完后会生成result.txt文件

 效果还行,但是数字和标点几乎全错。

5:重新训练新的模型(在tesseroct基础上)

 

1、将图片转换成tif格式,用于后面生成box文件。可以通过画图,然后另存为tif即可。

更改图片名字,这个是有要求的=。=

tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言 fontname是字体 
比如我们要训练自定义字库 mjorcen字体名normal
那么我们把图片文件重命名 mjorcen.normal.exp0.jpg在转tif。

 

2、生成box文件。

1

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

box文件和对应的tif一定要在相同的目录下,不然后面打不开。

 

3、打开jTessBoxEditor矫正错误并训练

打开train.bat

找到tif图,打开,并校正。

 

4、训练。

只要在命令行输入命令即可。

1

tesseract  mjorcen.normal.exp0.jpg mjorcen.normal.exp0  nobatch box.train

1

unicharset_extractor mjorcen.normal.exp0.box

 

在这我明明已经矫正好了,但是还是有1个字符不能识别出来,报的错跟实际上完全没有相关性,不知道是不是bug,到后面的结果就是“园”字没有识别出来。

先不管,毕竟只有一个样本。

 

新建一个font_properties文件

里面内容写入 normal 0 0 0 0 0 表示默认普通字体

 

继续敲命令

1

2

3

4

5

6

7

8

9

shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr

 

 

 

mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr

 

 

 

cntraining mjorcen.normal.exp0.tr

 

最后会生成五个文件,把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上normal.

如图:

 

命令行输入,合并五个文件:

1

combine_tessdata normal.

得到训练好的字库。

 

四、测试

1、把 normal.traineddata 复制到Tesseract-OCR 安装目录下的tessdata文件夹中

 

2、识别命令:

1

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal

 

3、效果

 

对比:

 

 

总结:肯定要自己训练过后的字库识别效果好,接下来要把整个项目弄进android,还要研究怎么将多个字库合并成一个字库,因为我不可能一次训练完所有的图片文字的。到时候有什么成果了再分享博文。希望大家可以点赞!谢谢。

 

更新:没有错误的话命令行的提示应该是这样的

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
chi_sim.traineddata是一个OCR(Optical Character Recognition,即光学字符识别)模型文件,用于训练识别简体中文字符。在训练过程中,需要输入大量的标注数据,即包含了正确字符标签的图像样本。 首先,我们需要准备一组丰富多样的简体中文字符样本图像。这些图像应尽可能地覆盖不同的字体、大小、背景和字形。然后,使用一个OCR训练工具,如Tesseract OCR,并将这些图像和标签作为输入进行训练。在训练过程中,OCR模型将学习识别不同样本中的字符特征,并根据标签进行调整。 训练过程是一个迭代的优化过程。初始时,模型对字符的识别可能不太准确,但通过反复迭代训练,模型将逐渐改善。在训练过程中,我们可以通过指标评估来监控模型的性能,如字符的准确率和召回率。当模型达到一定的性能要求时,我们就可以将训练得到的模型保存为chi_sim.traineddata文件。 训练完成后,我们可以将这个模型用于简体中文字符的识别。通过加载chi_sim.traineddata文件,OCR引擎就能够根据输入的图像识别出其中的简体中文字符。这个模型可以用于各种应用场景,如自动化填写、自动化检索等。同时,我们也可以根据实际需求对模型进行调优和改进,以更好地满足特定的识别要求。 总结来说,chi_sim.traineddata是一个通过训练学习得到的OCR模型文件,用于识别简体中文字符。其训练过程需要大量的标注数据和训练工具,通过迭代优化,最终得到能够准确识别简体中文字符的模型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值