内容简介:一款由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版本。
其中文件名中带有dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的版本,例如可以选择下载tesseract-ocr-setup-3.05.02.exe。
下载完成后双击,此时会出现如下图所示的页面。
此时可以勾选Additional language data(download)选项来安装OCR识别支持的语言包,这样OCR便可以识别多国语言,默认只有英语。然后一路点击Next按钮即可。
配置环境变量
为了在全局使用方便,比如安装路径为C:\Program Files (x86)\Tesseract-OCR,将该路径添加到环境变量的Path中。
还有一个环境变量要添加:TESSDATA_PREFIX 指向C:\Program Files (x86)\Tesseract-OCR\tessdata 这个是用于语言包的。
测试是否安装成功:在cmd中输入tesseract ,将出现以下界面代表成功:
2.Tesseract的使用
方式一:直接在命令行调用:
tesseract d:\6.png d:\result
第一个参数为图片路径,第二个参数为输出结果路径。6.png的图片如下:
识别结果result.txt的内容为:
有2个数字误识别。
而使用比较标准的文字,如:
是可以完全识别的。大家可以自己试试。
方式二:在 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执行的)
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 的错误。
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>有好多页噢!
修改后记得保存。
执行批处理文件
在目标目录下生成一个批处理文件
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
保存后执行即可,执行结果如图:
最终文件夹内会有以下文件,如图:
将生成的traineddata放入tessdata中
最后将num.trainddata复制到Tesseract-OCR中tessdata文件夹即可。
4.最后的测试
按照之前步骤,使用命令行输入
tesseract test.png output_2 -l num
我们可以看到新生成的文件output_2的内容为 762408 ,内容完全正确。细心的人会发现,最后一句指令,我们使用了指令[-l num]而不是[-l eng]。这说明,最后一次转换我们使用的是新生成的num语言的匹配库而不是默认的eng语言匹配库。
我们可以看到,经过简单的训练,我们对于数字数据的转换准确率提高了很多。Tesseract的优点除了可以不断学习以外,还因为是使用C++写的开源程序,可以使用C#或者C++调用以及修改,很关键!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS权威指南(第三版·英文影印版)
[美] Eric A.Meyer / 东南大学出版社 / 2007-06 / 68.00元
著名的CSS专家Eric A.Meyer他招牌式的智慧和无与伦比的经验引领读者探索了CSS的各个部 分,包括属性、标记、特性和实现。此外,他还就现实应用中的一些问题,例如浏览器的支持和设计方针,发表了看法。你所要知道的就是HTML 4.0的知识,这样就可以创建整洁、易于维护的脚本,以与桌面出版系统同样的优雅和控制能力管理网站布局和分页。你将会学到: 精妙地设计文本风格 用户界面、......一起来看看 《CSS权威指南(第三版·英文影印版)》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
HEX CMYK 转换工具
HEX CMYK 互转工具