基于OCR的身份证要素提取
点击我爱计算机视觉标星,更快获取CVML新技术
本文转载自一碗数据汤,为2019 CCF BDCI比赛基于OCR的身份证要素提取一等奖获奖团队技术方案分享是,不仅有方案,还开源了代码,非常值得相关同学参考!
基于OCR的身份证要素提取
赛题信息
出题单位:兴业银行
赛题类型:第一赛道-算法题
技术方向:分类预测, 数据挖掘
赛题背景
市面上的身份证识别模型,尚不能满足银行质量参差的影像识别需求,一个具备强抗噪声干扰能力的OCR模型有着极高的商业价值。
赛题任务
根据训练数据,设计针对商业银行身份证识别的OCR系统,识别身份证中姓名、地址、身份证号码和身份证有效日期等信息。
团队信息
团队名称:天晨破晓
成员介绍:
苗文强:队长,北京邮电大学, 信息与通信工程&研一。
蒋明智:队员,北京邮电大学, 信息与通信工程&研一。
张松岩:队员,同济大学, 计算机技术&研一。
程鹏:队员,北京邮电大学, 计算机技术&研一。
比赛经验&干货分享
代码链接:
代码已经开源到github,欢迎star:
https://github.com/Mingtzge/2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement
比赛内容分享:
本赛题的任务是准确识别出身份证中包含姓名、出生日期、地址、签发机关等在内的多个关键信息,然而赛题所提供的训练集数据中,图像在亮度、清晰度等方面差别很大,初赛和复赛分别添加不同样式的水印。上述内容都对关键信息的提取带来了巨大的挑战。
我们的系统采取了将传统计算机视觉算法与深度学习方法相结合的方案,通过模板匹配、腐蚀膨胀、二值化等传统的方法,从原始不规则的数据集中得到规则身份证图片的切片,简单快速,效果出色。接着规则的身份证图片输入到去水印模块中,去除水印带来的干扰。
然后将处理后的图像输入到文本识别模块中,对各个文本元素进行识别。为了进一步提高识别的准确率,最后将识别的结果输入到文本纠正模块中,对识别出错的文本信息根据事先设定的规则进行最大程度上的纠正,输出最终识别的结果。
去除水印的过程在一定程度上可以看做是图像恢复的工作,而生成对抗网络能够有效处理这类任务。
我们采用条件生成对抗网络来完成去除水印的工作,生成器输入带水印的图片,生成去除水印之后的图片,判别器对生成不带水印的图像和真实不带水印的图像进行真伪的判别,输入原始带水印的图像作为条件约束,通过判别器和生成器之间的对抗训练,提高生成器的能力,改善去除水印的效果。
最终去水印的效果如图所示,可以看到我们的去水印模块在不同亮度、模糊程度、透明度的图像上都有非常出色的表现。即使一些图片人眼无法识别出被遮挡的文字内容,我们的模型也依然能够很大程度上恢复出被遮挡的信息,大大减小了文本识别的难度。
文本识别的模型采用的是CRNN。我们的识别模型可以识别6030个字符(包含汉字、部分标点、阿拉伯数字),由于训练出一个鲁棒的模型需要大量数据,因此训练过程中使用了生成图片用于训练,同时在训练过程中随机调整图片亮度、对比度,达到数据增强的效果。
身份证上很多信息都有着明确的组成格式要求,如果能够充分利用这些先验条件,即使一些文本识别出错,我们也能够将其纠正,得到正确的结果。
我们的文本纠正模块采用了规则纠正法和最大字符匹配法,规则纠正法利用了身份证中不同关键信息的冗余,比如身份证号码中包含出生年月日信息,前六位包含省市县三级行政区域的信息,可以用来与住址,签发机关相互纠正;民族信息使用相近字来纠正,在这个纠正过程中,我们搜集了全国的行政区号,签发机关,具体地址信息(具体到村级),用于辅助纠正。而对于性别和民族的识别结果,则通过最大字符匹配法进行纠正。
我们提出的文本识别方案识别准确率高,各个模块之前相对独立,灵活性好,即使更换不同的文本识别场景,依然能够快速部署,完成相关的识别任务。此外,我们的方案抗干扰的能力好,训练的方法通用,更换其他样式的水印干扰,水印去除模块也能够有效完成去干扰的工作。如果使用更出色的去模糊方法,文本识别的准确率还能有望得到进一步的提高。
感谢天晨破晓团队的分享
OCR交流群
关注最新最前沿的文本检测、识别、文本风格化技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)
(请务必注明:OCR)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。
(不会时时在线,如果没能及时通过验证还请见谅)
长按关注我爱计算机视觉