写点什么

OCR 技术在携程业务中的应用

  • 2020-02-15
  • 本文字数:3606 字

    阅读完需:约 12 分钟

OCR技术在携程业务中的应用

一、概述

计算机视觉是一门研究如何让计算机“看”的科学。更进一步的说,就是使用摄像机和计算机代替人眼,让计算机像人眼一样具备对目标事物进行识别,跟踪和分析的能力。


以携程业务为例,在供应商资质鉴定,商家产品上传,产品展示等多个环节都涉及到计算机视觉技术的应用,其中包括文字识别(Optical Character Recognition,OCR)/场景文字识别(SceneText Recognition,STR),图像质量评价,智能裁剪 s 和目标检测等。


OCR 在携程业务中主要起到两方面作用。一方面是审核校验,如供应商的资质审核,对营业执照和经营许可证的信息的校验,对包含敏感词汇的产品进行自动筛选过滤等;另一方面是辅助录入,如辅助运营录入营业执照,经营许可证等信息。


本文主要介绍文字识别在携程业务中相关应用及对应解决方案。

二、OCR

OCR 技术由两方面组成,分别为文字的检测和文字内容的识别,如图 1 所示。


其中,文字检测主要有基于笔划特征的方法(Stroke Width Transform,SWT)[1]、基于稳定区域(Maximally Stable Extremal Region,MSER)[2]的方法和基于全卷积网络(FullyConvolutional Networks,FCN)和循环神经网络(RNN)相结合的方法[3],由于基于神经网络的方法对复杂背景具有较强的鲁棒性,目前已经成为文字检测的主流方法。


而文字识别则主要分为基于单个字符的方法和基于序列的识别方法,其中基于单个字符的方法有基于传统 DPM[4]特征和基于卷积网络[5]提取的特征,基于序列的则有 CTC(Connectionist Temporal Classification)[6,7]和 Seq2Seq[8]两种模式。



图 1 图像中的文字检测和识别过程

三、OCR 在携程业务中的技术方案

我们的方案也是由两部分组成的,首先是对图片中的文字进行检测,然后对检测出的文字内容进行识别。

3.1 基于深度学习的文字检测

对于携程的 OCR 场景,根据版面是否含有先验知识以及所涉及到的文本自身的复杂性,我们将 OCR 任务划分为受控场景(如营业执照,经营许可证等)和非受控场景(如产品海报,产品介绍页等)。



图 2 受控场景(左)和非受控场景(右)的图例


考虑到两种场景的不同,我们采用了不同的文本框检测方案。


由于受控场景的文字受诸多先验的约束条件约束,本身的文本复杂度较低(水平文本,文本偏转角度小等),我们选择选择通用的文本检测模型 CTPN[7]进行文本框的检测。


对于非受控场景,由于存在大量的艺术字体,以及文本的形变和文字大小的多样化等原因,该任务并不适合采用上述方法进行处理,我们选择使用 TextSnake[9]方法。

3.1.1 受控场景的文本检测

对于受控场景,我们直接使用文本检测模型 CTPN 对用户上传的证件进行文本框的检测。



图 3 基于 CTPN 模型的文本框检测结构[7]


除对模型的输入进行前期处理之外,还在 CTPN 模型的训练过程上进行改进,考虑到人工去标定样本的成本是很高的,同时为了让模型在真实环境中表现出较好的性能,我们采用由糙到精的训练步骤。


首先使用人工合成的数据进行模型的前期训练,然后再在少量真实样本数据上进行模型的精调。将 CTPN 模型运用在对营业执照的文字检测上,目前 F1 分数值能够达到 89%。

3.1.2 非受控场景的文本检测

产品海报,产品介绍页等非受控制场景,由于文本行自身的多角度(竖排),文本存在形变,字号的多样化和背景干扰等原因,在该场景下使用 CTPN 模型进行文本框定位存在着很大的难度。由于艺术字符之间的间隔松散,导致文本定位补全,这一现象对后期的文本内容识别是致命的。


为了实现高精度的文本框的定位,我们决定采用 TextSnake 作为在非受控场景下的文本框检测模型。同时,模型的训练步骤也是按照由糙到精的训练方式进行。



图 4 基于 TextSnake 模型的文本检测结构[9]


下图 5 是产品海报文字检测结果,在自然场景下进行文字检测可以达到 F1 分数值为 81%的水平。



图 5 基于文字检测模型的海报文字检测结果图


TextSnake 通过全连接网络(FCN)来估计文本的几何属性,使的模型能够以水平、多角度和弯曲的形式有效的来表示文本实例。目前,该部分服务还存在诸多不足,正在持续改进。

3.2 基于序列的文字识别模型

文本识别方法存在两种方式,分别为基于单个字符模式和基于序列模式。


其中,基于单个字符的模式需要对检测到的文本框中的字符串进行单字符分割,由于该识别模式依赖于单字符分割的结果,字符分割的结果的好坏会最终导致后期文字识别的性能。


为了能够较好的处理这一缺陷,基于序列模式的文本识别就应运而生,这一类方法并不进行单字符分割,而是将文本看成一个整体,直接对其进行识别出对应的文本内容。这样做的好处是能够很好利用文本序列本身所固有的文本上下文信息,从而避免了因为分割字符出错所带来的不可逆错误。


基于序列模式的文字识别主要有两种结构,分别是 CNN+LSTM+CTC[7]结构和 CNN+LSTM+Seq2Seq [8]结构(详见下图 6)。这两种方法的主体结构是一致的,均是采用 CNN 学习图像局部像素之间的关系,使用双向长短期记忆神经网络(Bidirectional Long Short-Term Memory,BLSTM)学习较长跨度的文本上下文关系。只有在优化网络模型参数的目标函数上存在不同,分别采用的是 CTC 和 Seq2Seq。



图 6 基于 CNN+LSTM+CTC 结构(左)[7]和基于 CNN+LSTM+Seq2Seq 结构(右)[8]


基于序列模式的文本识别是目前自然场景下文本识别任务的主要解决方案,基于序列模式的文字识别结构有 CNN+LSTM+CTC 结构和 CNN+LSTM+Seq2Seq 结构。


其中使用 CTC 损失函数的优点是收敛速度快,模型便于训练,但是训练出来的模型精度相对于 Seq2Seq 而言一般低于后者。我们参考 MERL 在语音识别中采用的方式[10],将 CTC 和 Seq2Seq 结合起来,并引入 Attention 机制,设计出一个文本识别模型。同时将模型的主体卷积网络结构进行改进,用以满足不同大小的需求。


训练阶段,大致还是和前期文本框检测模型训练过程一样,也是先将模型在人工合成的数据上进行前期模型的训练。为求模型精度在真实样本上能够表现出较好的性能,我们同样的将模型在少量真实数据集上进行精调模型。


我们将该文本识别模型与 CTPN 模型整合,对营业执照重要字段文本内容进行识别,目前在印章,反光等多种因素干扰情况下,对统一社会信用编码等的全字段识别精度能达到 85%。

四、总结

深度学习模型的训练依赖于大规模、多样化的数据。一方面人工标注成本太高,另一方面获得到的数据不能保证样本的均衡性。


合成数据在文本框检测阶段的模型训练和文本内容识别阶段都起到一个至关重要的作用,如何合成更加符合真实场景的数据用于 OCR 模型的训练是关键。此外,目前在自然场景下的服务还存在诸多不足,我们在持续改进中。


参考文献


[1] Epshtein, Boris, Eyal Ofek, and YonatanWexler. “Detecting text in natural scenes with stroke widthtransform.” Computer Vision and Pattern Recognition (CVPR), 2010 IEEEConference on. IEEE, 2010.


[2] Neumann, Lukáš, and Jiří Matas.“Real-time scene text localization and recognition.” ComputerVision and Pattern Recognition (CVPR), 2012 IEEE Conference on. IEEE, 2012.


[3]Tian Z , Huang W , He T , et al.Detecting Text in Natural Image with Connectionist Text Proposal Network[J].2016.


[4]Shi, Cunzhao, et al. “Scene textrecognition using part-based tree-structured characterdetection.” Proceedings of the IEEE Conference on Computer Vision andPattern Recognition. 2013.


[5]Jaderberg, Max, et al. “Readingtext in the wild with convolutional neural networks.” InternationalJournal of Computer Vision 116.1 (2016): 1-20.


[6]He, Pan, et al. “Reading scene textin deep convolutional sequences.” Thirtieth AAAI Conference onArtificial Intelligence. 2016.


[7]Shi, Baoguang, Xiang Bai, and Cong Yao.“An end-to-end trainable neural network for image-based sequencerecognition and its application to scene text recognition.” IEEETransactions on Pattern Analysis and Machine Intelligence (2016).


[8]Lee, Chen-Yu, and Simon Osindero.“Recursive Recurrent Nets with Attention Modeling for OCR in theWild.” Proceedings of the IEEE Conference on Computer Vision andPattern Recognition. 2016.


[9]Long S , Ruan J , Zhang W , et al.TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes[J].2018.


[10]Kim, Suyoun, Takaaki Hori, andShinji Watanabe. “Joint ctc-attention based end-to-end speech recognitionusing multi-task learning.” arXiv preprint arXiv:1609.06773 (2016).


作者介绍


袁秋龙,携程度假大数据 AI 研发团队实习生,专注于计算机视觉的研究和应用。在实习期间致力于度假图像智能化工作,OCR 问题为实习期主要做的研究。


本文转载自公众号携程技术(ID:ctriptech)。


原文链接


https://mp.weixin.qq.com/s/uMzx_U-wx94GRTQtM11d8Q


2020-02-15 17:37682

评论

发布
暂无评论
发现更多内容

使用 docker manifest 构建跨平台镜像

江湖十年

Docker Desktop docker image docker build Docker 镜像

动态资源技术JSP|Java与Html的美好相遇

浅羽技术

Java html 服务端 jsp 三周年连更

开源趣事~记给OpenHarmony提PR的那些事

Bob

开源 Open Harmony

跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

No Silver Bullet

uni-app ios 跨平台应用开发 三周年连更 web-view

全栈开发实战|Spring Boot文件上传与下载

TiAmo

Spring Boot 三周年连更 Apache Commons 文件上传下载

Java枚举和注解

timerring

Java 三周年连更

中小企业如何保障网络安全?用了这么多项目华为云其实还不错!

YG科技

热爱所有热爱

海风极客

三周年连更

Spring Boot整合多数据源实践

做梦都在改BUG

Java Spring Boot

灵活应用Nginx Map:实战经验与实用方法

小毛驴的烂笔头

nginx linux运维 Nginx实践

Java线程中的wait、notify和notifyAll解析

共饮一杯无

Java 多线程 三周年连更

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

DS小龙哥

三周年连更

一文读懂 Spring Bean 的生命周期

老周聊架构

三周年连更

SAP Emarsys 和 SAP Spartacus 的集成

Jerry Wang

SAP Spartacus 思爱普 三周年连更 Emarsys

华为云网站安全解决方案:中小型企业的云上云下安全守护专家

YG科技

IT分享丨我是如何利用华为云网站安全解决方案帮助中小型企业实现IT安全

YG科技

灵活应用Nginx Rewrite:实战经验与实用方法

小毛驴的烂笔头

nginx linux运维

IPv6域名软件

穿过生命散发芬芳

ipv6 三周年连更

“程序员”未来会失业吗 | 社区征文

BROKEN

三周年征文

尚能饭否|技术越来越新,我对老朋友jQuery还是一如既往热爱

浅羽技术

jquery 前端 Web 框架 三周年连更

华为云网站安全解决方案助力客户——构建风险全面可控的网站安全架构

YG科技

通过小程序容器技术让App实现灰度发布

没有用户名丶

华为云:网络安全愈发重要,企业该如何保障自身业务安全?

YG科技

DAYU200关闭自动息屏的几种方式

坚果

OpenHarmony 三周年连更

Springboot如何手动连接库并获取指定表结构|超级详细,建议收藏

bug菌

springboot 三周年连更

Intents ,快速完成任务的最强辅助

鼎道智联

AI

华为云网站安全解决方案:全面保障企业网络安全,助力业务稳定高效运行

YG科技

Django笔记十之values_list指定字段取值及distinct去重处理

Hunter熊

Python django distinct values

项目讲解之常见安全漏洞

越长大越悲伤

Java Web 安全

在Mac上快速体验AI作画

IT蜗壳-Tango

三周年连更

《设计模式之禅》Proxy_Pattern--代理模式

浅辄

设计模式 代理模式 三周年连更

OCR技术在携程业务中的应用_技术管理_袁秋龙_InfoQ精选文章