何为Tesseract?
Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生。在2005年,Tesseract由美国内华达州信息技术研究所获得,并委托Google对其进行改进、优化工作。
Tesseract目前已作为开源项目发布在Google Project,它与Leptonica图片处理库结合,可以读取各种格式的图像并将它们转化成超过60种语言的文本,我们还可以不断训练自己的库,使图像转换文本的能力不断增强。如果团队深度需要,还可以以它为模板,开发出符合自身需求的OCR引擎。
Tesseract基本工作原理:
Tesseract安装教程:
1. tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/
2.下载完成后双击安装包,选择路径,选择语言后继续下一步直到安装成功
3.配置Tesseract的环境变量
4.查看安装结果
在cmd中输入tesseract –v 有结果如下图,则说明安装成功:
Tesseract使用教程:
bat调用Tesseract在cmd中进入图片所在目录,输入 tesseract 图片名称 结果文档名称如: tesseract 0.png result.txt ,识别0.png的结果保存为result.txt文档。
python调用Tesseract
1.pip安装pytesseract cmd输入指令 pip install pytesseract
调用方法:
text = pytesseract.image_to_string(image)
7.cmd运行指令生成字符特征集(tr)
tesseract num.font.exp0.tif num.font.exp0 nobatch box.train
8.cmd运行指令生成字符集(unicharset)
unicharset_extractor num.font.exp0.box
9. cmd运行指令生成字符特征(shapetable、inttemp、pffmtable、 normproto)
shapeclustering -F font_properties.txt -U unicharset num.font.exp0.tr
mftraining -F font_properties.txt -U unicharset -O num.unicharset num.font.exp0.tr
cntraining num.font.exp0.tr
10.重命名,结果合并
把目录下的字符集 unicharset、图形原型文件inttemp、字符特征数文件pffmtable、
字符形状表shapetable、字符形状正常化特征文件normproto
这五个文件的文件名前面都加上“num.”执行combine_tessdata num,生成num.traineddata
11.结果导入
把num.traineddata放到tesseract目录下的tessdata目录下
1.下载工具jTessBoxEditor 并解压
网址: https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
2.获取训练数据:
3.合并样本图像。
运行jTessBoxEditor
点击Tools--->Merge TIFF。
选择样本图像合并成num.font.exp0.tif文件。
4.打开命令行执行命令生成box文件:tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox 生成的BOX文件为num.font.exp0.box,BOX文件为Tessercat识别出的文字和其坐标。
Make Box File的命令格式为:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。
5.文字校正。
运行jTessBoxEditor
打开num.font.exp0.tif(必须将上一步生成的.box和.tif样本文件放在同一目录) 手动对每张图片中识别错误的字符进行校正。校正完成后保存。
6.定义字体特征文件。
Tesseract-OCR3.01以上的版本在训练之前需要在样本图片(tif)所在目录下创建一个名称为font_properties的字体特征文件。
font_properties不含有BOM头,文件内容格式如下:
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。
这里用记事本打开font_properties ,输入以下下内容:
num 0 0 0 0 0