CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet…你都掌握了吗?一文总结OCR必备经典模型(1)

本文涉及的产品
自定义KV模板,自定义KV模板 500次/账号
个人证照识别,个人证照识别 200次/月
文档理解,结构化解析 100页
简介: CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet…你都掌握了吗?一文总结OCR必备经典模型

本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

本文将分 3 期进行连载,共介绍 17 OCR任务上曾取得 SOTA 的经典模型。


  • 第 1 期:CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet
  • 第 2 期:EAST、PixelLink、TextBoxes++、DBNet、CRNN、RARE
  • 第 3 期:ABCNet、Deep TextSpotter、SEE、FOTS、End-to-End TextSpotter

您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。



本期收录模型速览

模型 SOTA!模型资源站收录情况 模型来源论文
CTPN https://sota.jiqizhixin.com/project/ctpn
收录实现数量:3
支持框架:PyTorch、TensorFlow
Detecting Text in Natural Image with Connectionist Text Proposal Network
TextBoxes https://sota.jiqizhixin.com/project/textboxes TextBoxes: A Fast Text Detector with a Single Deep Neural Network
SegLink https://sota.jiqizhixin.com/project/seglink-2
收录实现数量:2
支持框架:TensorFlow
Detecting Oriented Text in Natural Images by Linking Segments
RRPN https://sota.jiqizhixin.com/project/rrpn
收录实现数量:1
支持框架:PyTorch
Arbitrary-Oriented Scene Text Detection via Rotation Proposals
FTSN https://sota.jiqizhixin.com/project/ftsn Fused Text Segmentation Networks for Multi-oriented Scene Text Detection
DMPNet https://sota.jiqizhixin.com/project/dmpnet Deep Matching Prior Network: Toward Tighter Multi-oriented Text Detection


光学字符识别(Optical Character Recognition,OCR)是指对文本资料进行扫描后对图像文件进行分析处理,以获取文字及版面信息的过程。一般来说,在获取到文字之前需要首先对文字进行定位,即执行文本检测任务,将图像中的文字区域位置检测出来;在找到文本所在区域之后,对该区域中的文字进行文字识别。文字识别就是通过输入文字图片,然后解码成文字的方法。OCR解码是文字识别中最为核心的问题。传统技术解决方案中,分别训练文本检测和文字识别两个模型,然后在实施阶段将这两个模型串联到数据流水线中组成图文识别系统。

对于文本检测任务,主要包括两种场景,一种是简单场景,另一种是复杂场景。简单场景主要是对印刷文件等的文本检测,例如像书本扫描、屏幕截图,或是清晰度高、规整的照片等。由于印刷字体的排版很规范,背景清晰,现在的检测、识别技术已经很成熟了,检测的效果都比较好。通过利用计算机视觉中的图像形态学操作,包括膨胀、腐蚀基本操作,即可实现简单场景的文字检测。复杂场景主要是指自然场景,由于光照环境以及文字存在着很多样的形式,例如灯箱广告牌、产品包装盒、设备说明、商标等,存在角度倾斜、变形、背景复杂、光线忽明忽暗、清晰度不足等情况,这时要将文本检测出来难度就比较大了,此时主要考虑引入深度学习模型进行检测。

对于文字识别任务,一般由下面的步骤组成:首先是读取输入的图像,提取图像特征,因此,需要有个卷积层用于读取图像和提取特征;然后,由于文本序列是不定长的,因此需要处理不定长序列预测的问题;再次,为了提升模型的适用性,最好不要要求对输入字符进行分割,直接可进行端到端的训练,这样可减少大量的分割标注工作,这时就要引入 CTC 模型(Connectionist temporal classification, 联接时间分类)来解决样本的分割对齐的问题;最后,根据一定的规则,对模型输出结果进行纠正处理,输出正确结果。

最近流行的技术解决方案中,考虑用一个多目标网络直接训练出一个端到端的模型以替代两阶段模型。在训练阶段,端到端模型的输入是训练图像及图像中的文本坐标、文本内容,模型优化目标是输出端边框坐标预测误差与文本内容预测误差的加权和。在实施阶段,原始图像经过端到端模型处理后直接输出预测文本信息。相比于传统方案,该方案中模型训练效率更高、资源开销更少。


我们在这篇报告中分别总结了OCR中必备的文本检测模型、文字识别模型和端到端的方法。其中,文本检测模型主要考虑复杂场景中的深度学习模型。


一、文本检测模型


1、 CTPN


CTPN( Connectionist Text Proposal Network )是在ECCV 2016中提出的一种文本检测模型。CTPN是从Faster RCNN改进而来的,结合了CNN与LSTM深度网络,能有效的检测出复杂场景的横向分布的文字,是非常经典的文本检测模型。CTPN是基于Anchor的算法,在检测横向分布的文字时能得到较好的效果。CTPN结构与Faster R-CNN基本类似,但是加入了LSTM层。

假设输入N张图片,首先,利用VGG提取特征,获得大小为 N×C×H×W 的conv5 feature map;然后,在conv5上做3×3 的滑动窗口,即每个点都结合周围3×3 区域特征以获得一个长度为3×3×C 的特征向量。输出N×9C×H×W 的feature map,该特征显然只有CNN学习到的空间特征;再将这个feature map进行Reshape,Reshape: Nx9CxHxW→(NH)xWx9C;然后,以Batch=NH 且最大时间长度Tmax=W 的数据流输入双向LSTM,学习每一行的序列特征。双向LSTM输出(NH)×W×256 ,再经Reshape恢复形状:Reshape: (NH)xWx256→Nx256xHxW,该特征既包含空间特征,也包含了LSTM学习到的序列特征;然后经过“FC”卷积层,变为N×512×H×W 的特征;最后经过类似Faster R-CNN的RPN网络,获得text proposals。


图1(a) CTPN结构。通过VGG16模型的最后一个卷积图(conv5)密集地滑动一个3×3的空间窗口。每行的顺序窗口由双向LSTM(BLSTM)循环连接,其中每个窗口的卷积特征(3×3×C)被用作256D BLSTM(包括两个128D LSTM)的输入。RNN层连接到512D全连接层,然后是输出层,共同预测文本/非文本分数、y轴坐标和k个anchor的side-refinement偏移。(b)CTPN输出连续的固定宽度的细刻度文本建议。每个box的颜色表示文本/非文本得分。最终只呈现正分数的方框


CTPN网络最后输出的预测参数包括三部分:纵向坐标(vertical coordinates),表示每一个box的中心点x坐标和高度;分数(scores),表示是否是文本区域的置信度;水平偏移量(side-refinement)用于精修文本框的左右边缘部分,表示对于左右两侧边界处box的坐标偏移值。具体的数量如下:2k个vertical coordinate,因为一个anchor用的是中心位置的高(y坐标)和矩形框的高度两个值表示的,所以一共2k个输出。2k个score,因为预测了k个text proposal,所以有2k个分数,text和non-text各有一个分数。k个side-refinement,这部分主要是用来精修文本行的两个端点的,表示的是每个proposal的水平平移量。这样就可以得到一个密集预测的text proposal,接下来使用一个标准的非极大值抑制算法(NMS)来滤除多余的box。最后使用基于图的文本行构造算法,将得到的文本段合并成文本行。构造文本行的方法是,令每两个相近的anchor组成一个pair,然后合并不同的pair直到无法再合并,这就构成了一个文本区域。

最后,CTPN 的 loss 分为三部分:(1)预测每个 anchor 是否包含文本区域的classification loss;(2)文本区域中每个 anchor 的中心y坐标cy与高度h的regression loss;(3)文本区域两侧 anchor 的中心x坐标cx 的regression loss。


项目 SOTA!平台项目详情页
CTPN 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/ctpn


2、 TextBoxes

TextBoxes 是一个端到端可训练的快速文本检测算法,是改进版的SSD。TextBoxes整体网络结构如图2所示,TextBoxes共有28层卷积,前13层来自于VGG-16(conv_1到conv4_3),后接9个额外的卷积层,最后是包含6个卷积层的多重输出层,被称为text-box layers,分别和前面的9个卷积层相连。由于这些default box都是细长型的,使得box在水平方向密集在垂直方向上稀疏,从而导致该模型对水平方向上的文字检测结果较好。text-box layers的输出通道数是72(2个通道预测分数,4个通道预测位置偏移量,共12个anchor,所以共(2+4) x 12=72个通道),整合所有的 text-box layers的输出结果后再使用NMS( nonmaximum suppression )处理,就得到了最终的结果。


图2 TextBoxes架构。TextBoxes是一个28层的全卷积网络。其中,13层是继承自VGG-16。9个额外的卷积层被附加在VGG-16层之后。文本框层与其中6个卷积层相连。在每个map位置上,一个文本框层预测了一个72维的向量,即12个默认框的文本存在分数(2维)和偏移量(4维)。对所有文本框层的汇总输出进行了NMS处理

Text-box layer是TextBoxes的核心,同时负责两种预测:文本行/非文本行预测和文本行的bbox预测,在每个特征图的每个位置上,它同时输出文本行的概率及其相对于default box的偏移。对于bbox的预测公式如下:



训练图像中文本行的ground truth与default box的匹配原则,采用的也是box overlap。这有效地将文本行按照各自的尺寸和宽高比进行划分。为了更好地适应文本行的large aspect ratio,论文中设计长宽比分别是1、2、3、5、7、10的default box(即长条形的default box)。但同时也引入了另外一个问题:default box在水平方向上排列紧密而垂直方向上排列稀疏,这会造成检测失误的情况。针对上述问题,论文中将水平方向上的这些默认框全部向下平移半个区域的单位(图3中黑色与绿色,蓝色与红色),这样一个位置总共12个默认框,解决了默认框排列不均匀的问题。


图3 4 x 4网格的默认box说明。为了更好的可视化,只绘制了一列长宽比为1和5的默认框。其余的长宽比为2、3、7和10,它们的位置类似。黑色(ar:5)和蓝色(ar:1)的默认框在其单元格中居中。绿色(ar:5)和红色(ar:1)方框具有相同的长宽比,并分别与网格中心有一个垂直偏移(单元格高度的一半)

此外在 text-box layers中替换传统的33卷积为不规则的15和5x1卷积核,这种 inception-style过滤器生成矩形接收场,更好地适合具有较大纵横比的文本,也避免了方形接收场会带来的噪声信号。

损失函数方面,TextBoxes的损失函数由两部分构成,一是二分类的损失函数,由于TextBoxes只会把区域分成两类,一类是背景,一类含有文字,因此这部分是一个二分类的softmax损失函数。二是预测的bounding box位置的回归损失,这部分使用的是smooth L1损失函数。

检测过程中可能会遇到文字区域过长,超过了默认框的最大比例的问题,即使在anchor和卷积滤波器上进行优化,也仍然很难检测出极端纵横比和大小的文本。解决办法是将原图片放缩到不同的大小(对于每张图片,分别rescale到300300,700700,300700,500700,1600 x 1600),这样某些在水平方向很长的文字就会被挤压从而满足默认框的比例,这种方法提高了检测的准确度,但是会消耗一定的运算能力。

项目 SOTA!平台项目详情页
TextBoxes 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/textboxes


3、SegLink

SegLink将检测文本行的任务分解为检测segment和link的两个小任务,依然是采用了SSD结构,重点是改变了网络的输出,即数据的表现形式,然后融合两个小任务的结果最终输出文本行。完整结构如图4。


图4 SegLink网络结构。网络由卷积特征层(显示为灰色块)和卷积预测器(灰色细箭头)组成。卷积滤波器的格式为"(#filters),k(kernel size)s(stride)"。一个多行过滤器规格意味着一个隐藏层之间。分段(黄框)和链接(未显示)由卷积预测器在多个特征层(以l = 1 ... 6为索引)上检测,并通过组合算法组合成整个单词

SegLink的完整工作流程如下:

  • 主干网络沿用SSD网络结构,修改了最后的Pooling层,将其改为卷积层.具体来说:首先,用VGG16作为base net,并将VGG16的最后两个全连接层改成卷积层。接着增加一些额外的卷积层,用于提取更深的特征,最后,修改SSD的池化层,将其改为卷积层;
  • 提取不同层的特征图,文中提取了conv4_3, conv7, conv8_2, conv9_2, conv10_2, conv11;
  • 对不同层的特征图使用3x3的卷积层以得到最终的输出,不同特征层输出的维度是不一样的,因为除了conv4_3层外,其它层存在跨层的link。这里segment是text的带方向bbox信息,link是不同bbox的连接信息;
  • 通过融合规则,将segment的box信息和link信息进行融合,得到最终的文本行。

Segments表示一个文本框里的一个部分,可以是一个文字也可以是多个文字。segment是一个增加了方向信息的五元组x、y、w、h、θ,分别表示:中心的坐标,矩形框的宽高,矩形框的角度。在SSD中,每个特征图的每一个像素会生成多个default box,但是在seglink中,只有一个宽高比为1的default box。对于segments的预测包括:2个segment score和5个geometric offsets(xs,ys,ws,hs,θs)。

link主要是用于连接上述segment,对于link detection部分,主要分成层内link检测(within-layer)和跨层link检测(cross-layer),分别表示特征图内和跨特征图的segment是否应该相连。每个link有两个分数,一个用是正分,一个是负分,正分用来表示二者是否属于同一个单词;负分表示二者是否属于不同单词,应该断开连接。Within-Layer Link:衡量了每一个特征图内部的segment是否应该相连,对于当前的segment,会寻找其八邻域内的segment是否与其相连。Cross-Layer Link:衡量了当前特征图和其上一级特征图内部的segment是否应该相连,对于当前的segment,会寻找其四邻域内的segment是否与其相连。如l6 层和l5 层, 所以只需要对conv7, conv8_2, conv9_2, conv10_2, conv11进行cross-layer link检测。

Combining Segments with Links算法的流程是:首先,通过人工设定的两个参数 α 和β对网络预测的segments和links进行滤除;然后,将每个segment看成节点,link看成边,建立图模型,再用DFS(depth first search)找到连通分量,每个连通分量包含一系列segments(用B表示),执行Alg1进行融合输出单词的box,Alg1算法其实就是一个平均的过程。先计算所有的segment的平均θ作为文本行的θ,再根据已求的θ为已知条件,求出最可能过每个segment的直线,以segment的最左和最右为边界的线段中点作为word的中心点(x, y),最后用线段长度加上首尾segment的平均宽度作为word的宽度,用所有segment的高度的平均值作为word的高度。

项目 SOTA!平台项目详情页

SegLink

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/seglink-2
相关文章
|
2月前
|
编解码 人工智能 文字识别
阶跃星辰开源GOT-OCR2.0:统一端到端模型,魔搭一站式推理微调最佳实践来啦!
GOT来促进OCR-2.0的到来。该模型具有580百万参数,是一个统一、优雅和端到端的模型,由高压缩编码器和长上下文解码器组成。
阶跃星辰开源GOT-OCR2.0:统一端到端模型,魔搭一站式推理微调最佳实践来啦!
|
3月前
|
文字识别 并行计算 PyTorch
MiniCPM-V 系列模型在多模态文档 RAG 中的应用(无需OCR的多模态文档检索+生成)
现在我们以 OpenBMB 基于 MiniCPM-V-2.0 训练的端到端多模态检索模型 MiniCPM-Visual-Embedding-v0 为例,实现无需OCR的多模态文档检索与问答。
MiniCPM-V 系列模型在多模态文档 RAG 中的应用(无需OCR的多模态文档检索+生成)
|
3月前
|
数据采集 机器学习/深度学习 文字识别
OCR -- 文本检测 - 训练DB文字检测模型
OCR -- 文本检测 - 训练DB文字检测模型
64 0
|
4月前
|
文字识别 开发工具
印刷文字识别使用问题之模型已经生成,如何追加样本量
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
4月前
|
文字识别
印刷文字识别使用问题之如何实让其他人标注,自己创建模型
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
5月前
|
人工智能 文字识别 自然语言处理
OCR小模型仍有机会!华科等提出VIMTS:零样本视频端到端识别新SOTA
【6月更文挑战第7天】华中科技大学团队推出VIMTS模型,刷新零样本视频文本识别SOTA。该模型通过Prompt Queries Generation Module和Tasks-aware Adapter增强跨任务协同,提升泛化能力。在多个跨域基准测试中,VIMTS平均性能提升2.6%,视频识别上超越现有方法。此创新降低OCR对标注数据依赖,为资源受限场景提供新方案。论文链接:https://arxiv.org/pdf/2404.19652
72 3
|
6月前
|
编解码 文字识别 测试技术
论文介绍:TextMonkey——面向文本理解的无OCR大型多模态模型
【5月更文挑战第2天】TextMonkey是一款无OCR的大型多模态模型,设计用于高效提取文本信息。它采用Shifted Window Attention和零初始化技术处理高分辨率文档,减少训练成本。通过假设图像中的冗余标记,模型能精简标记并提升性能。TextMonkey还能定位文本答案在图像中的位置,增强可解释性,在场景文本任务和关键信息提取中表现优越,特别是在OCRBench基准测试中刷新记录。然而,它在处理小图像和需要深层推理的任务时仍面临挑战。[链接](https://arxiv.org/abs/2403.04473)
179 5
|
人工智能 文字识别 自然语言处理
Nougat:一种用于科学文档OCR的Transformer 模型
随着人工智能领域的不断进步,其子领域,包括自然语言处理,自然语言生成,计算机视觉等,由于其广泛的用例而迅速获得了大量的普及。光学字符识别(OCR)是计算机视觉中一个成熟且被广泛研究的领域。它有许多用途,如文档数字化、手写识别和场景文本识别。数学表达式的识别是OCR在学术研究中受到广泛关注的一个领域。
285 0
|
6月前
|
人工智能 文字识别 自然语言处理
【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?
2023年12月28-31日,由中国图象图形学学会主办的第十九届CSIG青年科学家会议在中国广州隆重召开,会议吸引了学术界和企业界专家与青年学者,会议面向国际学术前沿与国家战略需求,聚焦最新前沿技术和热点领域,共同探讨图象图形学领域的前沿问题,分享最新的研究成果和创新观点,在垂直领域大模型专场,合合信息智能技术平台事业部副总经理、高级工程师丁凯博士为我们带来了《文档图像大模型的思考与探索》主题报告。
|
6月前
|
文字识别 算法 数据库
开源OCR模型DIY票证信息抽取
票证检测矫正模型在实际生活中有着广泛的需求,例如信息抽取、图像质量判断、证件扫描、票据审计等领等场景,可以大幅提高工作效率和准确性。

热门文章

最新文章