OCR库Tesseract初探

栏目: Python · 发布时间: 6年前

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

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

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

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

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

进入下载页面,可以看到有各种.exe文件的下载列表,这里可以选择下载3.0版本。

OCR库Tesseract初探

其中文件名中带有dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的版本,例如可以选择下载tesseract-ocr-setup-3.05.02.exe。

下载完成后双击,此时会出现如下图所示的页面。

OCR库Tesseract初探

此时可以勾选Additional language data(download)选项来安装OCR识别支持的语言包,这样OCR便可以识别多国语言,默认只有英语。然后一路点击Next按钮即可。

配置环境变量

为了在全局使用方便,比如安装路径为C:\Program Files (x86)\Tesseract-OCR,将该路径添加到环境变量的Path中。

还有一个环境变量要添加:TESSDATA_PREFIX  指向C:\Program Files (x86)\Tesseract-OCR\tessdata    这个是用于语言包的。

OCR库Tesseract初探

测试是否安装成功:在cmd中输入tesseract ,将出现以下界面代表成功:

OCR库Tesseract初探

2.Tesseract的使用

方式一:直接在命令行调用:

tesseract d:\6.png d:\result

OCR库Tesseract初探

第一个参数为图片路径,第二个参数为输出结果路径。6.png的图片如下:

OCR库Tesseract初探

识别结果result.txt的内容为:

OCR库Tesseract初探

有2个数字误识别。

而使用比较标准的文字,如:

OCR库Tesseract初探

是可以完全识别的。大家可以自己试试。

方式二:在 Python 中调用

要在python中使用,需要安装:

Python  :官网安装地址: https://www.python.org/downloads/

PIL :用于python图像格式处理,安装完python之后执行一下命令即可安装:pip install Pillow

Pytesser3: python开源项目,封装了tesseract库,也是在python安装完后使用pip命令安装:pip install pytesser3

然后新建一个记事本文件改名为orc.py,内容如下:

from pytesser3 import image_to_string
from PIL import Image
text = image_to_string(Image.open(r'D:\6.png'))
print(text)

用python执行一下:(我用PyCharm执行的)

OCR库Tesseract初探

3.Tesseract训练:

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

安装jTessBoxEditor

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

获取样本文件

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

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

OCR库Tesseract初探

OCR库Tesseract初探

OCR库Tesseract初探

OCR库Tesseract初探

OCR库Tesseract初探

Merge样本文件

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

生成BOX文件

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

tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

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

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

定义字符配置文件

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

font 0 0 0 0 0  

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

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

字符矫正

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

OCR库Tesseract初探

修改后记得保存。

执行批处理文件

在目标目录下生成一个批处理文件


rem 执行改批处理前先要目录下创建font_properties文件 

echo Run Tesseract for Training.. 
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train 
 
echo Compute the Character Set.. 
unicharset_extractor.exe num.font.exp0.box 
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr 


echo Clustering.. 
cntraining.exe num.font.exp0.tr 

echo Rename Files.. 
rename normproto num.normproto 
rename inttemp num.inttemp 
rename pffmtable num.pffmtable 
rename shapetable num.shapetable  

echo Create Tessdata.. 
combine_tessdata.exe num. 

echo. & pause

保存后执行即可,执行结果如图:

OCR库Tesseract初探

最终文件夹内会有以下文件,如图:

OCR库Tesseract初探

将生成的traineddata放入tessdata中

最后将num.trainddata复制到Tesseract-OCR中tessdata文件夹即可。

4.最后的测试

按照之前步骤,使用命令行输入

tesseract test.png output_2 -l num

我们可以看到新生成的文件output_2的内容为 762408 ,内容完全正确。细心的人会发现,最后一句指令,我们使用了指令[-l num]而不是[-l eng]。这说明,最后一次转换我们使用的是新生成的num语言的匹配库而不是默认的eng语言匹配库。

OCR库Tesseract初探

我们可以看到,经过简单的训练,我们对于数字数据的转换准确率提高了很多。Tesseract的优点除了可以不断学习以外,还因为是使用C++写的开源程序,可以使用C#或者C++调用以及修改,很关键!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Practice of Programming

The Practice of Programming

Brian W. Kernighan、Rob Pike / Addison-Wesley / 1999-2-14 / USD 49.99

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual progr......一起来看看 《The Practice of Programming》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具