当前位置:   article > 正文

ocr训练图片识别_ocr模型训练用什么照片

ocr模型训练用什么照片

 或者参考:http://www.xuebuyuan.com/2153910.html

                    http://blog.csdn.net/haluoluo211/article/details/53483534

=================

参考了很多网上分享的东西,首先感谢他们。

由于最近有需求需要使用Tesseract-OCR来识别手写字符,开源的好像就好些了。

后面直接进入正题,直接说训练。

有部分网上说,要把图片转变成tif格式才来训练,其实jpg也是ok的,测试通过。

我操作的步骤如下:

1.将准备好的jpg或tif格式的图片(其他格式的尚未测试),通过jTessBoxEditor (http://dl.pconline.com.cn/download/1060986.html)合并成一个tif格式文件。


2.生成.box文件
tesseract.exe zhi.normal.exp0.tif zhi.normal.exp0 -l chi_sim batch.nochop makebox
保证tif文件与box文件在同一目录下

3.文字校正:使用jTessBoxEditor来处理。


4.产生字符特征文件
tesseract.exe zhi.normal.exp0.tif zhi.normal.exp0 nobatch box.train


5.计算字符集
unicharset_extractor zhi.normal.exp0.box


6.定义字体特征文件
font_properties.txt
我的是normal 0 0 0 0 0;

7、聚集字符特征
   1) shapeclustering -F font_properties.txt -U unicharset zhi.normal.exp0.tr   注意:如果font_properties不加扩展名.txt,可能会报错
   2) mftraining -F font_properties.txt -U unicharset -O zhi.unicharset zhi.normal.exp0.tr
   使用上一步产生的字符集文件unicharset,来生成当前新语言的字符集文件chi.unicharset。同时还会产生图形原型文件inttemp和每个字符所对应的字符
   特征数文件pffmtable。最重要的就是这个inttemp文件了,他包含了所有需要产生的字的图形原型。 
   3)cntraining zhi.normal.exp0.tr
   
   
8、把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上zhi.


9.执行combine_tessdata zhi.


测试:

tesseract.exe E:\ChineseCharacterdata\answersheet_imgs\hanzi\zhi\img0035.jpg output -l zhi

测试通过。

=====================



1. 功能介绍

利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高验证码识别需求是对某个网站的验证码进行样本训练,形成自己的语言库,来提高验证码识别率。

2. 环境准备

关于tesseract样本训练有一个官方流程说明, https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract#run-tesseract-for-training 

具体的方法有两种: 1-利用三方工具,2-完全命令行操作, 三方工具主要在 https://github.com/tesseract-ocr/tesseract/wiki/AddOns 下载,本文将用到 jTessBoxEditor 这个工具,下载地址为https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-1.5.zip/download?use_mirror=jaist&download=&failedmirror=tenet.dl.sourceforge.net

3. 数据准备

使用抓取程序抓取验证码,放在E:\workspace\ocr\images\test目录下,分别按顺序命名为0.jpg,1.jpg,---,10000.jpg,如,

该验证码有几个特点:a、定长4位,b、都是数字,c、有背景干扰,但比较简单,d、字体颜色不确定,e、有粘连。

为了提高识别率,首先做了一个工作就是灰度化处理 如,并全部转换成tif文件,分别命名成:0.tif,1.tif,2.tif,……,10001.tif,统一存放在E:\workspace\ocr\images\tif下。

4. 利用jTessBoxEditor进行模型训练

4.1 训练步骤

4.1.1      运行程序

运行以下命令:

java-Xms128m -Xmx1024m -jar jTessBoxEditor.jar

4.1.2      合并样本图片

在打开的jtessboxeditor界面中,点击Tools->Merge Tiff ,如图:

按住shift键选择前文准备好的tif文件,并把生成的tif合并到新目录E:\workspace\ocr\images\tif\new2下,命名为langyp.fontyp.exp0.tif。

注意: langyp 是定义的语言名称, fontyp是定义的字体名称,后续都会用到,可以随意修名字 。

4.1.3      生成box文件

执行命令生成 langyp.fontyp.exp0.box 文件

tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0-l eng -psm 7 batch.nochop makebox

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  14:37   <DIR>          .

2017-05-10  14:37   <DIR>          ..

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

               2 个文件        132,383 字节

               2 个目录24,869,994,496 可用字节

4.1.4      修改box文件

切换到jTessBoxEditor工具的Box Editor页,点击open,打开前面的tiff文件langyp.fontyp.exp0.tif,工具会自动加载对应的box文件。

检查box数据,如下图所示是已经修改好的情况,如果数字被误认则手工修改,并保存。

点击下图红色框的按钮,逐个核对tif文件的box数据,全部检查结束并保存。

如上图:圈中的部分1为打开tif文件,2可以合并左边的行,3可以插入行,4可以删除行,5修改每行的数据,使得圈中识别的数字,character是识别的字符,X是起始横轴坐标,Y是起始纵轴坐标,W是宽度,H是高度

4.1.5      生成font_properties

执行echo命令生成font_properties。

echofontyp 0 0 0 0 0 >font_properties

也可以手工新建一个名为font_properties的文本文件(注意该文件没有扩展名),内容为字体名fontyp,后面带5个0,分别代表字体的粗体、斜体等属性,这里全部是0

4.1.6      生成训练文件

执行命令,生成langyp.fontyp.exp0.tr训练文件

tesseractlangyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng -psm 7 nobatch box.train

 E:\workspace\ocr\images\tif\new2 的目录

2017-05-10  16:34   <DIR>          .

2017-05-10  16:34   <DIR>          ..

2017-05-10  16:05                16 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  16:20           618,844 langyp.fontyp.exp0.tr

2017-05-10  16:20               202 langyp.fontyp.exp0.txt

               5 个文件        751,445 字节

               2 个目录24,869,101,568 可用字节

4.1.7      生成字符集文件

执行命令,生成名为unicharset的字符集文件。

unicharset_extractorlangyp.fontyp.exp0.box

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  16:41   <DIR>          .

2017-05-10  16:41   <DIR>          ..

2017-05-10  16:05                16 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  16:20           618,844 langyp.fontyp.exp0.tr

2017-05-10  16:20               202 langyp.fontyp.exp0.txt

2017-05-10  16:41               712 unicharset

               6 个文件        752,157 字节

               2 个目录24,869,171,200 可用字节

4.1.8      生成shape文件

执行命令,生成shape文件

shapeclustering-F font_properties -U unicharset -O langyp.unicharsetlangyp.fontyp.exp0.tr

E:\workspace\ocr\images\tif\new2的目录

2017-05-10  17:24   <DIR>          .

2017-05-10  17:24   <DIR>          ..

2017-05-10  17:20                19 font_properties

2017-05-10  14:30             6,327 langyp.fontyp.exp0.box

2017-05-10  13:07           126,056 langyp.fontyp.exp0.tif

2017-05-10  17:23           618,844 langyp.fontyp.exp0.tr

2017-05-10  17:23               202 langyp.fontyp.exp0.txt

2017-05-10  17:24               723 langyp.unicharset

2017-05-10  17:24               202 shapetable

2017-05-10  17:24               712 unicharset

               8 个文件        753,085 字节

               2 个目录24,868,278,272 可用字节

4.1.9      生成聚集字符特征文件

执行命令,生成3个特征字符文件,unicharset、inttemp、pffmtable

mftraining-F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

4.1.10   生成字符正常化特征文件

执行命令,生成正常化特征文件normproto。

cntraininglangyp.fontyp.exp0.tr

4.1.11   更名

执行命令,把步骤9,步骤10生成的特征文件进行更名。

renamenormproto fontyp.normproto 

renameinttemp fontyp.inttemp 

renamepffmtable fontyp.pffmtable 

renameunicharset fontyp.unicharset 

renameshapetable fontyp.shapetable

4.1.12   合并训练文件

执行命令,生成fontyp.traineddata文件。

combine_tessdatafontyp.

注意:

a、fontyp.traineddata文件最终要拷贝tesseract安装目录的tessdata目录下,才能被tesseract找到。

b、命令行最后必须带一个点。

c、执行结果中,1,3,4,5,13这几行必须有数值,才代表命令执行成功。

4.1.13   fontyp.traineddata拷贝

复制fontyp.traineddata到tesseract的安装目录的tessdata子目录下安装子目录C:\Program Files(x86)\Tesseract-OCR\tessdata,如下:

4.1.14   测试使用

使用命令重新验证码识别:

tesseract 1.jpg result -l fontyp-psm7

4.2 总结

 jtessboxeditor 工具其实是一个基本成型的三方样本训练工具,它的功能就是自动执行上述脚本命令,但是在实际使用中,还存在不够完善的地方,譬如不能加psm参数,生成shape时经常程序异常崩溃,所以本文操作还是以命令行为主。




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

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

 

一、准备工作

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文件

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

 

三、训练

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,还要研究怎么将多个字库合并成一个字库,因为我不可能一次训练完所有的图片文字的。到时候有什么成果了再分享博文。希望大家可以点赞!谢谢。

 

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/263986?site
推荐阅读
相关标签
  

闽ICP备14008679号