Press "Enter" to skip to content

58安全-证件识别之版面分析实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

导读

 

本文介绍OCR技术在58信息安全场景中的一些落地实践,主要聚焦于OCR技术中的版面分析环节。OCR任务一般包括文字检测、文字识别和版面分析三部分,版面分析是影响文字识别和信息结构化的关键环节。本文就证件/票据识别场景分享版面分析相关方法和实践经验。

 

背景

 

58涵盖的业务广泛、场景众多,多数场景涉及证件、票据、图文的识别,如房产业务线的房产证/身份证的识别,汽车业务线的行驶证/驾驶证/过户票的识别,信安/黄页的营业执照/图文识别等等。通过OCR技术可以有效地识别以上证件/票据等内容,助力业务进行身份认证、资质审核和辅助填写等工作,如图1所示,节省人力成本、提升用户体验。目前信息安全部已具备身份证、行驶证、驾驶证、营业执照、房产证等10余项OCR能力,实践了多种版面分析方法,并根据实际应用场景和痛点进行探索和优化。 本文所有图片中的人物信息均为虚拟信息 。

 

 

图 1  辅助填写示例图

 

OCR与版面分析

 

光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程,即将图像中的文字进行识别,并以文本的形式返回,如图2所示。通用的OCR仅识别图像中文字内容而不进行版面分析,识别结果以文本行形式呈现,包含文字位置和文本内容,无语义信息。

 

 

图 2  OCR 识别结果

 

版面分析通常作为OCR的一部分。它是对版面内的图像、文本、表格信息和位置关系所进行的自动分析、识别和理解的过程,是将各字段信息正确提取,提升生产效率的关键,即对图像中的文字、图表等进行结构化的过程。版面分析一方面可以获取更精确的文本行区域,提升文本行的识别精度;另一方面可以进行识别结果结构化,提取关键信息;它是证件识别中不可或缺的一环,影响证件识别整体流程的效率和识别性能。图3为版面分析后的结果。

 

 

图 3 OCR+ 版面分析识别结果

 

通常对文档类OCR的版面分析研究较多,它是将文档分为文字、表格、插图等区域,再针对不同的区域采用不同的OCR方法进行识别。本文仅讨论证件类OCR中的版面分析,有关文档类版面分析将在后续进行分享。

 

图4所示流程图基本包含了证件识别的各环节,不同的证件和方法可能会省略某些环节或颠倒顺序。

 

图 4  证件识别实现流程

 

预处理是指对图像进行去噪、二值化、增强等操作,提升图像质量;

 

证件检测是指通过目标检测等算法定位证件在图片中的区域,一般用在环境较复杂的场景或者证件区域较小的情形;

 

文字检测是指检测文字块(文本行)的所在位置和区域,该步骤可辅助后续的版面分析和文字识别环节;

 

文字识别是在确定了文本行区域后,对文本行图片进行识别,将图像信号转化为文本信息,目前常用算法是以行为单位进行识别;

 

后验校正是对文字识别的结果进行校验和修正,这里通常采用规则和语言模型进行校正;

 

版面分析的作用如上所述,获取目标区域的精确位置和结构化。一般每个证件都需要单独进行版面分析,不同的证件和场景所采用的版面分析方法也有所不同,不同的方法在鲁棒性、开发效率、耗时等方面存在差异,本文分享几种版面分析方法的实践经验。为便于直观理解,均以身份证为示例进行阐述。

 

版面分析实践

 

基于规则的版面分析

 

基于规则的版面分析不需要单独开发目标检测或者图像分割模型,直接利用通用文本检测和文本行识别模型得到全字段的识别结果,然后根据规则从中提取关键信息,如图5所示。

 

 

图5 基于规则的版面分析流程图

 

以身份证识别为例,如图6所示,经过通用OCR可以得到所有文本行的位置信息和文本内容。再通过文本内容特点和位置关系提取关键信息,例如要提取身份证号码,规则为包含17个字符且前16位全部为数字的文本行,并且该文本行在“公民身份证号码”的右侧。

 

 

图6 通用OCR识别结果

 

该方法在行程卡、机动车登记证和提车确认单识别项目中均有落地应用。表1为各应用场景最终结果的识别准确率,全字段准确率表示召回的图片中所有字段均识别正确的数量除以召回的数量,该场景加入字段校验机制,测试结果中召回率较低,准确率较高。

 

表1 基于规则的版面分析在部分证件上的识别结果

证件名称 测试集 召回率 全字段准确率
行程卡 200张 96.5% 99.5%
机动车登记证-编号 300张 95.2% 100%
提车确认单 410张 98.3% 99.3%

 

该方法的优势是开发周期短,不需要单独训练模型,只写提取关键信息的规则即可,其中行程码识别能力孵化周期为2天;

 

该方法的不足之处:

 

识别精度依赖于通用OCR能力,不便于后期优化;

 

对于内容繁杂或者包含重复文本内容的图片,规则编写逻辑复杂;

 

字段粘连或者过切分的情况会影响最终识别精度,如图6中“民族”和“汉”被文本检测算法定位到统一行,若仅按照56个民族直接匹配可能会失败;过切分是指一个字段被切分为多个字段,如图6中的“出生”字段,同样会影响规则的匹配。

 

普适性较差,针对版面较复杂或待提取的关键信息没有明显文本特征的场景,该方法不适用。

 

基于模板匹配的版面分析

 

模板匹配就是将测试图片与离线标注的参考图片(模板)进行匹配,获取测试图片中目标字段的位置,进而通过文本行识别和后验校正得到最终结果。

 

 

图7 模板标注示意图

 

模板匹配的先决条件是有先验模板信息,即在参考图片中精确标出目标区域的位置和类别标签,如图7所示;另外该方法仅适用于固定格式和固定位置的文本图片,例如身份证、行驶证等。基于模板匹配的流程图如下:

 

 

图8 基于模板匹配的版面分析流程图

 

步骤如下:

 

1.模板选取:选取清晰、正向、非畸变的证件图片作为参考图片(模板);

 

2.模板标签标注:标注目标字段的位置信息、类别标签和该字段区域内的特征点信息,如图7所示。特征点可以通过SIFT、SURF等算法获取;

 

3.获取测试图片的特征点,方法与步骤2保持一致;

 

4.特征点匹配:根据特征点匹配算法将模板特征点与测试图片特征点进行匹配;

 

5.计算变换矩阵:通过特征点的匹配关系计算透视变换矩阵M;

 

6.透视变换:利用变换矩阵M对测试图片和目标区域坐标进行透视变换,得到变换后的测试图片和各目标区域Ot;

 

7.文本行检测:通过场景文本检测算法进行证件中所有文本行的检测,得到所有文本行的位置信息T,文本检测算法可以采用DBNET、PANNET等;

 

8.文本行识别:根据目标区域Ot,在T中选取各目标字段对应的文本行L,进而通过CRNN等文本行识别算法获取最终的目标字段内容;

 

9.后验校正:对文本行识别得到的文本内容根据规则、校验算法或者语言模型进行校正,提升识别准确率;

 

该方案应用到驾驶证识别项目中,表2为基于模板匹配的版面分析方法在100张驾驶证测试集上的识别精度,该方法直接将模板中的坐标映射到测试图片,测试图片存在局部变化时,对目标区域的定位偏差较大,识别准确率不理想。

 

表2 基于模板匹配的版面分析在驾驶证上的识别结果

字段名称 竞品准确率 自研准确率
身份证号 99% 90%
姓名 99% 95%
性别 98% 98%
国籍 92% 90%
地址 50% 34%
出生日期 100% 95%
初次申领日期 99% 98%
准驾车型 99% 92%
有效起始日期 95% 93%
有效截止日期 98% 95%

 

该方法的优势是开发效率高,不需要单独训练模型,人工标注模板即可,适用于版式严格固定不变且证件内部不存在畸变的场景;

 

不足:

 

模板匹配只适用于版式单一的证件,若版式类型过多,则逻辑非常复杂;

 

特征点提取耗时较高,识别速度慢;

 

当图片质量较差或存在逆光时,特征点容易丢失,导致模板匹配失败;

 

鲁棒性较差,当证件出现形变、字段偏移等情形时,提取的目标区域误差较大。

 

基于目标检测的版面分析

 

证件图片中每个字段往往存在基准区、候选区和目标区,如图9所示。本文定义红色区域为基准区,绿色区为候选区,蓝色区域为目标区。其中候选区域是根据基准区域和经验估计所得,目标区由候选区优化所得。

 

 

图9 身份证字段区域示意图

 

各字段基准区的文字内容和外观样式固定,且候选区与基准区的相对位置固定不变。可以利用目标检测和位置关系实现版面分析。具体流程如图10所示。

 

 

图10 基于目标检测的版面分析流程图

 

 

通过目标检测定位各字段的基准区A,可以采用场景的通用目标检测,如SSD、YOLO、RetinaNet等;

 

根据不同字段的位置关系计算图片的角度θ,根据θ将图片旋转为正向,比如可以计算“姓名”和“性别”两个字段中心点连线与竖直方向的夹角来获取θ;

 

根据经验配置每个字段基准区与候选区的位置关系R,根据基准区A与位置关系R获取候选区H,此处配置候选区应尽量留出空余,避免信息丢失;

 

步骤3获取的候选区是粗粒度的,包含较多冗余,需要通过灰度投影或坐标回归模型进行细粒度优化,得到精确的候选区,即字段目标区;

 

通过以上4个步骤即可完成版面分析,最后是文本行识别和后验校正环节。

 

 

该方案成功应用到身份证、行驶证识别项目中,表3为基于目标检测的版面分析方法在1000张身份证测试集上的识别精度。

 

表3 基于目标检测的版面分析在身份证上的识别结果

字段名称 竞品准确率 自研准确率
姓名 98% 98.7%
性别 99.5% 99.4%
民族 99.5% 99.3%
出生日期 99.4% 99.3%
地址 96.2% 96.3%
身份证号码 99% 98.7%

 

该方法的特点如下:

 

优势:

 

相比模板匹配算法而言,该方法对光照、图片质量差、畸变等情况鲁棒性较高,通过目标检测方法进行字段基准区定位召回率和准确率较高;

 

候选区优化环节可以通过坐标回归模型或灰度投影方法获取更精确的目标区。

 

不足:

 

通用目标检测算法只能输出水平矩形,当证件存在小角度倾斜时,字段基准区的检测结果不够精确,直接计算候选区误差较大,如图11所示。需先进行图片角度矫正,然后进行基准区二次定位;

 

 

图11 证件倾斜时的定位与矫正效果

 

版面分析包括目标检测、图片矫正、二次定位、候选区优化等多个环节,逻辑复杂,耗时较高,存在累积误差;

 

开发周期长,需训练多个模型,开发成本较高;

 

基于图像分割的版面分析

 

基于目标检测的版面分析存在小角度误差和环节冗长两个弊端,我们针对这两个问题进行了流程和算法的优化。第一,通过图像分割算法实现字段区域的精确定位,避免了小角度倾斜时产生的误差;第二,直接通过图像分割算法定位字段目标区,省去二次定位和坐标回归等环节。如图12所示,12-A为目标检测结果,12-B为图像分割结果。经过图像分割模型后,直接输出图中各字段的基准区和目标区。

 

 

图12 目标检测与图像分割效果对比图

 

基于图像分割的版面分析逻辑简单,识别精度高,仅需要一个图像分割模型。识别流程如图13所示。图像分割模型输出的每个区域都有语义信息,如图12-B中红色区域代表“姓名”的基准区,绿色部分代表“身份证号”的目标区。根据不同字段的相对位置计算仿射变换矩阵,将图片和字段区域坐标进行仿射变换得到矫正后的图片和各字段目标区;最后通过文本行识别和后验矫正得到最终结果。

 

 

图13基于图 像分割的版面分析流程图

 

其中图像分割部分本文采用PANNET模型,如图14所示。原生PANNET用于文字检测场景,只能进行文字/背景二分类。本文在PANNET基础上增加了一个输出分支(如图14-i所示),实现多分类。对每个像素进行分类,得到图像分割特征图,进而通过连通域分析获取各字段的目标区域。训练过程的Loss分为两部分,即PANNET的原生Loss和新增分支的Multi Dice Loss。原始Loss借助Kernel和聚类思想可以很好的将不同实例分割开,新增Loss通过多分类学习不同字段的语义信息。

 

 

图14 基于PANNET的图像分割网络模型

 

该方案成功应用到营业执照、汽车临牌和过户票首页的识别项目中,精度较高。表4为基于图像分割的版面分析方法在各应用场景测试集上的识别精度。

 

表4 基于图像分割的版面分析在各证件上的识别结果

证件名称 测试集 召回率 全字段准确率
临时行驶车号牌 245张 94.7% 99.1%
二手车过户票 299张 94% 98.2%
机动车注册登记证 300张 95.3% 100%

 

该方法的优势:

 

利用图像分割算法,字段区域定位更精确,适用于有角度倾斜的情形;

 

直接预测目标区,省去灰度投影和坐标回归等环节,逻辑简单;

 

不足:字段相邻较近时,可能出现粘连的情况,需对分割结果进行优化。

 

对比实验

 

以上介绍了四种版面分析方法的实现流程和在业务中的落地效果,根据场景的版面复杂度、精度和研发周期等要求选择不同的方法。目前基于图像分割的方法精度最高,适用于对精度要求比较高的场景,基于规则的方法开发周期最短,适用于快速孵化的情形。

 

本文以临时行驶车号牌为例,进行了四种版面分析方法的对比试验,图15为各方法在某测试图片上的实验效果。基于规则的方法依赖通用的文本检测,产生粘连情况,导致识别出错;基于模板匹配的方法由于该图片字段打印存在偏移,导致匹配结果存在偏差;基于目标检测的方法是先定位红框的基准区域,然后通过先验知识在右侧区域进行目标区域的定位,因目标区域(蓝色框)与基准区粘连,导致目标区域漏掉部分信息;基于图像分割的方法直接定位目标区域,由于该方法是对每个像素进行识别,精度较高,边界定位准确。

 

 

图15 不同方法在临时行驶车号牌上的实验效果

 

表5中是在临时行驶车号牌数据集上做的对比试验。由于该证件存在字段粘连和打印偏移的情况,基于规则和基于模板匹配的版面分析方法不太适用,精度较低;基于目标检测的方法召回率较高,但由于存在打印偏移和局部角度不一致,导致检测结果存在不准确的情况;基于图像分割的方法进行像素级识别,获取精确的边缘,信息损失和冗余较少,准确率最高。

 

表5 不同版面分析方法横向对比结果

 

召回率(%) 准确率(%) 处理耗时(ms) 研发周期(周)
基于规则 92.2 76.9 取决于文本行数量 1
模板匹配 95.7 86.3 >1000 1~2
目标检测 98.6 97.1 500 6
图像分割 98.2 99.6 200 2

 

总结与展望

 

本文介绍的几种版面分析方法,是在实践过程中,根据业务需求和切实痛点朝着更准更快的方向逐步演进来的。信息安全部已研发身份证、行驶证、驾驶证、营业执照、房产证等10+项OCR能力,并建立了新证件识别能力的快速孵化流程,新能力的孵化可在一周内完成。

 

目前的版面分析方法仍然存在一些挑战,如基于规则的字段过切分问题和基于图像分割中的字段粘连问题,都会在一定程度上影响识别精度和鲁棒性。后续会尝试将目标检测和图像分割进行联合训练来解决字段粘连和过切分的问题,以及探索基于图网络解决更复杂的版面分析任务。

 

以下是部分证件识别体验界面:http://phx.58corp.com/experience

 

参考文献:

 

[1] Wenhai Wang. Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network[J]. arXiv:1908.05900v1.

 

[2] Minghui Liao. Real-time Scene Text Detection with Differentiable Binarization [J]. arXiv:1911.08947v2.

 

[3] Zbigniew Wojna. Attention-based Extraction of Structured Information from Street View Imagery [J]. arXiv:1704.03549v4.

 

[4] Baoguang Shi. An End-to-End Trainable Neural Network for Image-based Sequence

 

Recognition and Its Application to Scene Text Recognition [J]. arXiv:1507.05717v1.

 

作者简介:

 

段胜业,58同城-信息安全部-多媒体算法组,资深算法工程师,专注于CV方向的研究,目前负责内容安全、OCR和人脸识别方向

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注