基于PSENet和CRNN的身份证识别

2020-02-01 15:23赵龙李飞王伟峰
现代计算机 2020年34期
关键词:特征提取身份证文字

赵龙,李飞,王伟峰

(安徽科大国创云网科技有限公司,合肥230088)

0 引言

随着互联网以及智能手机的飞速发展,无论是企业还是个人对文字识别的要求越来越多、越来越高。本文主要讲述文字识别技术在身份证识别方面的应用。身份证文字识别在更行各业有着广泛的应用:对于各类App,特别是通信和金融服务类的App基本都需要实名认证才能进行交易的以实现更过通过无纸化办理业务的企业信息化,实名认证有的是通过人脸认证,也有很多是通过身份证识别来实名认证。同时,现在越来越多的车站、海关、酒店、公安部门等也需要对身份证信息进行采集和登记来实名认证。通过OCR(Optical Character Recognition)识别技术,可以极大地提高实名认证的效率,使得用户有更好的体验。

身份证OCR文字识别主要是对身份证上的姓名、性别、地址、身份证号码和有效期等信息进行识别,将识别的结果转成文本的格式。首先,就文字检测方法而言,总体分为基于图像分割的方法和基于回归的方法。基于回归的方法主要是Faster R-CNN、SSD模型等。这种基于回归方法的文本检测方法不但性能不好、训练过程较长,而且对于拍摄效果不佳的歪曲形状的文本不能很好地处理。PSENet属于基于图像分割的方法,其能够检测任意形状的文字。尤其对于身份证这种文字位置歪曲的文本,PSENet能够达到很好的效果。

1 基于PSENet的身份证文字检测方法

本文采用PSENet文字检测算法,结合文字识别技术CRNN进行身份证图片文字识别。本文首先对从CRM系统中提取的身份证图片进行旋转、去水印等预处理,去除输入图片的噪音干扰,然后将处理后的结果传入PSENet中进行文字检测,接着用CRNN进行文字识别,最后对识别的结果进行后处理,最终得到身份证文字识别的结果。

图1

1.1 身份证图像预处理

(1)身份证图像旋转

由于身份证图片倾斜会影响检测的效果,所以首先要对身份证图片进行旋转矫正其至水平角度,经过水平矫正后的身份证图片识别效果更好。本文是利用人脸识别库dlib库[13]进行矫正:首先是找到身份证图片上的人脸,然后找到人的眼睛的特征点,由于两只眼睛在一条水平线上的身份证图片一定是水平的,所以只需要计算两只眼睛的倾斜的角度,然后根据眼睛倾斜的角度来确定旋转的角度。

(2)身份证图片水印去除

在身份证图片的主对角线上打了“仅供****使用”的字样,这八个字符遮挡了身份证中的部分信息,对后续模型识别造成干扰,所以本文首先对原始身份证图片进行去水印操作。本文采用SIFT(尺度不变特征检测器)算法[14]和FLANN算法[15-16]对身份证图片进行去水印。SIFT算法具有良好的光照稳定性,同时,其还具有视角、旋转、尺度、仿射的特性。首先要构造要去除的水印的模板,然后通过CV2.SIFT()方法得到身份证图片的特征信息点和水印模板的特征信息点,根据里面特征信息点找出身份证和身份证模板的位置。最后,根据其位置可将水印去除。

1.2 身份证图像检测

对于身份证文字检测,本实验采用文字检测算法PSENet[1]进行检测。PSENet是在2018年Shape Robust Text Detection with Progressive Scale Expansion Network中提出的一种图片文字检测算法,PSENet在各项文字识别比赛中都得了不错的成绩,其主要是用来解决其他文字检测算法存在的文字检测不准确、文字检测遗漏、文字间距离较近无法分开识别、弯曲类本文无法识别和文字距离较近识别错误的问题。PSENet是一种渐进式网络,其能有效对不同“稠密”程度的问题进行准确分割,把每一块文本分成不同大小的区域,然后对这些小的区域进行检测,这种渐进式的网络能有效地解决这种问题,而且这种基于网络分割的算法对于任意角度拍摄的身份证图片都能准确定位,同时,对于相邻文本实例也能较好的识别。

PSENet文字检测的流程分为特征提取、特征融合、像素分类和文字后处理得到检测结果,如下图(图片来源于PSENet)详细实现流程如图2。

图2 PSENet实现流程

(1)首先,用ResNet提取4层特征P2,P3,P4,P5进行提取,得到4层特征图;

(2)将得到的特征图进行融合,得到特征图F,通过下面方式进行融合:

融合公式中,“||”是concatenation连接操作,分别采用2倍、4倍、8倍的方式进行上采样;

(3)将上一步得到的特征图作为3×3的卷积的输入,得到256个通道数的特征图,再以此特征图为1×1的卷积层中,得到Sn,Sn-1,…,S1,总共n个图像分割的输出结果;

(4)通过PSENet后处理算法得到文字检测的结果。

本文采用liuheng92在GitHub上开源的tensor⁃flow_PSENet项目[3],该项目基于PSENet算法[1]进行训练,并且采用PSENet提供的参数作为训练参数,训练数据采用ICDAR 2015数据集[7]和ICDAR 2017数据集[7]。

如图3-图6是PSENet对身份证图片检测的结果(身份证图片已进行过打码脱敏处理),PSENet对于身份证要素信息基本都能检测到,第一张图片里面的姓名、性别、民族、住址、出生、公民身份证号码都得到准确的检测。

1.3 基于CRNN的身份证文字识别方法

本文首先尝试通过Tesseract[2,9]进行文字识别,由于Tesseract是基于模板的文字识别算法,其对于身份证文字识别错误率较高,特别是对于身份证号码这类的数字识别效果不甚理想。CRNN[4]不仅能够解决身份证地址不定长识别问题,还能结合CNN和RNN分别进行特征提取和字符序列的推理任务。对于其他算法而言,CRNN有着明显的优点:CNN在输入网络之前需要进行序列PADDLE,而CRNN不需要,它能够对不同长度的待识别序列进行识别。同时,由于CRNN参数不多,所以通过CRNN训练来的模型体积很小,这样,训练好的模型部署在普通的CPU机器上即可得到很高的性能效果:模型对于身份证的识别效率得到很大的提高。CRNN在很多场景中的识别都得到了不错的效果,所以本文采用CRNN对PSENet检测到的文字进行识别。

图3

图4

图5

图6

CRNN算法是华中科技大学白翔老师在2015年在An End-to-End Trainable Neural Network for Imagebased Sequence Recognition and Its Application to Scene Text Recognition[6]提出的一种基于CNN、CTC、BiLSTM方法组合在一起的文字识别算法,其对于特定场景的文字识别效果较好。本文以身份证图片文字识别为场景,通过CRNN训练识别模型对身份证上的姓名、性别、民族、出生日期、住址和身份证号码要素进行识别。

为了验证CRNN的效果,本文结合使用YOLOv3+CRNN[11]、CTPN+CRNN[12]、CTPN+DenseNet+CTC[12]组 合方法进行对比。

CRNN识别身份证图片文字分为以下3步:检测文字特征提取、序列预测识别、输出结果矫正处理。

(1)特征提取

为了加快训练过程中模型网络的收敛性,首先,将图片统一归一化到[230,50]大小。通过CNN网络进行特征提取。图片归一化代码如下:

import numpy as np

image =(image- np.min(image))/(np.max(image)- np.min(image))

(2)序列预测识别

由于身份证地址是不定长的序列,CRNN利用双向LSTM很好地解决了这个问题。

(3)输出结果矫正处理

对于识别的结果,通过一定的规则整合成结构化的形式。对于身份证中文信息(人名、性别、地址、民族)中具有同样读音但识别错误的问题,通过以下方式进行处理:

①首先通过构造正确文字(百家姓、中国各个省份地址等)和常见错误文字的字典映射,然后结合Python的pypinyin工具包[8]组成三元组对返回的结果进行更正,如图7中的“男”字被识别成“果”字,图8中的出生日期“1988年12越3日”被识别成“1988年12月38日”,这种日期的异常可通过设定的规则进行排查,图9识别完全正确(由于身份证信息涉及到个人隐私,所以各个图中的身份证是伪身份证号码,不作为实际实验中的真实数据)。

②对于身份证是否识别正确,通过身份证号码各个部分和省份、各个市县的对应关系的组成的词典进行判断纠正。

③对于识别出来的文字中存在歧义的问题的文字,本实验通过Word2Vec基于5000张身份证图片的标注结果训练的词向量,通过这个词向量来发现歧义字符或者单词的近似替代。

(4)生成识别结果

如图7-图10是生成的结果。

图7

图8

图9

2 实验结果及分析

本实验从CRM系统中抽取了5000张身份证图片对模型进行验证,计算出准确率、召回率和F值。为了验证检测方法的优越性,以YOLOv3+CRNN、CPTN+Tesseract、Tesseract单独检测组合作为对比组,实验结果表明,PSENet和CRNN的组合对文字识别的效果更佳:PSENET+CRNN对文字识别的算法在准确率、召回率、F值方面相对于其他的算法及组合都更胜一筹。

表1

3 结语

本文主要以身份证要素识别为场景,用PSENet和CRNN结合的方式进行文字识别。在识别之前对身份证图片通过SIFT和FLANN算法进行去水印、通过dlib人脸库对身份证图片角度进行矫正等数据预处理操作。对于本文实验后续的优化方向,主要从以下几个方面进行优化。

(1)在CRNN的后续识别过程中加入attention机制,即网络中通过GRU+CNN的方式,对GRU的输出做Attention;

(2)增加对身份证图像的预处理步骤,如身份证图片腐蚀、灰度二值化、膨胀等预处理,优化训练和测试图片。

猜你喜欢
特征提取身份证文字
同步定位与建图特征提取和匹配算法研究
文字的前世今生
热爱与坚持
当我在文字中投宿
据说最近流行晒身份证,各路大神都被炸了出来
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
趣说古人的“身份证”
基于曲率局部二值模式的深度图像手势特征提取
Relationship between Interlocutors’ Choice of Speech Strategies and Their Power Strength
种出来的“逍遥居”