Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

360数科夺得OCR国际技术竞赛冠军,商超小票文本行识别如何做到最佳?

在 OCR 识别领域最权威的会议之一 ICDAR(国际文档分析与识别会议)上,360 数科在 ICDAR2019- SROIE 榜单上斩获第一。
图片
榜单地址:https://rrc.cvc.uab.es/?ch=13&com=evaluation&task=2

作为计算机视觉领域一个重要分支,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 赛事难点

该赛事主要有以下几方面的难点:

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

2 技术方案

算法、数据和算力是推动深度学习往前演进的三驾马车,本小节我们分别就上述三大块进行详细介绍,以及针对 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,更符合实际环境下的语料情况。

3 总结与展望

计算机视觉在金融领域的应用主要包括人脸识别、活体检测、OCR、AI 数字人和图像篡改等。通过本次挑战赛在某种程度上验证了我们 OCR 算法的有效性,以及对我们现有算法进行查漏补缺。

目前 OCR 在 360 数科内部落地的业务场景主要包括学历认证、执业证书认证、票据识别、行驶证识别、驾驶证识别和营业执照等,还针对上述业务场景开发了配套的图像反欺诈识别算法。展望未来,计算机视觉团队将持续跟进业内最新动态以保持技术的先进性,来更好的服务公司业务团队。

4 引用

[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.
理论
1
相关数据
IBM机构

是美国一家跨国科技公司及咨询公司,总部位于纽约州阿蒙克市。IBM主要客户是政府和企业。IBM生产并销售计算机硬件及软件,并且为系统架构和网络托管提供咨询服务。截止2013年,IBM已在全球拥有12个研究实验室和大量的软件开发基地。IBM虽然是一家商业公司,但在材料、化学、物理等科学领域却也有很高的成就,利用这些学术研究为基础,发明很多产品。比较有名的IBM发明的产品包括硬盘、自动柜员机、通用产品代码、SQL、关系数据库管理系统、DRAM及沃森。

https://www.ibm.com/us-en/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

光学字符识别技术

光学字符识别是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。在这个过程中,手写的、打印的等多种类型的图像被转换为机器编码的文本,这些含有文字信息的图像可以是扫描而来,也可以是场景文本——如照片中出现的广告牌文字 (scene text),或者叠加在图像上的文字 (overlay text)——如电视节目中常见的字幕等等。光学字符识别是一种将印刷文本数字化的常用方法,可以对其进行电子编辑、搜索、更紧凑地存储、在线显示,并用于认知计算、机器翻译、(提取)文本到语音、 关键数据和文本挖掘。 OCR是模式识别人工智能和计算机视觉领域的一个重要的研究领域。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

自适应增强技术

AdaBoost是最优秀的Boosting算法之一,它能够将比随机猜测略好的弱分类器(weak learner)提升为分类精度高的强分类器(strong learner)。AdaBoost对每一个训练样本都分配一个权重,每次迭代之后都会对权重进行调整,被正确分类的样本权重会被降低,被错误分类的样本权重会被提高。也就是说,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高,更有可能被选中进入下一个训练集中,让后面的弱分类器重点关注之前表现不好的样本上。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上,从而将多个弱分类器组合为一个强分类器。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

双线性插值技术

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。 双线性插值作为数值分析中的一种插值算法,广泛应用在信号处理,数字图像和视频处理等方面。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

图像增强技术

图像增强技术用于增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。它通过有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

信息抽取技术

信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。

CapsNet技术

Hinton 等人实现了一个简单的 CapsNet 架构,该架构由两个卷积层和一个全连接层组成,其中第一个为一般的卷积层,第二个卷积相当于为 Capsule 层做准备,并且该层的输出为向量,所以它的维度要比一般的卷积层再高一个维度。最后就是通过向量的输入与 Routing 过程等构建出 10 个 v_j 向量,每一个向量的长度都直接表示某个类别的概率。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

模型优化技术

像卷积神经网络(CNN)这样的深度学习模型具有大量的参数;实际上,我们可以调用这些超参数,因为它们原本在模型中并没有被优化。你可以网格搜索这些超参数的最优值,但需要大量硬件计算和时间。改进模型的最佳方法之一是基于在你的领域进行过深入研究的专家的设计和体系结构,他们通常拥有强大的硬件可供使用。常见的简单模型优化技巧包括迁移学习、dropout、学习率调整等

暂无评论
暂无评论~