关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路。

文中所用到的身份证图片资源是百度找的,如有侵权可联系我删除。

一、准备工作

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

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

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

以上的几个在百度都能找到下载,就不详细讲了。

在这里插入图片描述

二、识别

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

2、输入命令

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

例如我的图片识别就是:

tesseract test.jpg result -l chi_sim

在这里插入图片描述

识别完后会生成result.txt文件
在这里插入图片描述

当然啦效果不太理想。所以我们要训练自己的字库。

三、训练

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

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

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

2、生成box文件。

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

在这里插入图片描述
box文件和对应的tif一定要在相同的目录下,不然后面打不开。

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

打开train.bat
在这里插入图片描述

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

在这里插入图片描述

4、训练。

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

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


unicharset_extractor mjorcen.normal.exp0.box

在这里插入图片描述

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

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

新建一个font_properties文件

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

继续敲命令

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.

如图:
在这里插入图片描述

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

combine_tessdata normal.
得到训练好的字库。

在这里插入图片描述

四、测试

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

2、识别命令:

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

3、效果
在这里插入图片描述

对比:

在这里插入图片描述

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

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

在这里插入图片描述

本文引自:
https://www.cnblogs.com/wzben/p/5930538.html

GitHub 加速计划 / te / tesseract
11
3
下载
tesseract-ocr/tesseract: 是一个开源的光学字符识别(OCR)引擎,适用于从图像中提取和识别文本。特点是可以识别多种语言,具有较高的识别准确率,并且支持命令行和API调用。
最近提交(Master分支:4 个月前 )
dcb2ef91 add info about using egorpugin/tessdata tessdata_unittest 7 天前
2a944fbe - 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐