Deep Splitting and Merging for Table Structure Decomposition 中文翻译 (表格结构识别)

更新:非常抱歉,经过交流讨论,发现一处我的代码错误,Merge 模型中最前面应该加上对应的 SFCN,我写了 SFCN 但是却没加入到 Merge 模型中。

更新:最近有把之前的 tf keras 实现发出来,splitmerge 各一篇。

更新:我自己用 tf 实现的 SPLERGE 代码已开源在 githubgitee,因为数据很少,模型效果是 over-fitting 的,仅供学习。

之前做表格结构识别任务时,找到的表现最优的论文即本篇 SPLERGE, ICDAR 2019 表格结构识别最佳论文(提取码:fj4y)。整个工作可以分 split 和 merge 两大块,有一点 top - down 和 bottom - up 的感觉。而且整个方法中,并不主要关注表格线是否显式绘出,而是更关注表格中的文字排布,进而得到结构。原论文作者没有开源代码,找到一个复现的项目代码(相关博文相关项目)。

项目作者介绍说其没有联通 split 和 merge 两个阶段(没有准备好 merge 阶段的输入),且学习论文查看代码后发现 split 阶段实现得还有写欠缺(论文有图割阶段,项目中没有提及,增加处理之后效果明显更符合预期)。

ICDAR 2013 表格数据非常有限,处理之后用来做 split 还可以看到一些训练效果,但是用来训练 merge 实在有点捉襟见肘,主要是数据集中有大量不需要 merge 的情况。也就是说,想让 merge 阶段学到如何 merge,得较为均匀地准备 “需要merge” 和 “不需要merge” 的数据(而ICDAR 2013数据无法满足此要求)。原论文作者也有说明其训练数据主要是 a much larger private dataset。

当时很喜欢这篇论文,也为了方便组内交流学习,翻译了一下。

摘要

鉴于表格的多样性和复杂性,表格结构抽取是文档自动分析系统中的一项具有挑战性的任务。我们提出了一组深度学习模型(分割和合并模型),模型接受一张图片作为输入,首先预测图片中的基本网格模式(分割模型),然后预测哪些网格元素应该被合并以恢复跨多行或多列的单元。我们创新提出了投影池化作为分割模型的一个组件,网格池化作为合并模型的一个组件。虽然大多数全卷积网络依赖于局部特征,但这些独特的池化区域使得模型可以利用表格的全局结构。我们在 ICDAR 2013 年表格竞赛的 PDF 文档公开数据集上取得了最先进的表现。在一个我们用来训练模型的更大的私有数据集上,我们模型的性能明显优于目前最先进的深度模型和一套商业软件系统。

关键词

表格结构抽取 深度学习 卷积神经网络

概要

在文档中,表格通常用来表示结构化数据。自动确定表格的结构如单元格的位置以及如何形成行列关系,是文档理解和信息抽取工作中的关键部分。这项工作的重点包含未标注表格的文档图像和可移植文档格式(PDF)。在视觉上,图像由再现文档的像素组成(如文档扫描),但不含任何结构信息。虽然 PDF 用离散绘图命令绘制文本和线条,却无法明确表示表格。例如,可以使用单个文本绘制命令来渲染单元的一部分、整个单元、多个单元的部分或多个整个单元。这种模糊性使得从 PDF 绘图命令中难以提取表格结构。

以下几个因素增加了解析表格结构的复杂性。通常,解析具有显式线条的表格比隐式线条表格更容易,因为它们有明确的视觉信息来划分单元格、列和行。还有一种类型的表格仅含有部分显式线条或使用阴影表示边界。另外,表格可能具有复杂的分层标题结构,或者没有标题。在处理具有多行单元格的表格时,还需要确定垂直相邻的文本行是否为同一个单元。此外,跨多个列和行的单元格增加了表格的复杂度。

此前很多提取表格结构的工作都是基于分析 PDF 绘图命令系统的规则,也就是说,它们不直接分析文档图像。虽然启发式方法以往在 PDF 上的表现优于学习方法,但它们不能直接应用于图像。此外,启发式规则有许多参数,这些参数必须根据表格的结构、视觉外观和复杂性的广泛变化进行调整。

最近,有人提出了使用深度学习的方法直接从图像中学习表格结构。Deep DeSRT 模型使用了最初为自然场景语义分割而设计的神经网络,因此主要使用局部信息对像素进行分类。然而,由于单元格和单元格分隔符都包含大量空白区域,因此局部信息通常不足以用来检测表格单元格的边界。此外,许多隐式线条表格中的单元格边界都采取了全局一致的文本对齐(例如,列中的所有单元格都左对齐到列边界)。为了解决这些问题,我们提出的深度模型在更大图像区域上执行池化,以允许分类特征在整个图像中传播。

在这项工作中,我们提出的一组深度学习模型根据经过良好裁剪的表格图像预测表格结构。Split 模型预测表格的精细网格结构,Merge 模型预测单元格跨多个列或行的位置。我们将组合的 Split 和 Merge 模型统称为 SPLERGE。Split 模型使用了新的池化区域,称为投影池化。在此池化过程中,特征沿着像素的行和列汇集,以帮助学习到的特征在更大图像中传播。因此,在同一行(列)中但在图像的两侧的像素可以交换它们关于行(列)边界所在位置的局部信息。这个模型的输出是表格的网格结构,忽略跨越单元。Merge 模型将原始表格图像作为输入,并预测先前预测的网格中的哪些元素需要合并以恢复跨行(列)单元。Merge 模型贡献了新颖的网格池化,其中池化区域由 Split 模型的网格输出决定。这使得局部像素特性可以很容易地在大单元间传播,并且允许在相邻单元之间交换特征。

我们在 ICDAR 2013 年表格竞赛数据集上达到了目前最好的水平,获得了 95.15% 的邻接关系 F-测度,此前最佳公开结果为 94.6%。我们还在一个更大、更多样化的私有表格图像数据集上评估了 SPLERGE 的性能,它显著优于目前最先进的深度学习模型和一套商业软件系统。

研究现状

虽然很多工作都集中在表格检测,但是很少有工作尝试提取表格结构。

2013 年 ICDAR 表格竞赛比较了许多表格结构识别系统,包括 Nurminen 提出的最佳方法。这种方法对渲染的 PDF 图像进行边缘检测(过滤掉文本引起的边缘),以找到交叉点和矩形区域。然后,它遵循一系列启发式步骤将文本分配给行,识别出可能的列和标题,修改行,合并列,找到跨越单元格等。后来 Shigarov 提出了一种更简单的、自下而上合并 PDF 组件的启发式方法。TEXUS 系统通过将每个文本块视为一个单元来执行简单的表格结构解析。与这些方法相比,我们不需要启发式操作,并且兼容处理 PDF 和输入的图像表格。

DeepDeSRT 学习模型将表格结构提取作为两个独立的像素标记任务,分别对行对象和列对象进行分割。它优化了针对自然场景的 PASCAL VOC 语义分割竞赛中的预训练 FCN-2s 模型。虽然它只需要图像作为输入,但它在 PDF 上的表现逊色于启发式方法。这可能是因为行(列)和非行(非列)区域通常都包含了大量的白色背景(例如,行中单元之间的空白),这使得仅依靠局部信息做到像素分类很困难。相比之下,SPLERGE 将信息集中在更大区域,以使用更多的全局信息。Clinchat 等人 对 70 世纪手写表格扫描图像的两种学习模型进行比较。模型专注于这个特定的问题,使用模板匹配来恢复列并将图像转换为类似 PDF 的文档。要恢复表格的行,它们使用条件随机场或他们提出的边卷积网络,该网络属于图卷积网络的一个扩展。

SPLERGE

我们提出的表格结构提取方法 SPLERGE 由两个深度学习模型组成,依次执行分割和合并操作(如图 1)。分割模型将经过良好剪裁的表格图像作为输入,并以行分隔符和列分隔符的形式生成表格的网格结构,这些分隔符跨越整个图像。由于有些表格包含跨越单元,所以我们将合并模型应用到分割模型的网格输出中,合并相邻的网格元素以恢复跨越单元。
在这里插入图片描述

Split 模型

分割模型将任何维度 H × W 的图像作为输入,输出两个一维输出信号: r ∈ [ 0 , 1 ] H r \in [0, 1]^H r[0,1]H c ∈ [ 0 , 1 ] W c \in [0, 1]^W c[0,1]W。输出的信号 r 和 c 代表了每个行(列)像素是逻辑表格行(列)分隔区的一部分的概率。分割模型由 3 个子网络组成:

  • 1)共享全卷积网络(SFCN);
  • 2)行投影网络(RPN);
  • 3)列投影网络(CPN)。

SFCN 计算局部图像特征,这些特征被用于 RPN 和 CPN 中。RPN 和 CPN 通过进一步处理这些局部特征来预测行和列分隔符(分别是 r 和 c )。

SFCN 由 3 个具有 7 x 7 卷积核的卷积层组成,最后一层进行空洞卷积,空洞系数为 2。每层生成 18 个特征图并,使用 ReLU 激活函数。

空洞卷积类似池化,增加了网络的感受野,但与池化不同的是,它保留了输入的空间分辨率信息。在表格结构提取中,保留输入的空间分辨率很重要,因为许多列和行分隔符的宽度只有几个像素。在文献 [6] 中,当调整初始输入的大小以使分离区域变大时,可以获得更好的结果。拥有一个大的感受野也是至关重要的,因为确定行和列分隔符的位置可能需要全局上下文信息。例如,始终左对齐到同一位置的文本表示列分隔符。

SFCN 的输出作为 RPN 和 CPN 的输入。RPN 的输出是 r,即每行像素是行分隔区域一部分的概率。类似地,CPN 的输出是 c。除了是行像素还是列像素上进行投影和池化操作以外,RPN 和 CPN 具有相同的结构,因此我们后文只讨论 RPN。

尽管可以使用任意数量的块, 本文中的 RPN 由 5 个链式块组成。实际上,我们采用 5 个以上的块并不能改善结果,同时使用类似的过程来确定其他特定的架构选择。为了简化讨论和说明,我们在实验中实际使用了超参数值,但也可以使用其他合理的值。在一个合理的范围内改变超参数,似乎不会对我们的非正式实验结果产生显著影响。图 2 为单个块执行的操作。首先,并行输入到 3 个具有 2/3/4 扩张因子的卷积层中,每个卷积层产生 6 个特征图。将每个空洞卷积的输出串联起来,得到 18 个特征图。使用多个扩张因子可以让 RPN 学习到多尺度特征并增加其感受野,同时仍然可以采集到更多的局部信息。
在这里插入图片描述
接下来,RPN 执行 1 x 2 的最大池化(CPN 执行 2 x 1 的最大池化)。这降低了特征图的宽度,但保持了其高度,因此输出信号 r 的大小为 H。只有前 3 个块执行最大池化,以确保宽度没有被过度降采样。

然后如图 2 中的顶部分支,RPN 通过先后进行 1 x 1 卷积运算和投影池化(图 3)计算行特征。投影池化的灵感来自于在经典布局分析方法中用来寻找空白的投影轮廓操作。我们使用投影池化保持了输入的空间大小(而不像在投影剖面中那样直接折叠为 1D),并用行平均值替换每个输入值。分别用 i 和 j 来表示特征图 F 的行列索引,其中 1 ≤ j ≤ W。按照池化操作的典型做法,在每个特征图 F 上独立应用投影池化,得到的结果 F ^ \hat{F} F^ 可以表示为

在这里插入图片描述
这种方式的池化允许信息在图像的整个宽度上传播,这个宽度可能超过1000个像素。这些行特征串联到最大池化操作的输出,因此每个像素都具有局部和行全局特征。请注意,CPN 与 RPN类似,执行列投影池化如下
在这里插入图片描述
图 2 的底部分支显示了块如何生成行预测,虽然不是每个块都这样做。1 x 1 卷积产生一个输出图,我们在其上执行投影池化。然后我们应用一个 sigmoid 函数来产生概率。由于每行像素包含一个唯一的概率,我们可以取一个垂直切片来获得概率的一维信号 r n r^n rn,其中 n 表示块索引。为了使中间预测 r n r^n rn可用于第 n + 1 个块,我们还将 2D 中的概率串联到块的输出。

在我们的实现中,只有最后 3 个块产生输出,即 r3、r4、r5。在训练过程中,我们对所有三个预测都应用一个损失函数,但是在训练之后,我们只使用最后一个预测 r5 来进行推理。这种迭代预测过程允许模型进行预测,然后对预测进行优化。这些技术已经成功地应用于自然场景中的结构化关键点检测任务(例如人类姿势[12])。

1) 训练:

SFCN、RPN 和 CPN 子网络以典型的监督方式在 150 DPI 的表格图像上进行联合训练。我们假设图像被裁剪成只包含表格单元格,而不包括不在单元格区域中的表格标题、说明和脚注。

每个表格都有标注的真实(GT)1D 信号 r ∗ r^* r c ∗ c^* c。如图 4 所示,GT 被设计用来在不与任何非跨越单元内容相交的情况下最大化分隔区域的尺寸。这与传统的单元分隔符概念相反,对于许多表来说,单元格分隔符是只有几像素厚的细线。预测小区域比大区域更困难,并且对于隐式线条表格的情况,单元分隔符的确切位置定义不够明确。对于跨多行或多列的单元格,GT 分隔符区域可能与单元格内容相交。拆分模型的目标是恢复表格的基本网格,而跨越单元由合并模型处理。

在这里插入图片描述

损失函数是块预测和 GT 信号之间的平均元素二值化交叉熵:

在这里插入图片描述

为了防止过拟合,我们修改了公式(3),当 ∣ r i ∗ − r i ∣ < 0.1 |r^*_i - r_i| < 0.1 riri<0.1,将每个元素的 loss 置为 0。总 loss 是各个输出loss 的加权和,其中 λ 4 = 0.25 \lambda_4 = 0.25 λ4=0.25 λ 3 = 0.1 \lambda_3 = 0.1 λ3=0.1

在这里插入图片描述

我们采用 ADAM 优化器进行随机初始化,更新大约 1 0 6 10^6 106 个权重。批处理大小为 1,因为表格图像具有不同的空间大小。初始学习率为 0.00075,每 80K 次更新衰减 0.75 倍。

2) 预测:

一旦我们得到预测 r,我们需要推断行分隔符出现的像素位置。为了简单起见,讨论集中在 r 上,但是同样的过程也适用于 c 来获得列分隔符。为此,我们通过在 r 上执行 graphcut 分割,将图像分成行和行分隔区域。然后选择与每个推断的分隔区域中点相对应的行像素位置。

为了创建分割 r 的图,我们将 H 个节点排列成一个线性链,其中每个节点都与其两个相邻节点相连(除了两端的两个节点)。相邻边权重均匀设置为 λ g c = 0.75 λ_{gc} = 0.75 λgc=0.75。节点 i 与源节点之间边的权重为 r i r_i ri,与汇聚节点之间边的权重 1 − r i 1 - r_i 1ri

Merge model

合并模型使用输入图像和分割模型的输出预测需要合并哪些网格元素以恢复跨多行或多列的单元格。输入张量是表格图像、输出行/列概率(r,c)、推断的行/列区域和预测的网格结构的串联。预测的概率 r 和 c 通过叠加(即[r,r,…)转换为二维图像。推断的行/列区域被渲染为二进制掩码(类似于图 4 中的红色区域)。预测的网格结构被渲染为二进制掩码,其中每个行和列分隔符区域的中点被渲染为一个 7 像素宽的线条。此外,网格结构用于确定模型的池化区域。

如果网格结构由 M 行和 N 列组成,则模型输出两个矩阵:

1)D-probs 自上而下合并,大小为(M−1)× N,

2)R-probs 自左而右合并,大小为 M × (N - 1)。

$ D_{ij} 是合并单元格( i , j )与单元格( i + 1 , j )的概率, 是合并单元格(i,j)与单元格(i + 1,j)的概率, 是合并单元格(ij)与单元格(i+1j)的概率,$ R_{ij} $$是合并单元格(i,j)和单元格(i,j+1)的概率。D的大小不是 M × N,因为任何列中只有 M − 1 对上下合并。在我们的公式中,所有这些概率都是独立的,即单个网格单元可以在多个方向合并。

合并模型的框架结构与分割模型类似。有一组 4 个共享卷积层(无空洞卷积),其中第 2 层和第 4 层后有 2 x 2 平均池化。然后,该模型分为 4 个分支,每个分支预测一个 M × N 概率矩阵,该矩阵表示单元在特定方向上合并,即上、下、左或右。将这些矩阵用u,d,l,r 表示,在公式(5)和(6)中,根据独立性假设,我们可以将两个单独的概率相乘,当两个概率都接近 0 时,这会为优化带来困难,所以我们将按照下面公式计算 D 和 R:

在这里插入图片描述

直观地说,只有在单个分支输出之间存在一致性时,我们才预测应该合并这对单元。

每个分支由 3 个相似的块组成,类似于图 2 所示的分割模型块。不同之处在于,并行卷积层使用 1/2/3 的扩张因子,不执行最大池化,投影池化被网格池化代替(图 5)。在网格池化中,每个像素位置的取值用其网格元素内所有像素的平均值替换:
在这里插入图片描述
在这里插入图片描述

其中Ω(i,j)是与像素(i,j)共享相同网格元素的所有像素的坐标集集合。在网格池化之后,同一网格元素中的所有像素共享相同的值,这允许信息在每个单元中传播。随后的卷积允许信息在相邻的细胞之间传播。为了生成给定分支的 u、d、l 或 r 矩阵,我们对每个网格元素中预测的每像素概率取平均,并将其排列在 M × N 矩阵中。与分割模型一样,合并模型也执行迭代输出优化,其中块 2 和块 3 生成输出预测。

1) 训练:

因为拆分和合并模型是按顺序使用的,所以我们使用分割模型生成的网格结构来训练合并模型。为了构造 GT D和 R 矩阵(见图 6),我们进行了下面操作:

1)迭代表格中的所有跨越单元

2)确定哪些网格元素与跨越单元的 GT 边缘框相交

3) 对于适当的方向,将每个单元格的合并概率设置为 1。
在这里插入图片描述

在分割模型中,每个输出的损失函数是平均(剪裁)元素二进制交叉熵(式 4)。总损失是

在这里插入图片描述

在用于训练模型的私有数据集中,只有15% 的表格中存在跨越单元,因此我们对数据集进行了子抽样,使得用于训练合并模型的数据集中 50% 的表格至少拥有 1 对单元需要合并。训练超参数与分割模型相似。

2) 推理

推理过程中,以 0.5 的概率对 D 和 R 进行阈值化,并合并所指示的单元。网络预测没有对只产生矩形合并单元的约束,因此在后处理中添加了额外的合并,以确保生成的表格结构只有矩形单元。例如,合并在一起形成 L 形单元的 3 个网格元素,将与第 4 个元素合并以创建跨越 2 行 2 列的单元。

实验结果

ICDAR 2013

私有数据集

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值