复杂背景下多证件快速识别系统的研究与实现
2019-05-27刘春平李帅杰陈虎
刘春平,李帅杰,陈虎
(四川川大智胜软件有限股份公司,成都610065)
0 引言
随着社会经济和科技的发展,人们融入到各行业全球化的进程中来。出行的安全和便利需要对信息的快速精确把握。人证核验,是海关、机场、酒店、火车站、汽车站等必须进行的过程。人证核验,就是要精确核验持证人与证件信息是否一致。传统的人证核验,需要安排专业的核验员进行挨个核验,这样效率很低,不利于大批量的核验。例如在中国春运期间的火车站检票,若是传统的核验,将浪费很多时间,严重影响春运效率。光学字符识别(Optical Character Recognition,OCR)[1]就是利用OCR技术对扫描、拍照后的证件图像进行分析、识别,以获得证件上的文本信息的过程[2]。当然,现有的证件识别,要么只能在单一背景下进行,要么只能识别一种证件。复杂背景下多证件快速识别系统的研究与实现,就是要在复杂背景下,实现多种证件信息的快速精准识别后进行核验。复杂背景不受天气、灯光、背景状态限制。多证件包括:火车票、护照、身份证、港澳台通行证等。系统识别和核验的内容包括:机读码识别、证件信息识别、人脸检测与识别、二维码检测与识别、自动判别证件类型完成信息识别核验。系统设计采用的整体思路为“提取+识别”[4],根据多种证件的需求,设计完成。
本文的研究意义如下:
(1)复杂背景下,通过对输入图片的处理,能够找出待识别的区域。
(2)通过算法设计,提高识别的速度和效率。
(3)多种证件识别集成到本系统[3],可扩展。
1 系统设计
1. 1 硬件设计
基于算法设计的需要,硬件读卡器除了摄像头,还设计了白灯和红外灯。硬件部分结构简单,没有额外传感器,所有功能基于算法实现。
1. 2 软件设计
1.2.1 判断证件有无
为了在系统运行过程中减少资源浪费,在没有证件核验任务时,暂停所有后续任务,需要判断是否需要核验即是否有需要核验的证件放在读卡器上。对于这个功能需求,系统在不需要核验证件时,只开启低功耗的红外光,肉眼不可见光,用于获取读卡器窗口照片,判断有无证件放在读卡器上。
算法描述:
(1)系统启动后,首先保证读卡器上没有证件,期间开启摄像头和红外光,获取初始化图片存入image_0。
(2)获取图片image_1,开始判断是否有证件。首先对image_1与image_0作直方图的相似度判断,设定阈值A,若相似度大于A,则判断为有证件,若相似度小于A,则判断为无证件。
(3)阈值A用来排除由于环境光和读卡器位置的移动对直方图的相似度的影响。
(4)若判断为有证件,系统进入核验状态,若无证件,转到第二步。
1.2.2 判断证件类型
多证件识别,很重要的一步就是判断证件类型,然后作相对应的处理,识别与核验。
(1)判断有无机读码,若有机读码,判断机读码的行数。
(2)若两行判定为护照,若一行,判定为往来港澳台通行证。
(3)若无机读码,找到二维码,有二维码判定为火车票,没有二维码判定为港澳台居民往来大陆通行证。
如表1。
表1
1.2.3 预处理算法
在复杂背景下,输入图片的预处理很重要,决定了OCR的效果。对此,做了很多图像处理的研究和设计。
(1)为了找到证件的位置,更好地将图输入图片的文字区域、人脸、二维码区域等分离出来,系统做了第一次预处理,如下列出预处理的算法。
①通道分离:降低信息量,便于加快识别速率。
②滤波:过滤掉输入图片的噪声。
③二值化:由于彩色图像所含信息量过于巨大,在对图像中印刷体字符进行识别处理前,需要对图像进行二值化处理,使图像只包含黑色的前景信息和白色的背景信息,提升识别处理的效率和精确度。
1. 3 系统流程图
本系统的算法流程图如图1。OCR多证件读取基本算法解读:
(1)利用红外摄像头获取读卡器窗口照片,判断有无证件放到读卡器上,若有证件转到(2),若无转到(11)。
(2)送入预处理程序,灰度化,形态学变化[6],找到机读码轮廓。
(3)将证件位置摆正,如果有机读码位置,裁剪机读码位置转到(4),若无转到(8)。
(4)送入机读码识别函数,得到机读码识别结果。
(5)关闭红外开启白灯,第二次获取读卡器窗口图片,然后利用第二步的参数对图像进行摆正。
(6)人脸检测,获取人脸。
(7)将机读码和人脸信息填入对应结构体。
(8)若无机读码,关闭红外,开启白灯,对图片进行
④边缘检测:找到证件的边缘,便于切割。
⑤轮廓提取:准确切割证件。
⑥坐标检测:找到证件的坐标,作为切割标准。
(2)识别区域预处理,第二次预处理。
①光照补偿:提高前景和背景的像素差值,便于前后景的分离。
②Sobel算子:求x方向梯度,找到文本的有效区域。
③二值化:前后景分离。
④膨胀和腐蚀:提高分离效果。
⑤灰度化:减少彩色信息的复杂和干扰。
⑥形态学变换:对于证件的位置和变形引起的变形进行矫正。
⑦图像校正:便于定位识别。
⑧调整亮度和对比度:便于识别,降低误识率。
1.2.4 识别核验
调用Google的开源Tesseract OCR接口识别证件信息。经过识别后根据识别结果进行调整,例如在一般在识别的前两位是字母,如果识别为数字,则判断为识别失败,核验失败后重新获取输入信息[5]。
1.2.5 误检异常处理
误检发生时,对目标区域调整亮度和对比度再次检测,检测三次,若失败,放弃检测,重新获取输入图片获取目标新的目标图片。处理,得到二维码。
(9)将二维码裁剪,送入解析程序获得解析结果。
(10)循环(2)。
(11)循环(1)。
图1 复杂背景下多证件快速识别系统流程
2 结果测试
往来港澳台通行证:
往来港澳台通行证获取的原始图片如图2。
图2 往来港澳台通行证获取的原始图片
往来港澳台通行证识别结果如图3所示。
图3 往来港澳台通行证获取的原始图片
护照:
护照处理的原始图片如图4。
图4 护照原始图片
护照的识别结果如图5。
图5 护照识别结果图
火车票:
火车票获取的原始图如图6。
图6 火车票的原始图片
火车票的识别结果如图7。
图7 火车票的识别结果图
港澳台居民往来大陆通行证:
港澳台居民往来大陆通行证的原始图片如图8。
3 结语
本系统实现了复杂背景下多证件快速识别,利用图形图像和OCR技术,在简单的硬件条件下实现复杂系统的实现。可以识别4种常用证件,集成了多种证件识别的算法,应用广泛,效果突出。可应用于海关、机场、车站等多种场合,鲁棒性强,性能很好,还具备很好的扩展性。当然,系统还是有一些不足,需要后续工作的优化调试。
图8 港澳居民来往大陆内地通行证
港澳居民来往大陆内地通行证识别结果如图9。
图9 港澳居民来往大陆内地通行证识别结果图