前文我们将身份证处理完成了,分成了若干个独立的可识别图片,
每张图片都拥有自己的名字,显示自己的关键内容.
本文说明,在此基础上的文字识别过程.
Tesseract+ocr
文字识别采用如上技术,也是开源的,google开发,
安装下载
下载链接https://github.com/tesseract-ocr/tesseract/wiki#windows
页面上还有其他各种系统的下载及相关说明.
中文字体
其中中文语言包的路径 ,搜索chi_sim下载
https://github.com/tesseract-ocr/tessdata
简单使用
https://github.com/tesseract-ocr/tesseract/wiki#running-tesseract
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
#普通使用
tesseract myscan.png out
# -l 语言,对应安装目录tessdata文件夹 *.traineddata文件
tesseract myscan.png out -l deu
#组合使用多种
tesseract myscan.png out -l eng+deu
执行:
tesseract addrs.png addrs_new -l chi_sim
JAVA Tess4J
我们的目标是在代码中识别.
这里也有一个java的Api
简单使用:设定训练数据目录,使用的语言,直接识别即可.
private String ocr(Mat data) {
String name = "";
File imageFile = new File("eurotext.tif");
ITesseract instance = new Tesseract(); // JNA Interface Mapping
File tessDataFolder = new File("F:\\Program Files (x86)\\Tesseract-OCR\\tessdata");
instance.setDatapath(tessDataFolder.getPath());
instance.setLanguage("chi_sim+num");
try {
BufferedImage bimage_name = (BufferedImage) HighGui.toBufferedImage(data);
name = instance.doOCR(bimage_name);
} catch (Exception e) {
System.err.println(e.getMessage());
}
return name;
}
关于linux下的tess4j相关so打包可以参考另外一篇文章
tess4j-4.3.0对应 tesseract 4.0.0 linux so版本编译记录
字体训练
box文件生成
训练相关:Box文件的生成
https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-â-Make-Box-Files
使用如下命令,之前需要把前面的png文件通过画图转化另存为tif格式.
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
#例 使用中文识别 生成box文件
tesseract addrs.test.exp0.tif addrs.test.exp0 -l chi_sim batch.nochop makebox
生成的box文件可以用文本编辑器直接打开,标识了每一个识别出来的文字,及文字所在的边框坐标位置及在tif文件的页码。
识别不准只需要修正这个结果即可.
jTessBoxEditor
这里我们只使用jTessBoxEditor 来训练,同样的训练工具还有很多,
http://vietocr.sourceforge.net/training.html
下载:java jfx版本。
https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
启动:start javaw -Xms128m -Xmx1024m -jar jTessBoxEditorFX.jar
打开我们刚才的tif文件,生成的box文件也需要在相同目录,这里提供了可视化的界面来调整识别不准的问题.
对每一个格式进行调整,纠正错误.
纠正结果
训练字体
在trainer Tab页面,选择training Data目录就是我们刚才的tif及box目录,输入language名称,选择train with existing box ,run即可.
生成的文件及结果,有用的数据保存在tessdata目录 为addrs.traineddata ,复制这个文件
到tesseract安装目录下的tesadata目录。
后面再使用我们训练的数据识别一次.
tesseract addrs.png addrs -l addrs
Tesseract Open Source OCR Engine vv4.0.0-beta.1.20180608 with Leptonica
Warning. Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 1488
最后还是有一个识别错误,这是训练样本的量太小,要真正能完美识别,绝对需要大量的样本来训练.
代码下载
这里是完整的代码,包括前文身份证的区域自动识别及文字ocr识别处理.
本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵。 固定链接: 【Tesseract+ocr身份证关键字段图片文字识别】 转载请注明
相关文章: