共计 9813 个字符,预计需要花费 25 分钟才能阅读完成。
深刻摸索 OCR 技术:前沿算法与工业级部署计划揭秘
注:以上图片来自网络
1. OCR 技术背景
1.1 OCR 技术的利用场景
- <font color=red>OCR 是什么 </font>
OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一。传统定义的 OCR 个别面向扫描文档类对象,当初咱们常说的 OCR 个别指场景文字辨认(Scene Text Recognition,STR),次要面向天然场景,如下图中所示的牌匾等各种天然场景可见的文字。
<center> 图 1 文档场景文字辨认 VS. 天然场景文字辨认 </center>
- <font color=red>OCR 有哪些利用场景?</font>
OCR 技术有着丰盛的利用场景,一类典型的场景是日常生活中广泛应用的面向垂类的结构化文本辨认,比方车牌辨认、银行卡信息辨认、身份证信息辨认、火车票信息辨认等等。这些小垂类的独特特点是格局固定,因而非常适合应用 OCR 技术进行自动化,能够极大的加重人力老本,晋升效率。
这种面向垂类的结构化文本辨认是目前 ocr 利用最宽泛、并且技术绝对较成熟的场景。
<center> 图 2 OCR 技术的利用场景 </center>
除了面向垂类的结构化文本辨认,通用 OCR 技术也有宽泛的利用,并且经常和其余技术联合实现多模态工作,例如在视频场景中,常常应用 OCR 技术进行字幕主动翻译、内容安全监控等等,或者与视觉特色相结合,实现视频了解、视频搜寻等工作。
<center> 图 3 多模态场景中的通用 OCR</center>
1.2 OCR 技术挑战
OCR 的技术难点能够分为算法层和应用层两方面。
- <font color=red> 算法层 </font>
OCR 丰盛的利用场景,决定了它会存在很多技术难点。这里给出了常见的 8 种问题:
<center> 图 4 OCR 算法层技术难点 </center>
这些问题给文本检测和文本辨认都带来了微小的技术挑战,能够看到,这些挑战次要都是面向天然场景,目前学术界的钻研也次要聚焦在天然场景,OCR 畛域在学术上的罕用数据集也都是天然场景。针对这些问题的钻研很多,相对来说,辨认比检测面临更大的挑战。
- <font color=red> 应用层 </font>
在理论利用中,尤其是在宽泛的通用场景下,除了上一节总结的仿射变换、尺度问题、光照有余、拍摄含糊等算法层面的技术难点,OCR 技术还面临两大落地难点:
- 海量数据要求 OCR 可能实时处理。 OCR 利用常对接海量数据,咱们要求或心愿数据可能失去实时处理,模型的速度做到实时是一个不小的挑战。
- 端侧利用要求 OCR 模型足够轻量,辨认速度足够快。 OCR 利用常部署在挪动端或嵌入式硬件,端侧 OCR 利用个别有两种模式:上传到服务器 vs. 端侧间接辨认,思考到上传到服务器的形式对网络有要求,实时性较低,并且申请量过大时服务器压力大,以及数据传输的安全性问题,咱们心愿可能间接在端侧实现 OCR 辨认,而端侧的存储空间和计算能力无限,因而对 OCR 模型的大小和预测速度有很高的要求。
<center> 图 5 OCR 应用层技术难点 </center>
2. OCR 前沿算法
尽管 OCR 是一个绝对具体的工作,但波及了多方面的技术,包含文本检测、文本辨认、端到端文本辨认、文档剖析等等。学术上对于 OCR 各项相干技术的钻研层出不穷,下文将简要介绍 OCR 工作中的几种关键技术的相干工作。
2.1 文本检测
文本检测的工作是定位出输出图像中的文字区域。近年来学术界对于文本检测的钻研十分丰盛,一类办法将文本检测视为指标检测中的一个特定场景,基于通用指标检测算法进行改良适配,如 TextBoxes[1]基于一阶段指标检测器 SSD[2]算法,调整指标框使之适宜极其长宽比的文本行,CTPN[3]则是基于 Faster RCNN[4]架构改良而来。然而文本检测与指标检测在指标信息以及工作自身上仍存在一些区别,如文本个别长宽比拟大,往往呈“条状”,文本行之间可能比拟密集,蜿蜒文本等,因而又衍生了很多专用于文本检测的算法,如 EAST[5]、PSENet[6]、DBNet[7]等等。
<center><img src=”https://ai-studio-static-online.cdn.bcebos.com/548b50212935402abb2e671c158c204737c2c64b9464442a8f65192c8a31b44d” width=”500″></center>
<center> 图 6 文本检测工作示例 </center>
目前较为风行的文本检测算法能够大抵分为 基于回归 和基于宰割 的两大类文本检测算法,也有一些算法将二者相结合。
- 基于回归的算法借鉴通用物体检测算法,通过设定 anchor 回归检测框,或者间接做像素回归,这类办法对规定形态文本检测成果较好,然而对不规则形态的文本检测成果会绝对差一些,比方 CTPN[3]对程度文本的检测成果较好,但对歪斜、蜿蜒文本的检测成果较差,SegLink[8]对长文本比拟好,但对散布稠密的文本成果较差;
- 基于宰割的算法引入了 Mask-RCNN[9],这类算法在各种场景、对各种形态文本的检测成果都能够达到一个更高的程度,但毛病就是后处理个别会比较复杂,因而经常存在速度问题,并且无奈解决重叠文本的检测问题。
<center><img src=”https://ai-studio-static-online.cdn.bcebos.com/4f4ea65578384900909efff93d0b7386e86ece144d8c4677b7bc94b4f0337cfb” width=”800″></center>
<center> 图 7 文本检测算法概览 </center>
<center> 图 8(左)基于回归的 CTPN[3]算法优化 anchor(中)基于宰割的 DB[7]算法优化后处理(右)回归 + 宰割的 SAST[10]算法 </center>
2.2 文本辨认
文本辨认的工作是辨认出图像中的文字内容,个别输出来自于文本检测失去的文本框截取出的图像文字区域。文本辨认个别能够依据待辨认文本形态分为 规定文本辨认 和不规则文本辨认 两大类。规定文本次要指印刷字体、扫描文本等,文本大抵处在水平线地位;不规则文本往往不在程度地位,存在蜿蜒、遮挡、含糊等问题。不规则文本场景具备很大的挑战性,也是目前文本辨认畛域的次要钻研方向。
<center> 图 9(左)规定文本 VS.(右)不规则文本 </center>
规定文本辨认的算法依据解码形式的不同能够大抵分为基于 CTC 和 Sequence2Sequence 两种,将网络学习到的序列特色 转化为 最终的辨认后果 的解决形式不同。基于 CTC 的算法以经典的 CRNN[11]为代表。
<center> 图 10 基于 CTC 的辨认算法 VS. 基于 Attention 的辨认算法 </center>
不规则文本的辨认算法相比更为丰盛,如 STAR-Net[12]等办法通过退出 TPS 等改正模块,将不规则文本改正为规定的矩形后再进行辨认;RARE[13]等基于 Attention 的办法加强了对序列之间各局部相关性的关注;基于宰割的办法将文本行的各字符作为独立个体,相比与对整个文本行做改正后辨认,辨认宰割出的单个字符更加容易;此外,随着近年来 Transfomer[14]的疾速倒退和在各类工作中的有效性验证,也呈现了一批基于 Transformer 的文本辨认算法,这类办法利用 transformer 构造解决 CNN 在长依赖建模上的局限性问题,也获得了不错的成果。
<center> 图 11 基于字符宰割的辨认算法[15]</center>
2.3 文档结构化辨认
传统意义上的 OCR 技术能够解决文字的检测和辨认需要,但在理论利用场景中,最终须要获取的往往是结构化的信息,如身份证、发票的信息格式化抽取,表格的结构化辨认等等,多在快递单据抽取、合同内容比对、金融保理单信息比对、物流业单据辨认等场景下利用。OCR 后果 + 后处理是一种罕用的结构化计划,但流程往往比较复杂,并且后处理须要精密设计,泛化性也比拟差。在 OCR 技术逐步成熟、结构化信息抽取需要日益旺盛的背景下,版面剖析、表格辨认、要害信息提取等对于智能文档剖析的各种技术受到了越来越多的关注和钻研。
- 版面剖析
版面剖析(Layout Analysis)次要是对文档图像进行内容分类,类别个别可分为纯文本、题目、表格、图片等。现有办法个别将文档中不同的板式当做不同的指标进行检测或宰割,如 Soto Carlos[16]在指标检测算法 Faster R-CNN 的根底上,联合上下文信息并利用文档内容的固有地位信息来进步区域检测性能;Sarkar Mausoom[17]等人提出了一种基于先验的宰割机制,在十分高的分辨率的图像上训练文档宰割模型,解决了适度放大原始图像导致的密集区域不同构造无奈辨别进而合并的问题。
<center> 图 12 版面剖析工作示意图 </center>
- 表格辨认
表格辨认(Table Recognition)的工作就是将文档里的表格信息进行辨认和转换到 excel 文件中。文本图像中表格品种和款式简单多样,例如不同的行列合并,不同的内容文本类型等,除此之外文档的款式和拍摄时的光照环境等都为表格辨认带来了极大的挑战。这些挑战使得表格辨认始终是文档了解畛域的钻研难点。
<center> 图 13 表格辨认工作示意图 </center>
表格辨认的办法品种较为丰盛,晚期的基于启发式规定的传统算法,如 Kieninger[18]等人提出的 T -Rect 等算法,个别通过人工设计规定,连通域检测剖析解决;近年来随着深度学习的倒退,开始涌现一些基于 CNN 的表格构造辨认算法,如 Siddiqui Shoaib Ahmed[19]等人提出的 DeepTabStR,Raja Sachin[20]等人提出的 TabStruct-Net 等;此外,随着图神经网络(Graph Neural Network)的衰亡,也有一些研究者尝试将图神经网络应用到表格构造辨认问题上,基于图神经网络,将表格辨认看作图重建问题,如 Xue Wenyuan[21]等人提出的 TGRNet;基于端到端的办法间接应用网络实现表格构造的 HTML 示意输入,端到端的办法大多采纳 Seq2Seq 办法来实现表格构造的预测,如一些基于 Attention 或 Transformer 的办法,如 TableMaster[22]。
<center> 图 14 表格识别方法示意图 </center>
- 要害信息提取
要害信息提取(Key Information Extraction,KIE)是 Document VQA 中的一个重要工作,次要从图像中提取所须要的要害信息,如从身份证中提取出姓名和公民身份号码信息,这类信息的品种往往在特定工作下是固定的,然而在不同工作间是不同的。
<center> 图 15 DocVQA 工作示意图 </center>
KIE 通常分为两个子工作进行钻研:
- SER: 语义实体辨认 (Semantic Entity Recognition),对每一个检测到的文本进行分类,如将其分为姓名,身份证。如下图中的彩色框和红色框。
- RE: 关系抽取 (Relation Extraction),对每一个检测到的文本进行分类,如将其分为问题和的答案。而后对每一个问题找到对应的答案。如下图中的红色框和彩色框别离代表问题和答案,黄色线代表问题和答案之间的对应关系。
<center> 图 16 ser 与 re 工作 </center>
个别的 KIE 办法基于命名实体辨认 (Named Entity Recognition,NER)[4] 来钻研,然而这类办法只利用了图像中的文本信息,短少对视觉和构造信息的应用,因而精度不高。在此基础上,近几年的办法都开始将视觉和构造信息与文本信息交融到一起,依照对多模态信息进行交融时所采纳的的原理能够将这些办法分为上面四种:
- 基于 Grid 的办法
- 基于 Token 的办法
- 基于 GCN 的办法
- 基于 End to End 的办法
[链接]
2.4 其余相干技术
后面次要介绍了 OCR 畛域的三种关键技术:文本检测、文本辨认、文档结构化辨认,更多其余 OCR 相干前沿技术介绍,包含端到端文本辨认、OCR 中的图像预处理技术、OCR 数据合成等。后续会讲[链接]
3. OCR 技术的产业实际
OCR 技术最终还是要落到产业实际当中。尽管学术上对于 OCR 技术的钻研很多,OCR 技术的商业化利用相比于其余 AI 技术也曾经绝对成熟,但在理论的产业利用中,还是存在一些难点与挑战。下文将从技术和产业实际两个角度进行剖析。
3.1 产业实际难点
在理论的产业实际中,开发者经常须要依靠开源社区资源启动或推动我的项目,而开发者应用开源模型又往往面临三大难题:
<center> 图 17 OCR 技术产业实际三大难题 </center>
1. 找不到、选不出
开源社区资源丰盛,然而信息不对称导致开发者并不能高效地解决痛点问题。一方面,开源社区资源过于丰盛,开发者面对一项需要,无奈疾速从海量的代码仓库中找到匹配业务需要的我的项目,即存在“找不到”的问题;另一方面,在算法选型时,英文公开数据集上的指标,无奈给开发者经常面对的中文场景提供间接的参考,一一算法验证须要消耗大量工夫和人力,且不能保障选出最合适的算法,即“选不出”。
2. 不实用产业场景
开源社区中的工作往往更多地偏差成果优化,如学术论文代码开源或复现,个别更偏重算法成果,均衡思考模型大小和速度的工作相比就少很多,而模型大小和预测耗时在产业实际中是两项不容忽视的指标,其重要水平不亚于模型成果。无论是挪动端和服务器端,待辨认的图像数目往往十分多,都心愿模型更小,精度更高,预测速度更快。GPU 太贵,最好应用 CPU 跑起来更经济。在满足业务需要的前提下,模型越轻量占用的资源越少。
3. 优化难、训练部署问题多
间接应用开源算法或模型个别无奈间接满足业务需要,理论业务场景中,OCR 面临的问题多种多样,业务场景个性化往往须要自定义数据集从新训练,现有的开源我的项目上,试验各种优化办法的老本较高。此外,OCR 利用场景非常丰盛,服务端和各种挪动端设施上都有着宽泛的利用需要,硬件环境多样化就须要反对丰盛的部署形式,而开源社区的我的项目更偏重算法和模型,在预测部署这部分显著撑持有余。要把 OCR 技术从论文上的算法做到技术落地利用,对开发者的算法和工程能力都有很高的要求。
3.2 产业级 OCR 开发套件 PaddleOCR
OCR 产业实际须要一套残缺全流程的解决方案,来放慢研发进度,节约贵重的研发工夫。也就是说,超轻量模型及其全流程解决方案,尤其对于算力、存储空间无限的挪动端、嵌入式设施而言,能够说是刚需。
在此背景下,产业级 OCR 开发套件 PaddleOCR 应运而生。
PaddleOCR 的建设思路从用户画像和需要登程,依靠飞桨外围框架,精选并复现丰盛的前沿算法,基于复现的算法研发更实用于产业落地的 PP 特色模型,并买通训推一体,提供多种预测部署形式,满足理论利用的不同需要场景。
<center> 图 18 PaddleOCR 开发套件全景图 </center>
从全景图能够看出,PaddleOCR 依靠于飞桨外围框架,在模型算法、预训练模型库、工业级部署等层面均提供了丰盛的解决方案,并且提供了数据合成、半自动数据标注工具,满足开发者的数据生产需要。
在模型算法层面 ,PaddleOCR 对 文字检测辨认 和文档结构化分析 两类工作别离提供了解决方案。在文字检测辨认方面,PaddleOCR 复现或开源了 4 种文本检测算法、8 种文本辨认算法、1 种端到端文本辨认算法,并在此基础上研发了 PP-OCR 系列的通用文本检测辨认解决方案;在文档结构化分析方面,PaddleOCR 提供了版面剖析、表格辨认、要害信息抽取、命名实体辨认等算法,并在此基础提出了 PP-Structure 文档剖析解决方案。丰盛的精选算法能够满足开发者不同业务场景的需要,代码框架的对立也不便开发者进行不同算法的优化和性能比照。
在预训练模型库层面,基于 PP-OCR 和 PP-Structure 解决方案,PaddleOCR 研发并开源了实用于产业实际的 PP 系列特色模型,包含通用、超轻量和多语言的文本检测辨认模型,和简单文档分析模型。PP 系列特色模型均在原始算法上进行了深度优化,使其在成果和性能上均能达到产业实用级别,开发者既能够间接利用于业务场景,也能够用业务数据进行简略的 finetune,便能够轻松研发出实用于本人业务需要的“实用模型”。
在工业级部署层面,PaddleOCR 提供了基于 Paddle Inference 的服务器端预测计划,基于 Paddle Serving 的服务化部署计划,以及基于 Paddle-Lite 的端侧部署计划,满足不同硬件环境下的部署需要,同时提供了基于 PaddleSlim 的模型压缩计划,能够进一步压缩模型大小。以上部署形式都实现了训推一体全流程买通,以保障开发者能够高效部署,稳固牢靠。
在数据工具层面,PaddleOCR 提供了半自动数据标注工具 PPOCRLabel 和数据合成工具 Style-Text,助力开发者更不便的生产模型训练所需的数据集和标注信息。PPOCRLabel 作为业界首个开源的半自动 OCR 数据标注工具,针对标注过程干燥繁琐、机械性高,大量训练数据所需人工标记,工夫金钱老本低廉的问题,内置 PP-OCR 模型实现预标注 + 人工校验的标注模式,能够极大晋升标注效率,节俭人力老本。数据合成工具 Style-Text 次要解决理论场景实在数据严重不足,传统合成算法无奈合成文字格调(字体、色彩、间距、背景)的问题,只须要少许指标场景图像,就能够批量合成大量与指标场景格调相近的文本图像。
<center> 图 19 PPOCRLabel 应用示意图 </center>
<center> 图 20 Style-Text 合成成果示例 </center>
3.2.1 PP-OCR 与 PP-Structrue
PP 系列特色模型是飞桨各视觉开发套件针对产业实际需要进行深度优化的模型,力求速度与精度均衡。PaddleOCR 中的 PP 系列特色模型包含针对文字检测辨认工作的 PP-OCR 系列模型和针对文档剖析的 PP-Structure 系列模型。
(1)PP-OCR 中英文模型
<center> 图 21 PP-OCR 中英文模型辨认后果示例 </center>
PP-OCR 中英文模型采纳的典型的两阶段 OCR 算法,即检测模型 + 辨认模型的组成形式,具体的算法框架如下:
<center> 图 22 PP-OCR 零碎 pipeline 示意图 </center>
能够看到,除输入输出外,PP-OCR 外围框架蕴含了 3 个模块,别离是:文本检测模块、检测框改正模块、文本辨认模块。
- 文本检测模块:外围是一个基于 DB 检测算法训练的文本检测模型,检测出图像中的文字区域;
- 检测框改正模块:将检测到的文本框输出检测框改正模块,在这一阶段,将四点示意的文本框改正为矩形框,不便后续进行文本辨认,另一方面会进行文本方向判断和校对,例如如果判断文本行是倒立的状况,则会进行转正,该性能通过训练一个文本方向分类器实现;
- 文本辨认模块:最初文本辨认模块对改正后的检测框进行文本辨认,失去每个文本框内的文字内容,PP-OCR 中应用的经典文本辨认算法 CRNN。
PaddleOCR 先后推出了 PP-OCR[23]和 PP-OCRv2[24]模型。
PP-OCR 模型分为 mobile 版(轻量版)和 server 版(通用版),其中 mobile 版模型次要基于轻量级骨干网络 MobileNetV3 进行优化,优化后模型(检测模型 + 文本方向分类模型 + 辨认模型)大小仅 8.1M,CPU 上均匀单张图像预测耗时 350ms,T4 GPU 上约 110ms,裁剪量化后,可在精度不变的状况下进一步压缩到 3.5M,便于端侧部署,在骁龙 855 上测试预测耗时仅 260ms。更多的 PP-OCR 评估数据可参考 benchmark。
PP-OCRv2 放弃了 PP-OCR 的整体框架,次要做了成果上的进一步策略优化。晋升包含 3 个方面:
- 在模型成果上,绝对于 PP-OCR mobile 版本晋升超 7%;
- 在速度上,绝对于 PP-OCR server 版本晋升超过 220%;
- 在模型大小上,11.6M 的总大小,服务器端和挪动端都能够轻松部署。
PP-OCR 和 PP-OCRv2 的具体优化策略将在第四章中进行具体解读。
除了中英文模型,PaddleOCR 也基于不同的数据集训练并开源了英文数字模型、多语言辨认模型,以上均为超轻量模型,实用于不同的语言场景。
<center> 图 23 PP-OCR 的英文数字模型和多语言模型辨认成果示意图 </center>
(2)PP-Structure 文档分析模型
PP-Structure 反对版面剖析(layout analysis)、表格辨认(table recognition)、文档视觉问答(DocVQA)三种子工作。
PP-Structure 外围性能点如下:
- 反对对图片模式的文档进行版面剖析,能够划分文字、题目、表格、图片以及列表 5 类区域(与 Layout-Parser 联结应用)
- 反对文字、题目、图片以及列表区域提取为文字字段(与 PP-OCR 联结应用)
- 反对表格区域进行结构化分析,最终后果输入 Excel 文件
- 反对 Python whl 包和命令行两种形式,简略易用
- 反对版面剖析和表格结构化两类工作自定义训练
- 反对 VQA 工作 -SER 和 RE
<center> 图 24 PP-Structure 零碎示意图(本图仅含版面剖析 + 表格辨认)</center>
3.2.2 工业级部署计划
飞桨反对全流程、全场景推理部署,模型起源次要分为三种,第一种应用 PaddlePaddle API 构建网络结构进行训练所得,第二种是基于飞桨套件系列,飞桨套件提供了丰盛的模型库、简洁易用的 API,具备开箱即用,包含视觉模型库 PaddleCV、智能语音库 PaddleSpeech 以及自然语言解决库 PaddleNLP 等,第三种采纳 X2Paddle 工具从第三方框架(PyTorh、ONNX、TensorFlow 等)产出的模型。
飞桨模型能够选用 PaddleSlim 工具进行压缩、量化以及蒸馏,反对五种部署计划,别离为服务化 Paddle Serving、服务端 / 云端 Paddle Inference、挪动端 / 边缘端 Paddle Lite、网页前端 Paddle.js, 对于 Paddle 不反对的硬件,比方 MCU、地平线、鲲云等国产芯片,能够借助 Paddle2ONNX 转化为反对 ONNX 的第三方框架。
<center> 图 25 飞桨反对部署形式 </center>
Paddle Inference 反对服务端和云端部署,具备高性能与通用性,针对不同平台和不同利用场景进行了深度的适配和优化,Paddle Inference 是飞桨的原生推理库,保障模型在服务器端即训即用,疾速部署,实用于高性能硬件上应用多种利用语言环境部署算法简单的模型,硬件笼罩 x86 CPU、Nvidia GPU、以及百度昆仑 XPU、华为昇腾等 AI 加速器。
Paddle Lite 是端侧推理引擎,具备轻量化和高性能特点,针对端侧设施和各利用场景进行了深度的设配和优化。以后反对 Android、IOS、嵌入式 Linux 设施、macOS 等多个平台,硬件笼罩 ARM CPU 和 GPU、X86 CPU 和新硬件如百度昆仑、华为昇腾与麒麟、瑞芯微等。
Paddle Serving 是一套高性能服务框架,旨在帮忙用户几个步骤疾速将模型在云端服务化部署。目前 Paddle Serving 反对自定义前后解决、模型组合、模型热加载更新、多机多卡多模型、分布式推理、K8S 部署、平安网关和模型加密部署、反对多语言多客户端拜访等性能,Paddle Serving 官网还提供了包含 PaddleOCR 在内的 40 多种模型的部署示例,以帮忙用户更快上手。
<center> 图 26 飞桨反对部署形式 </center>
4. 总结
首先介绍了 OCR 技术的利用场景和前沿算法,而后剖析了 OCR 技术在产业实际中的难点与三大挑战。
后续章节内容波及:介绍检测、辨认技术并实际;介绍 PP-OCR 优化策略;进行预测部署实战;文档结构化;端到端、数据预处理、数据合成等其余 OCR 相干算法;OCR 相干数据集和数据合成工具。
更多优质内容请关注公号:汀丶人工智能;会提供一些相干的资源和优质文章,收费获取浏览。