ICDAR(国际文档分析与识别会议)是OCR识别领域最权威的会议之一。近期,360数科在ICDAR2019-SROIE(Results - ICDAR 2019 Robust Reading Challenge on Scanned Receipts OCR and Information Extraction - Robust Reading Competition) 榜单上斩获第一。

OCR(Optical Character Recognition,光学字符识别)技术作为计算机视觉领域一个重要分支。其主要包括三大方面,文本检测、文本识别和视觉信息抽取。文字检测是通过OCR算法定位图像中文字,一般是通过四边或者矩形框表示文字的位置。文字识别是通过识别算法或者模型,将给定的文字片段图像中的文字通过字符串的形式转写出来。而视觉信息抽取则是将图像中人们定义的关键信息抽取出来,比如姓名,性别,电话号码等。360数科希望通过分享在文本识别和语言纠错方面的探索和总结,能对业界带来一些帮助或启发。

  1. SROIE2019赛事介绍

在ICDAR2019 Robust Reading Competitions的6个赛道上[1~6],SROIE2019更关注商超小票文本行检测、识别和信息抽取,这也是OCR领域中目前的难点所在,ICDAR 竞赛因其极高技术难度和强大实用性,一直是各大科研院校、科技公司的竞逐焦点,吸引国内外众多队伍参赛。

1.1 赛事介绍

SROIE2019分为三个子任务:文本检测(要求在原图中给出文本区域的位置坐标)、文本识别      (在给定的文本区域裁剪图基础上,将其中的文字内容正确识别出来)、视觉信息抽取(抽取识别出的文本行中的关键信息,比如价格、日期等)。本次比赛我们专注于SROIE中的文本行识别任务,其评价指标采用F1 score评价模型性能。F1 score是召回率Recall和准确率Precision的调和平均值,这三者的计算方式如公式(1) (2) (3)所示。

其中,TP,FP,FN分别表示True Positive,False Positive以及False Negative。TP,FP,FN的界定是基于识别出来的文本行与给出来的GT逐个单词比较,完全正确判定识别正确。SROIR文本识别任务数据集包含33626张训练集和19385张测试集,其中训练集的标注格式是给出给定文本行图像及对应的文本,如图1所示[1]

图1 训练集数据样张

1.2 赛事难点

  1. 文本行字体模糊不清。官方给出的比赛数据集,均来自商超结算小票扫描图像,由于小票均为机打且存放时间过长,导致扫描出来的文本行存在较为严重的磨损和缺失,字体笔画不完整等情形,这给我们OCR识别算法带来很大挑战。
  1. 文本行图像出现弯曲。给出的文本行图像中出现较大比例的弯曲,现今主流文本行识别算法对水平文本识别较为鲁棒,弯曲文本行识别是OCR识别业内难点。
  1. 标注歧义。给出来的文本行在对应的文本图像中根本不存在、空格标注错误以及形近字标注错误,这给算法的泛化性带来了很大的冲击。
  1. 技术方案

算法,数据和算力是推动深度学习往前演进的三驾马车,本小节我们分别就上述三大块进行详细介绍,以及针对1.2提到的赛事难点提出我们的解决方案。针对SROIE中的文本行识别,首先我们采用CRNN[7]技术方案,并对CRNN中的Encoder和Decoder部分做了大量分析和比较实验,得到了一个非常不错的baseline模型。其次,针对本次文字模糊不清问题,我们生成了近5000W的数据集并在该数据集上训练得到一个预训练模型,基于该预训练模型进行finetune,模型大幅提升了5.4%。最后针对文本行弯曲问题我们提出了基于tps+unet自学习的预处理模块,模型进一步提升了2.6%。通过以上技术方案的优化我们最终提交的成绩中Recall,Precision和F1 Score分别达到了97.68%97.79%97.74%,这3个评价指标均排名第一。此外我们还在语言纠错模型、loss和训练策略的选择上进行了一些方案的探索,给最终模型效果带来了一定的提升。

2.1 CRNN模型简介

图2 CRNN架构图

对于文本识别模型,我们参照CRNN将模型的主体分为了两个部分。分别为对图像数据进行特征编码的Encoder(对应上中的CNN层)以及对文本序列进行解码的Decoder(对应上图中Recurrent Layers和Transcription Layers)。

对于Encoder,我们试验了当前OCR技术中主流的MobileNet[8],EfficientNet[9],ResNet[10]等。最终我们选择了在表现与参数量方面都出色的ResNet并对不同层的ResNet进行了实验。

对于Decoder,其可进一步分为对图像切片序列到文本序列进行转换的部分与对文本序列进行解码输出的部分。对于第一部分,我们实验了当前主流的序列模型,如Transformer[11],LSTM[12]等。最终,我们选择了在表现与稳定性方面都更为出色的BiLSTM[13]。不同于普通的LSTM,BiLSTM可以捕捉序列双向的文本信息,该特性与本次比赛数据所呈现出的富有语义的特点相吻合。

对于Decode的第二部分,我们实验了CTC[14]与受时下热门的Transformer等模型的启发所推出的Attention[15]这两种方式。通过实验结果,我们发现了CTC在长文本情况下的表现较为出色,而Attention对于短文本的处理表现得更为优异。针对本次比赛数据文本长度分布方差大的特点,我们分别尝试了CTC与Attention两种模型。

2.2 模型优化

2.2.1 数据预处理

本次比赛的数据为文本行图像,其中每条数据的尺寸都有所不同。为此,我们对所有图像的尺寸进行对齐以保证模型输入的一致性。通过对整体数据集的尺寸分布进行分析,我们实验了不同的图像宽高以及Resize和Padding两种不同的对齐操作。最终采用Padding对齐方式,模型的F1 score提升3.2%。

2.2.2 模型前置预处理模块

本次比赛的图像数据具有模糊,对比度低等特点。为此,我们通过对图像进行增强以保证网络输入图像的清晰性。我们选择使用U-Net[16]网络以自动地学习出适应于整体模型的图像增强方式。通过与传统的图像显著化以及超分辨率网络等方法的对比试验,采用的U-Net能自适应的学习出适合网络学习的图像增强方式。

图3 U-Net示意图

此外,本次比赛的部分图像在文本行处呈现出了倾斜的特质。相较于水平文本,倾斜文本的识别更具有挑战性。针对这一情况,我们采用了针对倾斜文本进行处理的TPS网络[17]。该网络可以预测出TPS矫正所需的K个基准点,并基于基准点进行TPS变换生成采样网格,最后对采样网格进行双线性插值,达到矫正文本的目的。

图4 TPS示意图

最终,输入图像数据在经过了U-Net自适应增强和TPS的矫正后,模型F1 score提升2.6%。

2.2.3 loss选择

针对文本识别任务形近字很难识别出来的问题,如"0"和"O"。我们采取了Center Loss[18],该损失函数可通过缩小各分类编码与其所属类别中心的距离以更好地对相似的类别作出区分。使用Center Loss后,模型F1 score提升0.6%

2.2.4 优化器选择

如上文所述,文本行识别模型由多个部分组成,同时每个部分的学习任务从数据领域(图像/文本)到数据格式(单条/序列)都有较大的差别。为此,我们选用了自适应的优化器Adadelta[19]来解决。在模型使用Adadelta训练到收敛后,在冻结了图像处理的Encoder参数的情况下,使用收敛较快的Adam[20]对Decoder部分的参数进行进一步的训练。使用上述策略后模型F1 score提升0.3%

2.3 超大规模数据集预训练模型训练

本次比赛中我们除了使用官方给出的33626张训练集外,还通过对各种字体,各个语料类别(数字/名称/语句)以及各个图片风格(磨损/倾斜/划线)的模拟,生成了数据集5000万张,使用20张V100显卡进行分布式训练,基于该预训练模型进行finetune,模型F1 score得到了大幅提升(5.4%),这也是本次比赛我们取得冠军的关键。

2.4 语言纠错模型

首先,我们融合训练attention模型和ctc模型。对于置信度较低的结果,我们认为识别错误的可能性较大,需要使用语言模型对其纠错。通过2.5的badcase分析我们可以看出,除了空格识别错误外,还有约56%的其它错误。因此我们额外训练了一个不含有空格的attention识别模型,并使用该模型的识别结果替换原有融合模型置信度较低的识别结果,尽可能避免空格对识别的干扰。然后,我们对soft-masked bert[21]进行了拓展,在Bi-GRU[22]错误检测网络中除了预测每个字符为错别字的概率外,还额外增加了该字符后需要添加字符的概率。若预测为错误,我们会根据概率将该字符的embedding与<mask>的embedding进行线性组合。若预测为添加,则会在该字符后直接添加<mask>的embedding。在bert纠错网络中,我们添加了<null>标签用于标识需要删除的字符。最后,我们基于badcase的分析生成了100万的训练数据,使用上述策略后,F1 score提升了0.7%

图5 soft-masked bert示意图

2.5 badcase分析

通过采用2.1~2.4的策略,我们的模型已经有了很大的提升。通过对验证集上的badcase分析,发现主要有如下几种:空格识别错误、等长样本识别错误和不等长样本识别错误。各错误占比情况如图6,其中空格识别错误占比达到了44%,其余两种错误分别是等长和不等长错误。以下对上述情形分别介绍并给出我们的解决方案。

图6 badcase分布图

第一,空格识别错误即模型没有将空格识别正确或者我们空格识别成其他字符,如下图。针对该情形我们人为地为语料赋予了很多空格。同时,为了解决空格距离的主观性,我们在往语料中插入空格时使用了不定长的空格以让模型学会对空格距离的把控。此外,我们统计了模型预测空格错误结果中空格前后的字符分布,并根据该分布控制空格在语料中插入的位置。

图7 空格识别示例

第二,等长错误即模型识别出来的结果与GT等长,但是存在部分字符识别错误情形,占比达总识别错误的33%,这类错误主要还是集中在形近字很难正确识别情形,如下图。GT为“1 Small Cone”,我们的模型识别为“1 Small C0ne”。为了解决这类成对的字符预测错误,我们统计了字符集合中常见的难区分字符对以及我们的模型所预测错误的字符对。通过成对的形式,我们将一条语料中的部分字符替换为其难分字符对中的字符,如"a0c"与"aOc",并将替换前与替换后的语料都加入我们的数据集中。通过成对的加入难区分字符语料,我们的模型预测结果大幅减少了字符分错的情况。此外,我们发现由于本次数据的文本行在裁剪时左右留白较少,这导致模型预测结果容易在开头与结尾处出错。为此,我们在选取替换字符时会加大开头与结尾位置的权重。

图8 等长识别错误

第三,不等长错误即模型识别出来的结果与GT不等长。这里面主要集中在标注错误、文本行过长和样本极不均衡导致。针对文本行过长问题,我们对部分语料选取少量字符进行人为的重复并输入到模型训练,以此让模型获得一定的去重能力。针对类别不均衡问题,我们在生成语料抽取字符时,对低频字符赋予了更大的权重,高低频字符的出现比率提升到了10:1,更符合实际环境下的语料情况。

  1. 总结与展望

计算机视觉在金融领域的应用主要包括人脸识别、活体检测、OCR、AI数字人和图像篡改等。通过本次挑战赛在某种程度上验证了我们OCR算法的有效性,以及对我们现有算法进行查漏补缺。目前OCR在360数科内部落地的业务场景主要包括学历认证、执业证书认证、票据识别、行驶证识别、驾驶证识别和营业执照等,另外我们还针对上述业务场景开发了配套的图像反欺诈识别算法。展望未来,计算机视觉团队将持续跟进业内最新动态以保持技术的先进性,来更好的服务公司业务团队。

  1. 引用

[1] Huang Z, Chen K, He J, et al. Icdar2019 competition on scanned receipt ocr and information extraction[C]//2019 International Conference on Document Analysis and Recognition (ICDAR). IEEE, 2019: 1516-1520.

[2] Y. Sun, J. Liu, W. Liu, J. Han, E. Ding, “Chinese Street View Text: Large-scale Chinese Text Reading with Partially Supervised Learning”, in Proc. of ICCV 2019.

[3] Ali Furkan Biten, Ruben Tito, Andres Mafla, Lluis Gomez, Marçal Rusiñol, Ernest Valveny, C.V. Jawahar, Dimosthenis Karatzas, "Scene Text Visual Question Answering", ICCV 2019.

[4] C. Chng, Y. Liu, Y. Sun, et al, “ICDAR 2019 Robust Reading Challenge on Arbitrary-Shaped Text-RRC-ArT”, in Proc. of ICDAR 2019.

[5] Zhang R, Zhou Y, Jiang Q, et al. Icdar 2019 robust reading challenge on reading chinese text on signboard[C]//2019 international conference on document analysis and recognition (ICDAR). IEEE, 2019: 1577-1581.

[6] Nayef N, Patel Y, Busta M, et al. ICDAR2019 robust reading challenge on multi-lingual scene text detection and recognition—RRC-MLT-2019[C]//2019 International conference on document analysis and recognition (ICDAR). IEEE, 2019: 1582-1587.

[7] Shi, Baoguang, Xiang Bai, and Cong Yao. "An end-to-end trainable neural network for image-based sequence recognition and its application to scene text recognition." IEEE transactions on pattern analysis and machine intelligence 39.11 (2016): 2298-2304.

[8] Howard A G, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.

[9] Tan M, Le Q. Efficientnet: Rethinking model scaling for convolutional neural networks[C]//International conference on machine learning. PMLR, 2019: 6105-6114.

[10] He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[11] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[J]. Advances in neural information processing systems, 2017, 30.

[12] Graves A. Long short-term memory[J]. Supervised sequence labelling with recurrent neural networks, 2012: 37-45.

[13] Zhang, Shu, et al. "Bidirectional long short-term memory networks for relation classification." Proceedings of the 29th Pacific Asia conference on language, information and computation. 2015.

[14] Graves A. Connectionist temporal classification[M]//Supervised sequence labelling with recurrent neural networks. Springer, Berlin, Heidelberg, 2012: 61-93.

[15] Sun, Chao, et al. "A convolutional recurrent neural network with attention framework for speech separation in monaural recordings." Scientific Reports 11.1 (2021): 1-14.

[16] Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-net: Convolutional networks for biomedical image segmentation." International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015.

[17] Shi, Baoguang, et al. "Robust scene text recognition with automatic rectification." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[18] Wen, Yandong, et al. "A discriminative feature learning approach for deep face recognition." European conference on computer vision. Springer, Cham, 2016.

[19] Zeiler, Matthew D. "Adadelta: an adaptive learning rate method." arXiv preprint arXiv:1212.5701 (2012).

[20] Kingma D P, Ba J. Adam: A method for stochastic optimization[J]. arXiv preprint arXiv:1412.6980, 2014.

[21] Zhang S, Huang H, Liu J, et al. Spelling error correction with soft-masked BERT[J]. arXiv preprint arXiv:2005.07421, 2020.

[22] Wang Q, Xu C, Zhou Y, et al. An attention-based Bi-GRU-CapsNet model for hypernymy detection between compound entities[C]//2018 IEEE International Conference on Bioinformatics and Biomedicine (BIBM). IEEE, 2018: 1031-1035.

技术探秘: 360数科夺得ICDAR OCR竞赛世界第一相关推荐

  1. 华为云华中大联合实验室,夺得2019ICDAR发票识别竞赛世界第一

    近日,有"OCR领域奥斯卡"之称的ICDAR 2019公布国际票据扫描件文字识别和信息提取(SROIE)大赛结果.华为云与华中科技大学(以下简称"华中大")组成 ...

  2. 滴滴AI语音团队获国际顶尖智能对话系统竞赛世界第一

    出品 | AI科技大本营 头图 | CSDN付费下载于视觉中国 近日,在国际顶尖人工智能竞赛第九届对话系统技术挑战赛(DSTC9)中,滴滴语音和NLP技术团队参与端到端多领域面向任务型对话系统任务荣获 ...

  3. 360数科 CTO 王继平:金融 IT 变革浪潮下,360数科的技术破局

    据艾瑞咨询最新发布的<2021 年中国 Fintech 行业发展洞察报告>显示,2020年,银行.保险与证券机构的累计技术资金投入达 2691.9 亿元,预计至 2024 年将达到5754 ...

  4. 没有场景,不做单点技术输出,360数科如何做金融科技的最佳实践?

    作者 | Just 出品 | AI科技大本营(ID:rgznai100) 从互联网金融公司转变为金融科技公司,品牌升级后的360数科强化了"科技"的外衣. 在近期的首个360数科技 ...

  5. 360数科第三季度财报:输出积木式技术样板,科技业务占比提升至28%

    11月20日,360数科发布2020年第三季度未经审计的财务业绩.数据显示,360数科的科技业务占比提升至28%. 在数字科技驱动下,截至第三季度末,360数科连接近100家金融机构,累计为1871万 ...

  6. 龙争虎斗,360数科金融科技输出的强者恒强定律

    细数中国零售金融领域科技服务商,究竟哪家强?在激烈竞争与快速发展的中国金融科技服务行业中,包括传统金融机构的关联公司.传统IT公司和互联网公司等新的竞争者均在进入这个市场.作为独立的第三方金融科技平台 ...

  7. 360数科发布2020全年财报:全年收入上涨47.1%,科技为运营效率提供第一动力

    3月16日,360数科发布2020年第4季度及全年未经审计的财务报告.2020财年,360数科实现收入135.64亿元,较2019年92.2亿元增长47.1%:非美国会计准则(Non-GAAP)下净利 ...

  8. 不追逐标准化产品,360数科的一站式风控体系有何不同?

    新冠肺炎疫情无疑加速了金融行业数字化转型,竞争者不断涌入,逐渐形成由BATJ.传统银行旗下金融科技子公司.以及专注于金融机构的数字化服务公司构成的竞争格局.然而,风控始终是金融行业的核心.作为定位于中 ...

  9. 360数科张家兴:如何突破三大瓶颈,破解金融科技发展难题?

    3月6日,上海香港联会.普陀香港联会联合普陀新区联会,IFTA亚洲金融科技师学会共同举办了"沪港合作共创未来"--沪港两地金融科技线上论坛.本次活动通过沪港两地直播连线,探讨两地金 ...

最新文章

  1. hadoop-1.2.0集群安装与配置
  2. 网易云音乐刷听歌量_榆林网易云音乐粉丝量主要方式
  3. 系统调用003 系统服务表
  4. IText实现url转pdf, 解决中文字体问题
  5. keil5建立多文件的时候为什么总是出错
  6. 华为在哪发布的鸿蒙,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  7. XCTF-MISC-新手区:give_you_flag
  8. Java压缩技术(七) TAR——Commons实现
  9. 打印狗的健康值Java_嵌入式狗的JAVA之路 HTML 补课
  10. 6月9日 基于激光雷达的SLAM算法对比分析
  11. C++基础巩固getchar 和 getch区别
  12. 小米游戏本2019 I7-9750H安装黑苹果11.5 big Sur
  13. 志强:微商微信如何引流加人?
  14. Java项目服务器cpu占用100%解决办法
  15. SDJZU-墓碑上的文字
  16. Vue2.0 响应式原理 通俗易懂
  17. python数据分析入门之高效的学习路径
  18. css 手型 没生效,css各种手型集合(css禁止手型)(示例代码)
  19. GYM 101350 I. Mirrored String II
  20. 2.4G无线技术参数及行业分享

热门文章

  1. 认识HTTP以及迭代历程
  2. ARM 之 主流编译器(armcc、iar、gcc for arm)详细介绍
  3. python课堂笔记手抄图片_读书手抄报图片漂亮又简单
  4. HTML5+CSS3知识点总结(二)
  5. 河南省自考本科计算机专业需要考哪几门,河南省计算机网络技术自考本科都有哪些科目?...
  6. YDB基本使用详解(转)
  7. 中国版Salesforce「难产」
  8. .Net语言 APP开发平台——Smobiler学习日志:仿12306的APP登陆界面
  9. 第六届“图灵杯”NEUQ-ACM程序设计人赛真题重现
  10. 我写小程序像菜虚鲲——2、