提到OCR就不可避免的想到谷歌的开源项目Tesseract。
Tesseract是基于Apache许可证的自由软件,自2006年起由Google赞助开发。在2006年Tesseract被认为是最精准的开源光学字符识别引擎之一。至今仍有大量开发者选用这个项目进行OCR软件的开发。
今天我们就来讲一讲如何架设Tesseract,并提供WEB在线识别的功能。
环境:WIN7+系统
1 安装Tesseract-OCR
下载Tesseract WIN EXE版本并进行安装。下载 传送门
2 配置环境变量
a.电脑属性--高级系统设置--环境变量--系统变量--Path,将Tesseract-OCR的安装目录添加进去。
b.新建系统变量TESSDATA_PREFIX,将tessdata文件夹(Tesseract-OCR目录下的文件夹)的路径作为值
3 检验安装
在CMD中运行
tesseract --version
正常安装情况下会显示Tesseract版本号。
此时,Tesseract-OCR已经安装完毕,已经可以在电脑上通过CMD命令来进行识别。
4 本地命令识别
tesseract 本地图片地址 输出路径地址
仅仅是在本地电脑上进行识别,这可能不是我们需要的,我们需要在线进行识别,那么最简单的方法就是将命令进行封装,通过WEB来调用命令进行识别。当然有很多开源代码已经实现了这一功能,我们就可以直接引用。
5 PHP Tesseract-OCR
除了PHP有很多优秀项目外,.NET等语言也有相应开源项目,可以在Github上搜索使用。
6 Tesseract-OCR 语言库
通过 https://github.com/tesseract-ocr/tessdata 下载需要的语言库,并将其放在tessdata目录中。
需要说明的是,语言库是可以定制的。
a 安装 Java
参考文章:https://www.usualtool.com/blog/index.php?ut=article&id=22
b 安装 jTessBoxEditor
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor
7 Tesseract-OCR训练
a.需要训练的图片按照文字分割成小图片样本。
b.用java虚拟机打开jTessBoxEditorFX.jar,依次选择 Tools -> Merge TIFF选择刚刚分割好的样本,点保存--合并,生成一个tif文件。
c.使用tesseract生成.box文件
在tif文件的目录打开命令窗口,执行以下命令
tesseract xxxx.tif xxxx –l eng batch.nochop makebox
执行后,在当前路径下生成xxxx.box文件。
d.创建字体特征文件
echo xxxx 0 0 0 0 0>font_properties
e.生成 .tr 训练文件
tesseract xxxx.tif xxxx nobatch box.train
f.生成字符集
unicharset_extractor xxxx.box
g.生成字典
mftraining -F font_properties -U unicharset -O xxxx.unicharset xxxx.tr cntraining xxxx.tr
当前目录下将生成4个文件inttemp、pffmtable、normproto、shapetable,将其改名为我们预设的xxxx
h.合并数据
cntraining xxxx.tr
再将生成的xxxx.traneddata文件放到tessdata目录下。
这样字库训练便完成了。