OCR 涉及多个方面的技术,包括文本检测、文本识别、端到端文本识别、文档分析等等。
文本检测
文本检测的任务是定位输出图像中的文字区域。一类方法将文本检测视为目标检测中的一个特定场景,基于通用目标检测算法进行改进适配,如 TextBoxes 基于一阶段目标检测器 SSD 算法,调整目标框使之适合极端长宽比的文本行,CTPN 则是基于 Faster RCNN 架构改进而来。但是文本检测与目标检测在目标信息以及任务本身上仍存在一些区别,如文本一般长宽比较大,往往呈“条状”,文本行之间可能比较密集,弯曲文本等,因此又衍生了很多专用于文本检测的算法,如 EAST 、PSENet 、DBNet 等等。
目前较为流行的文本检测算法可以大致分为基于回归和基于分割的两大类文本检测算法,也有一些算法将二者相结合。
基于回归的算法借鉴通用物体检测算法,通过设定 anchor 回归检测框,或者直接做像素回归,这类方法对规则形状文本检测效果较好,但是对不规则形状的文本检测效果会相对差一些,比如 CTPN 对水平文本的检测效果较好,但对倾斜、弯曲文本的检测效果较差,SegLink 对长文本比较好,但对分布稀疏的文本效果较差;
基于分割的算法引入了 Mask-RCNN,这类算法在各种场景、对各种形状文本的检测效果都可以达到一个更高的水平,但缺点就是后处理一般会比较复杂,因此常常存在速度问题,并且无法解决重叠文本的检测问题。
文本识别
文本识别的任务是识别出图像中的文字内容,一般输入来自于文本检测得到的文本框截取出的图像文字区域。文本识别一般可以根据待识别文本形状分为规则文本识别和不规则文本识别两大类。规则文本主要指印刷字体、扫描文本等,文本大致处在水平线位置;不规则文本往往不在水平位置,存在弯曲、遮挡、模糊等问题。不规则文本场景具有很大的挑战性,也是目前文本识别领域的主要研究方向。
不规则文本的识别算法相比更为丰富,如 STAR-Net 等方法通过加入 TPS 等矫正模块,将不规则文本矫正为规则的矩形后再进行识别;RARE 等基于 Attention 的方法增强了对序列之间各部分相关性的关注;基于分割的方法将文本行的各字符作为独立个体,相比与对整个文本行做矫正后识别,识别分割出的单个字符更加容易;此外,随着近年来 Transfomer 的快速发展和在各类任务中的有效性验证,也出现了一批基于 Transformer 的文本识别算法,这类方法利用 transformer 结构解决 CNN 在长依赖建模上的局限性问题,也取得了不错的效果。
文档结构化识别
在实际应用场景中,最终需要获取的往往是结构化的信息,如身份证、发票的信息格式化抽取,表格的结构化识别等等,多在快递单据抽取、合同内容比对、金融保理单信息比对、物流业单据识别等场景下应用。OCR 结果+后处理是一种常用的结构化方案,但流程往往比较复杂,并且后处理需要精细设计,泛化性也比较差。在 OCR 技术逐渐成熟、结构化信息抽取需求日益旺盛的背景下,版面分析、表格识别、关键信息提取等关于智能文档分析的各种技术受到了越来越多的关注和研究。
版面分析
版面分析(Layout Analysis)主要是对文档图像进行内容分类,类别一般可分为纯文本、标题、表格、图片等。现有方法一般将文档中不同的板式当做不同的目标进行检测或分割,如 Soto Carlos 在目标检测算法 Faster R-CNN 的基础上,结合上下文信息并利用文档内容的固有位置信息来提高区域检测性能;Sarkar Mausoom 等人提出了一种基于先验的分割机制,在非常高的分辨率的图像上训练文档分割模型,解决了过度缩小原始图像导致的密集区域不同结构无法区分进而合并的问题。
表格识别
表格识别(Table Recognition)的任务就是将文档里的表格信息进行识别和转换到 excel 文件中。文本图像中表格种类和样式复杂多样,例如不同的行列合并,不同的内容文本类型等,除此之外文档的样式和拍摄时的光照环境等都为表格识别带来了极大的挑战。这些挑战使得表格识别一直是文档理解领域的研究难点。
表格识别的方法种类较为丰富,早期的基于启发式规则的传统算法,如 Kieninger 等人提出的 T-Rect 等算法,一般通过人工设计规则,连通域检测分析处理;近年来随着深度学习的发展,开始涌现一些基于 CNN 的表格结构识别算法,如 Siddiqui Shoaib Ahmed 等人提出的 DeepTabStR,Raja Sachin 等人提出的 TabStruct- Net 等;此外,随着图神经网络(Graph Neural Network)的兴起,也有一些研究者尝试将图神经网络应用到表格结构识别问题上,基于图神经网络,将表格识别看作图重建问题,如 Xue Wenyuan 等人提出的 TGRNet;基于端到端的方法直接使用网络完成表格结构的 HTML 表示输出,端到端的方法大多采用 Seq 2 Seq 方法来完成表格结构的预测,如一些基于 Attention 或 Transformer 的方法,如 TableMaster。
关键信息提取
关键信息提取(Key Information Extraction,KIE)是 Document VQA 中的一个重要任务,主要从图像中提取所需要的关键信息,如从身份证中提取出姓名和公民身份号码信息,这类信息的种类往往在特定任务下是固定的,但是在不同任务间是不同的。
KIE 通常分为两个子任务进行研究:
- SER: 语义实体识别 (Semantic Entity Recognition),对每一个检测到的文本进行分类,如将其分为姓名,身份证。如下图中的黑色框和红色框。
- RE: 关系抽取 (Relation Extraction),对每一个检测到的文本进行分类,如将其分为问题和的答案。然后对每一个问题找到对应的答案。如下图中的红色框和黑色框分别代表问题和答案,黄色线代表问题和答案之间的对应关系。
一般的 KIE 方法基于命名实体识别 (Named Entity Recognition, NER)[4] 来研究,但是这类方法只利用了图像中的文本信息,缺少对视觉和结构信息的使用,因此精度不高。在此基础上,近几年的方法都开始将视觉和结构信息与文本信息融合到一起,按照对多模态信息进行融合时所采用的的原理可以将这些方法分为下面四种:
- 基于 Grid 的方法
- 基于 Token 的方法
- 基于 GCN 的方法
- 基于 End to End 的方法
在模型算法层面,PaddleOCR 对文字检测识别和文档结构化分析两类任务分别提供了解决方案。在文字检测识别方面,PaddleOCR 复现或开源了 4 种文本检测算法、8 种文本识别算法、1 种端到端文本识别算法,并在此基础上研发了 PP-OCR 系列的通用文本检测识别解决方案;在文档结构化分析方面,PaddleOCR 提供了版面分析、表格识别、关键信息抽取、命名实体识别等算法,并在此基础提出了 PP-Structure 文档分析解决方案。丰富的精选算法可以满足开发者不同业务场景的需求,代码框架的统一也方便开发者进行不同算法的优化和性能对比。