机器视觉学习系列四:身份证识别

项目背景:基于手机平台,识别身份证编号、姓名、年龄、地址,性别等;

具体实施方案:

1、基于身份证分类器检测身份证的位置,关于身份证分类器,采用的是HAAR+adaboost算法进行训练;

2、在已经检测到的候选身份证区域里,进行垂直边缘检测;

3、形态学运行,连接垂直边缘;

3、去除干扰连通区域,主要基于连通区域的长宽比,面积,质心相对位置,去除典型的非编号区域;

4、选择质心纵坐标最大的连通区域作为编号数字区域;

5、垂直投影,进行编号的数字分割;

6、基于分割的数字位置,综合判断该区域是不是真正的身份证编号区域,如果是,说明当前候选区域是真正的身份证,否则,说明当前区域是误检区域 ;

7、基于所有的数字中心,通过最小二乘直线拟合,进行身份证的倾斜校正;

8、按照身份证的固定布局规则,获得剩下各个元素的位置,即姓名、性别、地址等;

9、基于垂直投影方法,获取各个元素的单个字符位置;

10、数字识别,采用最简单的模板匹配算法;

11、汉字识别,基于tessract库,但是直接使用该库,识别率很低,只要60%左右,本项目进行了汉字增强处理,主要是外部做一些预处理,比如去除一些干扰,把一些粘连区域分开等,然后在使用tessract库,汉字识别率显著提高;

12、android平台移植,关于opencv的android开发,可以直接参考opencv相关历程,tessract这一块,有一个分支哭可以直接在android上跑,不过不能做到随心的去修改调用,本项目使用的是tessract的源码,通过NDK,自己编译的,呵呵,花了很长时间的尝试,最终搞定;

实验结果:针对清晰的身份证图像,同时倾斜角度在正负10度以内的,数字 识别率99%,汉字识别率在92%以上;

机器视觉学习系列四:身份证识别_第1张图片

不足:地址里的数字和汉字有时很难区域开来,造成一定的错误识别,美中不足啊,

你可能感兴趣的:(身份证识别,数字识别,汉字识别)