基于深度学习的OCR

为了提升用户体验,O2O产品对OCR技术的需求已渗透到上单、支付、配送和用户评价等环节。OCR在美团业务中主要起着两方面作用。一方面是辅助录入,比如在移动支付环节通过对银行卡卡号的拍照识别,以实现自动绑卡,又如辅助BD录入菜单中菜品信息。另一方面是审核校验,比如在商家资质审核环节对商家上传的身份证、营业执照和餐饮许可证等证件照片进行信息提取和核验以确保该商家的合法性,比如机器过滤商家上单和用户评价环节产生的包含违禁词的图片。相比于传统OCR场景(印刷体、扫描文档),美团的OCR场景主要是针对手机拍摄的照片进行文字信息提取和识别,考虑到线下用户的多样性,因此主要面临以下挑战:

  • 成像复杂:噪声、模糊、光线变化、形变;
  • 文字复杂:字体、字号、色彩、磨损、笔画宽度不固定、方向任意;
  • 背景复杂:版面缺失,背景干扰。

对于上述挑战,传统的OCR解决方案存在着以下不足:

  1. 通过版面分析(二值化,连通域分析)来生成文本行,要求版面结构有较强的规则性且前背景可分性强(例如文档图像、车牌),无法处理前背景复杂的随意文字(例如场景文字、菜单、广告文字等)。
  2. 通过人工设计边缘方向特征(例如HOG)来训练字符识别模型,此类单一的特征在字体变化,模糊或背景干扰时泛化能力迅速下降。
  3. 过度依赖字符切分的结果,在字符扭曲、粘连、噪声干扰的情况下,切分的错误传播尤其突出。

针对传统OCR解决方案的不足,我们尝试基于深度学习的OCR。

1. 基于Faster R-CNN和FCN的文字定位

首先,我们根据是否有先验信息将版面划分为受控场景(例如身份证、营业执照、银行卡)和非受控场景(例如菜单、门头图)。

对于受控场景,我们将文字定位转换为对特定关键字目标的检测问题。主要利用Faster R-CNN进行检测,如下图所示。为了保证回归框的定位精度同时提升运算速度,我们对原有框架和训练方式进行了微调:

  • 考虑到关键字目标的类内变化有限,我们裁剪了ZF模型的网络结构,将5层卷积减少到3层。
  • 训练过程中提高正样本的重叠率阈值,并根据业务需求来适配RPN层Anchor的宽高比。

                                                     图4 基于Faster R-CNN的受控场景文字定位

对于非受控场景,由于文字方向和笔画宽度任意变化,目标检测中回归框的定位粒度不够,我们利用语义分割中常用的全卷积网络(FCN)来进行像素级别的文字/背景标注,如下图所示。为了同时保证定位的精度和语义的清晰,我们不仅在最后一层进行反卷积,而且融合了深层Layer和浅层Layer的反卷积结果

                                                  图5 基于FCN的非受控场景文字定位

2. 基于序列学习框架的文字识别

为了有效控制字符切分和识别后处理的错误传播效应,实现端到端文字识别的可训练性,我们采用如下图所示的序列学习框架。框架整体分为三层:卷积层,递归层和翻译层。其中卷积层提特征,递归层既学习特征序列中字符特征的先后关系,又学习字符的先后关系,翻译层实现对时间序列分类结果的解码。

                                    图6 基于序列学习的端到端识别框架

由于序列学习框架对训练样本的数量和分布要求较高,我们采用了真实样本+合成样本的方式。真实样本以美团业务来源(例如菜单、身份证、营业执照)为主,合成样本则考虑了字体、形变、模糊、噪声、背景等因素。基于上述序列学习框架和训练数据,在多种场景的文字识别上都有较大幅度的性能提升,如下图所示。

                                               图7 深度学习OCR和传统OCR的性能比较

 

猜你喜欢

转载自blog.csdn.net/hzwaxx/article/details/83829806
今日推荐