参考:
Dive-into-OCR
https://cloud.tencent.com/developer/article/2149967
https://cloud.tencent.com/developer/article/2136459
结构

OCR技术挑战
算法层(应用场景决定):
- 透视变换
- 尺度太小
- 文字弯曲
- 背景干扰
- 字体多变
- 多种语言
- 拍摄模糊
- 光照不足
应用层
- 海量数据要求OCR能够实时处理
- 端侧应用要求OCR模型足够轻量,识别速度足够快
OCR前沿算法
文本检测、文本识别、端到端文本识别、文档分析等等。
文本检测
文本检测的任务是定位出输入图像中的文字区域。
- 一类方法将文本检测视为目标检测中的一个特定场景,基于通用目标检测算法进行改进适配,
- 另一类是专用于文本检测的算法
目前较为流行的文本检测算法可以大致分为基于回归和基于分割的两大类文本检测算法,也有一些算法将二者相结合。
-
基于回归的算法借鉴通用物体检测算法,通过设定anchor回归检测框,或者直接做像素回归,这类方法对规则形状文本检测效果较好,但是对不规则形状的文本检测效果会相对差一些,比如CTPN[3]对水平文本的检测效果较好,但对倾斜、弯曲文本的检测效果较差,SegLink[8]对长文本比较好,但对分布稀疏的文本效果较差;
-
基于分割的算法引入了Mask-RCNN[9],这类算法在各种场景、对各种形状文本的检测效果都可以达到一个更高的水平,但缺点就是后处理一般会比较复杂,因此常常存在速度问题,并且无法解决重叠文本的检测问题







CTPN综合了上述若干种网络结构的优点,有优秀的检测效果,尤其对边框矩形的四个顶点的识别很准确,对OCR检测技术的后续发展有承前启后的意义。例如此后的SegLink算法沿用了CTPN的思想,并引入了SSD和旋转角度学习的方法,来解决CTPN遗留的多角度文本检测的问题。
基于回归的方法对相对工整(横平竖直)的书面文档文本的检测效果很好,但对各类自然场景下的文本的检测效果难以保障(例如各类弯曲形变的店铺招牌)。所以有另一类思想是源于图像分割(image segmentation)的方法来进行文本检测,即:
先从像素层面做分类,判别每一个像素点是否属于一个文本目标,得到文本区域的概率图,然后利用polygon等来绘制出这些候选区域的最小包围曲线,相当于把一堆散落的像素块像串联珍珠那样,链接到一起来形成边界框。

基于分割的方面近年优秀的成果包括2019年南京大学等组成的研究团队发表于CVPR的PSENet网络,通过渐进式的尺度扩张网络(Progressive Scale Expansion)来学习文本分割区域,其主干网络本质是ResNet,通过使用不同尺度的Kernel,预测不同收缩比例的文本区域,并逐个扩大检测到的文本区域。
PSENet的实质是边界学习方法的变体,可以有效解决任意形状相邻文本的检测问题。具体如网络结构和检测效果如上图所示。



文本识别
文本识别的任务是识别出图像中的文字内容,一般输入来自于文本检测得到的文本框截取出的图像文字区域。
文字识别技术路线主要经历三个阶段:
- 以CRNN为代表基于CNN-RNN结构的识别模型
- 基于Transformer的Encoder-Decoder识别模型
- 基于Vision-Language视觉语义融合的模型。

CRNN网络(循环卷积神经网络)是识别领域里最为经典的方法,直至今日仍然被广泛使用。CRNN网络的技术思想是**用深度卷积Convolutional来生成图像基础特征,再使用Bi-LSTM循环网络(双向长短时记忆网络,能吸收上下文语义信息)进行时序特征训练(这一步利用文本序列的前后特征能有效提升效果),最后引入CTC损失函数来实现端对端的不定长序列识别,解决训练时字符无法对齐的问题。**CRNN为代表的模型主要包含两个模块:Vision Model(视觉特征提取)和Sequence Model(文字转录)两个模块。视觉特征提取利用经典CNN方式较容易理解,而文字转录模块利用Bi-LSTM和CTC解码将视觉特征转换成文字序列特征。CRNN模型比较经典,并且在大部分场合都能取得较好的效果,使用较广。缺点是对于文字变形、遮挡等干扰很敏感,容易误识别。
基于Transformer Encoder-Decoder结构的模型,由于能更好地利用上下文信息而提升了准确率,但由于Transformer模型相对较重,在实际使用中需要考虑裁剪蒸馏等方式才能更好落地。
基于Vision-Language的模型,将视觉和语义进行融合,优点是能够获得更多更准确的语义信息,有时会有较好的效果,但通常模型更大,影响识别效率。文字识别完整流程由图像矫正、视觉特征提取、序列特征提取和预测解码组成。一般通用流程如下图所示:


文本识别一般可以根据待识别文本形状分为:
- 规则文本识别和不规则文本识别两大类。
- 不规则文本
规则文本识别的算法根据解码方式的不同可以大致分为基于CTC和Sequence2Sequence两种,将网络学习到的序列特征 转化为 最终的识别结果 的处理方式不同。

CTC解码在文字识别中是非常经典的方法,但在复杂干扰场景下会有效果问题,而基于Attention的方法对于困难样本往往能够取得较好的效果。
OCR的工程应用开发:从OCR到OCR Pro

文档结构化识别
传统意义上的OCR技术可以解决文字的检测和识别需求,但在实际应用场景中,最终需要获取的往往是结构化的信息,如身份证、发票的信息格式化抽取,表格的结构化识别等等,多在快递单据抽取、合同内容比对、金融保理单信息比对、物流业单据识别等场景下应用。OCR结果+后处理是一种常用的结构化方案,但流程往往比较复杂,并且后处理需要精细设计,泛化性也比较差。在OCR技术逐渐成熟、结构化信息抽取需求日益旺盛的背景下,版面分析、表格识别、关键信息提取等关于智能文档分析的各种技术受到了越来越多的关注和研究。
版面分析

版面分析(Layout Analysis)主要是对文档图像进行内容分类,类别一般可分为纯文本、标题、表格、图片等。现有方法一般将文档中不同的板式当做不同的目标进行检测或分割。
如Soto Carlos[16]在目标检测算法Faster R-CNN的基础上,结合上下文信息并利用文档内容的固有位置信息来提高区域检测性能;Sarkar Mausoom[17]等人提出了一种基于先验的分割机制,在非常高的分辨率的图像上训练文档分割模型,解决了过度缩小原始图像导致的密集区域不同结构无法区分进而合并的问题。

表格识别

表格识别(Table Recognition)的任务就是将文档里的表格信息进行识别和转换到excel文件中。文本图像中表格种类和样式复杂多样,例如不同的行列合并,不同的内容文本类型等,除此之外文档的样式和拍摄时的光照环境等都为表格识别带来了极大的挑战。这些挑战使得表格识别一直是文档理解领域的研究难点
表格识别的方法种类较为丰富,早期的基于启发式规则的传统算法,;近年来随着深度学习的发展,开始涌现一些基于CNN的表格结构识别算法;此外,随着图神经网络(Graph Neural Network)的兴起,也有一些研究者尝试将图神经网络应用到表格结构识别问题上,基于图神经网络,将表格识别看作图重建问题;基于端到端的方法直接使用网络完成表格结构的HTML表示输出,端到端的方法大多采用Seq2Seq方法来完成表格结构的预测,如一些基于Attention或Transformer的方法,如TableMaster

关键信息提取
关键信息提取(Key Information Extraction,KIE)是Document VQA中的一个重要任务,主要从图像中提取所需要的关键信息

KIE通常分为两个子任务进行研究:语义实体识别、关系抽取
一般的KIE方法基于命名实体识别(Named Entity Recognition,NER)来研究,但是这类方法只利用了图像中的文本信息,缺少对视觉和结构信息的使用,因此精度不高。在此基础上,近几年的方法都开始将视觉和结构信息与文本信息融合到一起,按照对多模态信息进行融合时所采用的原理可以将这些方法分为下面四种:
基于Grid的方法
基于Token的方法
基于GCN的方法
基于End to End 的方法
文档解析技术
文档解析技术
文档解析技术是智能文档处理中另外一项关键技术。
实际场景中不同类型的文档在处理中常会遇到以下问题:
电子版PDF或扫描件等文件,会丢失段落、表格等结构化信息;
版面与表格等文档结构信息如何供算法使用;
学术算法常常面对结构简单规范的文字形式,与工业真实场景存在鸿沟;
不同文档协议格式表达复杂,如何将不同类型的文档统一表示,才能够满足不同上下游任务的处理。
文档解析主要工作包括以下三个方面:
不同类型文件协议解析,例如PDF、Word、OFD等,需要映射到统一抽象的文档格式;
版面还原,识别每页各种元素,如页眉页脚、标题、段落、表格、插图、目录等;
表格解析,将表格中的信息准确还原为二维矩阵结构。
01文档格式解析技术
常见的文档格式包括Word、PDF(Portable Document Format)、OFD(Open Fixed-layout Document)等,大部分文件协议的设计都以对象树为主要结构。以PDF协议为例,下图展示PDF文件的实际内容以及文档元素对象的组织结构:

PDF格式在渲染展示上有很大优势,能在不同设备和系统环境下稳定保持渲染内容的一致性,对阅读友好,但PDF解析编辑相对困难,因为PDF协议内置对象类型有限,一些类似表格、页眉页脚等要素类型信息缺失,文字、线条、形状等要素也只包括内容、颜色、大小、位置坐标等信息,需要根据渲染的结果判断元素类型并进一步处理。
常见的优秀PDF开源库包括PDFBox、MuPDF、PDFMiner等。OFD由工业和信息化部软件司牵头中国电子技术标准化研究院成立的版式编写组制定的版式文档国家标准,类似PDF,属于我国的一种自主格式,例如OFD格式的发票目前已得到广泛使用。而基于OpenXML的Word格式docx解析起来相对容易,能够拿到包括样式在内的丰富信息,除微软官方提供的SDK外,也有很多优秀的开源项目。
02版面还原技术
版面还原技术就是分析文档中每个页面有哪些类型的元素及的各元素大小位置形状等图像信息,通常情况下根据渲染后的页面图像进行分析,因此主要使用到计算机视觉技术。版面还原技术的意义主要还是和图像、PDF等文件格式缺乏高层次文档元素对象的问题相关,例如页眉页脚在很多业务场景中需要被过滤掉,但在PDF文件中,页眉页脚只是一个单纯的文本框,仅凭文字信息不足以判断此文本框是否是页眉页脚。虽然可以利用有些规则的过滤掉页眉页脚,但规则通用性较差。除此之外,还需要划分段落、标题、目录、表格、插图等更多页面区域,文档元素类型还可能根据业务场景发生改变。
基于计算机视觉的方式有较好的通用性,和人类观察文档版面信息过程一致,通常使用基于目标检测方案和图像分割方案,两种方案各有优缺点。对于版面还原这个任务,有明确的业务属性,一个区域要么属于段落,要么属于表格或者其他类型,不会存在既是段落又是表格的情况,使用目标检测的方案,就要额外梳理重框问题。而使用图像分割的方案则不存在这个问题,从输入输出的角度更适合,但图像分割资源要求相对较高,例如基于FasterRCNN的MaskRCNN,在原模型基础上扩展了一个Mask分支,速度相对会慢一些。

图 11 基于FasterRCNN的版面还原效果

图 12 基于MaskRCNN的版面还原效果
03表格解析技术
表格是信息承载的重要方式,作为一种半结构化数据,被大量应用于文档中。对于表格信息,通常有电子格式(excel、csv、html)和图像格式两种形式,电子表格相对于图像表格,不仅能够渲染供阅读,还可以根据相关协议进行指定单元格内容的读取、修改等。此处介绍的表格解析技术主要解决图像形式表格结构内容识别问题,而不是excel这类电子表格识别问题。特别地,电子版PDF文件中的表格由于缺乏相关协议,也需要使用图像方式来解析。
表格的类型一般根据表格线是否完整也可以将表格划分成3种类型:全线表格、少线表格、无线表格三种,针对以上三种表格的解析方法也有差异。

表格解析的目标是找到文档中的所有表格区域并将表格结构还原成二维矩阵。从技术框架上看,表格解析有端到端一阶段的方式和区域检测、结构解析两阶段的方式。在我们的测试中,整体准确性上来说端到端和二阶段方法差别不大,但考虑到业务上的快速修复性,达观选择二阶段方式。
端到端方式代表性的方法有TableNet、CascadeTabNet等。
TableNet采用图像分割思路,将图片送入骨干网络,然后通过两个分支分别生成表格区域和列的mask,然后通过规则生成行,最终得到具体单元格的内容。
CascadeTabNet基于Cascade R-CNN,先检测出表格区域同时对表格类型划分(有线、无线),然后检测单元格区域,最后根据表格类型做后处理得到最终的表格结构。
这些算法在公开数据集效果不错,但因端到端难以解决具体badcase,在实际业务使用上存在一定局限性。
二阶段方式主要是表格区域检测和表格线条检测两大块。表格区域检测问题相对简单,基于目标检测或分割都可以实现,主要问题是实际业务定义差异会影响模型效果,需要在数据层面多下功夫。而表格线检测是技术重点,因为表格解析算法最终可以看作是表格线识别的问题,有了表格中所有表格线,就能还原整个表格结构,解决方法有基于传统CV的算法和深度学习算法。
基于传统CV的算法,以经典的霍夫变换为代表,优点是不需要数据标注且不需GPU资源,算法成熟稳定,对于电子版PDF表格效果很不错,但拍照扫描等场景中扭曲、光照等因素导致泛化能力一般,需要在图像预处理和后处理下很大功夫。基于深度学习的算法,如UNet,优点是对于上述扭曲、变形、光照等泛化能力强,缺点是需要大量的数据标注,计算资源也比较高。
通过使用基于深度学习的算法,能够较好解决传统算法对于图像质量要求高的问题,下面两图展示了利用分割的思想识别表格线的效果,可以看到虽然原图质量不佳,要么线条特别模糊要么整体扭曲透视较为严重,但整体解析效果较好。


信息提取技术
不同于传统纯文本实体识别,实际场景中文档信息提取挑战更大,主要有以下困难:
文字表现形式复杂,文档内有页眉页脚、表格、图片等多种文字信息表达方法,需要分别处理;
领域知识欠缺,实际文档使用词汇和行业场景高度相关,例如产品、型号等专名,需要针对专有领域数据优化模型;
信息点上下文长度跨度大,既有短文本实体信息抽取也有长上下文抽取,例如招股书,需要抽取公司名称、募集金额等短文本信息,也需要公司概况、高管基本情况等长文本信息,技术方案跨度很大;
软硬件资源限制,除单纯模型效果外,还要考虑推理时间、硬件成本这2种度量维度,需要根据实际情况灵活选择平衡。
针对以上问题,不仅需要针对具体问题一一解决,同时需要设计一个优秀的信息提取框架,在实际使用中能够灵活配置实现一种或多种信息提取工作。下文将介绍达观在相关问题解决中的经验。
纯文本抽取vs文档抽取
相对纯文本抽取,文档信息抽取有以下区别:
文档格式众多,实际场景文档类型除word等可编辑格式外,还存在PDF、jpg等不可编辑格式,从中拿到文本信息并且符合阅读顺序就很困难。本文前面介绍的文档解析技术主要解决不同格式文档文本信息提取的问题,为文本抽取打下基础。
语义上下文跨度大,除传统的信息点附近上下文信息外,还包括章节标题甚至文档类型等跨度更远的上下文信息。
高维文本问题,文字信息不光和本身的语义信息相关,也和其样式、形式(例如表格、图片)相关。
针对文档信息抽取相关研究较少,目前大部分成熟技术还是基于纯文本数据研究居多,虽然近几年多模态信息抽取、长文档信息建模也有不错的研究工作,但实际落地过程中少有系统化的成熟经验供参考,需要厂商自己开发研究。
针对文档抽取,除各类算法本身效果优化提升外,设计一个功能丰富且合理的抽取框架非常关键。
设计了一套基于微服务架构的抽取框架,通过将一个复杂的抽取任务分解成多种抽取子任务单独处理,最后再将结果合并返回最终抽取结果。

实际任务中,根据文档类型的不同,抽取中心通过推送不同抽取类型消息进入队列,下游相关抽取算法模块进行独立处理。简单的抽取任务例如对于财务报表的信息提取,抽取中心只需生成表格单元格抽取信息,并提供表格相关上下文信息。而复杂的例如招股书、债券募集说明书等长文档抽取,抽取中心需要按照字段类型进行不同抽取信息的消息分发,并提供公有上下文和各算法所需私有上下文,下游各类型抽取算法模块同时工作。上述方案还有一个优点是针对特殊场景的抽取,可以灵活裁剪服务类型,或根据业务量针对性调整某类抽取算法服务副本数达到资源和业务量的平衡。
在算法设计上,除之前基于联合标注的序列标注抽取实体关系的工作外,达观也尝试使用统一信息抽取(UIE)框架。因为达观IDPS平台除实体抽取任务外,还支持关系抽取、元素抽取等任务,不同任务类型的网络结构差异导致数据和预训练模型复用受限造成资源浪费,系统也更复杂。通过设置不同抽取类型的Schema,利用UIE端到端生成结构化结果的思想,可以完成单模型多任务的抽取效果。
通用模型vs领域模型
当前以大规模预训练语言模型为基础进行语义表示,下游再根据任务类型设计网络结构,已成为各类NLP任务的基本范式,在很多场景任务下不仅整体性能更好,所需要的标注数据也更少。但公开的预训练语言模型通常使用通用语料数据训练,在迁移到特定领域下游任务时效果会打折扣。最主要的原因就是领域间数据分布差异很大。
具体表现如下:
训练数据不一致。例如金融场景的特定词汇如股票、基金、利率、资产等词汇概率远高于其他领域语料;
预测标签分布不同,例如在金融危机相关数据,负面标签远多于正面标签次数;
上下文信息不一致,例如在表格数据中,上下文信息不仅包括同一单元格内相邻文字,也包含相同单元格、行表头、列表头等。
为解决领域自适应问题,研究方向主要分为以模型为中心的方法和以数据为中心的方法。从实现方式上来说,使用以数据为中心的方法更加灵活,应用面更广,并可持续训练迭代。
具体来讲有以下两方面工作:
数据处理层面,收集从公开网站上获取的金融财经新闻公告等数据,结合达观积累的金融领域文本数据,经数据清理后得到数百万条预训练文本数据
模型设计层面,选用中文 RoBERTa 作为基础模型,采用 whole word masking 的掩码方式,进行继续预训练。经过测试,使用迭代后调优后的预训练语言模型在各个金融领域的下游任务中,效果普遍提升2~3%
考虑训练文档的页数分布数据、标注数据的页码位置分布、机器性能资源等多种信息进行自动学习,在干预较少的情况下得到相对较优的模型效果。
短文本抽取vs长文本抽取
通用文本抽取技术研究所需处理的文本上下文较短,例如Bert可处理长度512个字符,能够满足大部分场景,如果超过此长度需要进行窗口滑动。在实际场景中,例如招股书抽取,上下文长度远超512个字符。
通常长文本抽取有以下困难:
数据量少,正样本过于稀疏;
数据分布不均衡,负样本远比正样本多,而且Easy Negative 数据远比 Hard Negative 数据要多,导致在训练过程中,经过少量迭代就会被模型充分学习并正确预测,导致数据中的“困难负样本”和正样本对模型训练迭代的影响过低,无法被充分学习;
端到端方式缺乏灵活性,实际使用受限,SOTA 方法常使用端到端的方式,但工业场景常常需要精准监控各环节贡献和精准优化各个模块。
为解决以上问题,除修改模型结构、参数让传统经典网络更好建模长文本外,也可以通过业务特征进行流程优化,主要思想是根据关键词或者相关标题上下文,将训练或预测数据预处理,仅在有限的文档区域内建模,减少负样本带来的数据不均衡问题,同时能大大提升训练、预测速度。例如达观使用章节拆分定位技术,利用文档解析得到的文档目录结构,根据标注数据缩小建模范围,例如可以将实体抽取范围定位到某章甚至某些段落中,将几百页的上下文信息压缩到最相关的几个自然段,提升模型性能,在实践中取得非常好的效果。
三维度量评价体系
一般学术研究最重要的优化目标是效果,对于资源、时间的考量权重相对较低,而工业落地往往相较于学术界更注重于时间、空间与效果的综合结果,我们称之为三维度量。在工业落地中,客户软硬件差距巨大,需要适配不同部署硬件方案,并可能会有硬件瓶颈导致方案大改,例如有些客户没有GPU或相关资源非常有限,导致基于深度学习的算法方案受限。与此同时,项目目标考察点也不仅仅只关注效果,也需要关注使用时的响应时间、处理能力等多种因素,需要根据实际情况多方面权衡。另外由于实际场景资源有限,需要充分利用已有资源,不同任务合理使用资源、灵活支撑业务流量变化,对于系统的架构和调度能力提出很大要求。
为了能够满足三维度量评价体系,实际生产中对于具体模型需要使用裁剪、蒸馏、量化等方式进行模型体积、资源占用优化的同时,也希望能够尽量保证原有模型效果,挑战比较大。在实践中,达观总结多套成熟的系统算法配置,根据项目需求选择最佳配置自动完成相关优化工作。例如Bert蒸馏,教师网络使用经典base Bert模型,共有12层网络及超过20M的参数保证数据拟合准确性,而学生网络根据实际场景资源限制使用小8倍的tiny Bert甚至Bi-LSTM保证预测精度。下图展示达观IDPS中使用的知识蒸馏流程。

另外在服务架构上,考虑到资源受限尤其是GPU资源受限问题,将模型网络拆分,将重计算且多任务公用的语义编码网络独立出来作为服务并部署在有限的GPU资源上,通过远程调用支撑各个下游任务。达观基于此提出Transformer as a Service的方案,此方案的优势是方便对 GPU 资源进行集中管理,使用 Redis等中间件实现分布式缓存,优化整个大任务的耗时,并能很好支持跨环境、跨架构的不同服务(很多客户CPU和GPU机器独立部署运维),同时方便预训练语言模型整体效果的迭代、优化。经过验证,在损失1个点左右精度的效果情况下,整体资源要求大幅降低,并已使用在多个项目中。
本文概述了OCR技术的挑战,包括算法层面的透视变换、文字弯曲、背景干扰等,以及应用层对实时性和轻量化的需求。介绍了文本检测的两类方法(回归与分割),CTPN和PSENet等关键进展。文本识别部分详细讲解了CRNN、Transformer和融合视觉语义的方法。文章还着重讨论了文档结构化识别、版面分析、表格识别、关键信息提取和文档解析技术,以及资源优化和多维度评价体系的重要性。

9583

被折叠的 条评论
为什么被折叠?



