登录 |  注册 |  繁體中文


Tesseract-OCR的简单使用与训练

分类: 人工智能&大数据 颜色:橙色 默认  字号: 阅读(1273) | 评论(0)

Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Document Imaging(MODI)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。

源码地址为:https://github.com/tesseract-ocr/tesseract

接下来,我们将在Windows环境下安装Tesseract并实现简单的转换和训练:

1、Tesseract实现

大体流程:Tesseract安装 -> 打开命令行 -> 生成目标文件

Tesseract安装

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

在测试之前先了解下tesseract的命令程序格式:

 tesseract imagename outputbase [-l lang]

imagename指定图片名称,outputbase指定输出文件名,-l指定识别的语言

生成目标文件

先准备一张图片文件,如test.png

 

将命令行切换至目标图像文件目录,比如我们转换文件为test.png(图片文件允许多种格式),位于C:UsersLianDesktop est;然后在命令行中输入

tesseract test.png output_1 –l eng

【语法】:  tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

imagename为目标图片文件名,需加格式后缀;outputbase是转换结果文件名;lang是语言名称(在Tesseract-OCR中tessdata文件夹可看到以eng开头的语言文件eng.traineddata),如不标-l eng则默认为eng。

 

打开文件output_1.txt,发现tesseract成功的将图像转换成152408

 

可喜可贺,说明老牌名将tesseract还是很强的!但是还是有点不够准确,那么我们有没有什么办法能提高tesseract识别字符准确率呢?接下来,我们将使用配套训练工具jTessBoxEditor来训练样本,来提高我们的准确率!

 

2、Tesseract训练:

大体流程为:安装jTessBoxEditor -> 获取样本文件 -> Merge样本文件 –> 生成BOX文件 -> 定义字符配置文件 -> 字符矫正 -> 执行批处理文件 -> 将生成的traineddata放入tessdata中

2.1安装jTessBoxEditor

下载jTessBoxEditor,地址https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/;解压后得到jTessBoxEditor,由于这是由Java开发的,所以我们应该确保在运行jTessBoxEditor前先安装JRE(Java Runtime Environment,Java运行环境)。

2.2获取样本文件

我们可以用画图工具绘制样本文件,数量越多越好,我自己画了5张图,如图:

【注意】:样本图像文件格式必须为tif iff格式,否则在Merge样本文件的过程中会出现 Couldn’t Seek 的错误。

 

 

 

2.3 Merge样本文件

打开jTessBoxEditor,Tools->Merge TIFF,将样本文件全部选上,并将合并文件保存为fontyp.test.exp0.tif

2.4 生成BOX文件

打开命令行并切换至fontyp.test.exp0.tif所在目录,输入,生成文件名为fontyp.test.exp0.box

tesseract fontyp.test.exp0.tif fontyp.test.exp0 batch.nochop makebox

【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox  

lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

2.5 字符矫正

打开jTessBoxEditor,BOX Editor -> Open,打开fontyp.test.exp0.tif;矫正<Char>上的字符,记得<Page>有好多页噢!

 

修改后记得保存。

2.6 生成font_properties

在目标文件夹内生成一个名为font_properties的文本文件,内容为

font 0 0 0 0 0

【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>  

fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用。

6)、生成训练文件

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

tesseract fontyp.test.exp0.tif fontyp.test.exp0 -l eng nobatch box.train

7)、生成字符集文件

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

unicharset_extractor fontyp.test.exp0.box 

8)、生成shape文件

执行命令,生成shape文件

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


9)、生成聚集字符特征文件

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

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

10)、生成字符正常化特征文件

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

cntraining fontyp.test.exp0.tr

11)、更名

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

rename normproto fontyp.normproto
rename inttemp fontyp.inttemp
rename pffmtable fontyp.pffmtable 
rename unicharset fontyp.unicharset
rename shapetable fontyp.shapetable

12)、合并训练文件

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

combine_tessdata fontyp.

注意:

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

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




姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部