Tesseract+ocr身份证关键字段图片文字识别
 2018-09-01 08:02:49   1530   0   

本文最后更新于天前,文中介绍内容及环境可能已不适用.请谨慎参考.

前文我们将身份证处理完成了,分成了若干个独立的可识别图片,

每张图片都拥有自己的名字,显示自己的关键内容.

本文说明,在此基础上的文字识别过程.

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

Tess4j

简单使用:设定训练数据目录,使用的语言,直接识别即可.

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识别处理.

https://github.com/kxjl168/opencv2/tree/master/opencvTest


 2019-03-28 16:55:58 
 2

  本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵 固定链接: 【Tesseract+ocr身份证关键字段图片文字识别】 转载请注明



发表新的评论
{{s_uid}}   , 欢迎回来.
您的称呼(*必填):
您的邮箱地址(*必填,您的邮箱地址不会公开,仅作为有回复后的消息通知手段):
您的站点地址(选填):
留言:

∑( ° △ °|||)︴

(๑•̀ㅂ•́)و✧
<( ̄) ̄)>
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
╮( ̄▽ ̄)╭
( ̄ε(# ̄)
(⊙ˍ⊙)
( ̄▽ ̄)~*
∑( ° △ °|||)︴

文章分类

可能喜欢 

KxのBook@Copyright 2017- All Rights Reserved
Designed and themed by 野生的喵喵   1343914   38281