1. 磐创AI首页
  2. Medium

基于深度学习体系结构(TableStruct-Net)和…的表格文档图像到结构化文本的转换

引言

随着不同形式的数据(例如图像)可用性的增加,理解和提取图像中的信息变得至关重要,尤其是包含某种表格形式的文本数据的图像。我们可以在发票、税务和银行对账单、医疗记录、设备和设施相关日志中找到它们。

表格是文档图像中信息丰富的结构化对象。

图像源Image Source

理解包含表格的文档的结构并为其提取文本有许多应用,包括但不限于可视化、分析、信息检索、内容编辑和人机交互。

表格可以有许多变化,包括不同的前景和背景颜色、字体形状、字体大小、简单/复杂结构、多列或多行单元格、宽度、填充和设计、文本对齐、表格密度等方面的差异,这使得识别表格结构和生成结构化文本格式具有挑战性。

机器理解扫描文档和手写表的结构,从中提取结构化文本(特别是CSV、XML、LXL或其他一些数据结构格式)是数百万文档分析行业的核心和战场。

TabStruct-Net

TabStruct-Net是一种端到端可训练的深度学习结构,用于单元检测和表格结构识别。TabStructNet使用表格图像作为输入(*而不是包含表格的文档图像),并尝试预测表格结构,它使用两个阶段的过程,(A)自上而下阶段(分解阶段):这是基于掩码RCNN(修改的FPN)的单元检测(基本表格对象)网络(B)自下而上阶段(合成阶段),其从单元检测网络获取信息(自上而下阶段),以及它们使用邻接矩阵的行-列关联,并重建整个表格(自下而上阶段TabStruct-net

由于以下原因,检测表格单元格是一个具有挑战性的问题:

  • 同一表格中不同大小的单元格
  • 因文字量而导致的单元格对齐方式
  • 多行单元格
  • 单元格内容缺乏语境
  • 空单元格

主要贡献:

“我们的表格结构识别解决方案分三个步骤进行-(A)检测表格单元格;(B)在检测到的单元格之间建立行/列关系;以及©后处理步骤,以根据需要生成XML输出。上图描绘了我们的做法的挡路示意图。“

自上而下:单元检测


对于细胞检测和定位,作者使用了目标检测算法Mask R-CNN,并进行了额外的增强:

(A)在Matterport的Mask_RCNN储存库中实现的来自(2,1)的特征金字塔网络(FPN),修改TabStructNet中存在的FPN。我们注意到P2、P3和P4的计算图是相似的。虽然Matterport的Mask_RCNN中甚至不存在张量占位符P{N}T、D,但为了简化这两种FPN体系结构之间的比较,这些占位符已在上面的等效位置用灰色标记。(B)来自TabStructNet(3)的FPN包括“自下而上”和“自上而下”路径。注意,虽然P3和P4计算图是相似的(即,3个输入的总和,然后是2-D卷积),但P2和P5计算图都不同,其特征是只对两个输入进行求和运算。当然,这不是对建筑的批评。我们只注意到关于(3)中的图5引导人们相信的那些感知到的矛盾。©为便于比较,从(3)重新绘制了图5。

Matterport Mask-RNN的FPN与TabStructNet预训练模型的FPN的关键区别在于TabStructNet的FPN中新引入的自底向上路径79。从图2(B)注意到,对于{C2,C3,C4,C5}到{P2,P3,P4,P5}计算,自上而下和自下而上路径中的图结构80是不同的。81具体地说,对于N={3,4},P{N}张量是对Conv2D(C{N})、P{N}T D和P{N}BU这三个82个张量之和的二维卷积运算的结果。然而,对于N={2,5},P{N}张量是每个张量只有两个张量之和的2-d83卷积运算的结果。形式上,P2=Conv2D(Conv2D(C2)(:=P2BU)+P2T D),P3=Conv2D(Conv2D(C3)+P3T D+P3BU),P4=Conv2D(Conv2D(C4)+P4T D+P4BU),P5=Conv2D(Conv2D(C5)(:=P5T D)+P5BU),其中,P2BU=Conv2D(C2P5BU=M AXP ool2D(Conv2D(P4BU)),P2T D=U pSample2D(P3T D)。

以下是该报本身的一句话:

小区检测网络的输出

细胞检测网络是对MaskRCNN网络的改进,因此输出将是一个掩码,检测到的细胞坐标,以及它们各自的概率。

细胞坐标和它们各自的客观性得分。

*注意:注意没有检测到第一列中的“Total”单元格。

自下而上:结构识别


自下而上网络使用来自P2的特征映射和来自自上而下网络的小区坐标预测(小区检测)来建立预测小区之间的关系。

由结构识别网络输出

结构识别网络输出的网络是两个邻接矩阵,分别对应于行和列。

下面是它的外观:

有30个检测到的单元格及其各自的列关系(行也是如此)。

后处理

在从结构识别网络获得输出之后,我们创建行和列邻接矩阵的XML表示。

由后处理步骤输出

下面是后处理步骤的输出:

请注意,在tablecell标记中,我们如何使用end_col子标记、end_row、stat_col子标记和start_row子标记来提供有关单元格关系的信息。

评估和实验

请阅读原始论文中关于表结构识别的评估和结果部分。Evaluation Results on Table Structure Recognition

Table2SText(Android应用程序)


表格图片到结构化文本(Table2SText)是tableStructNet作为Android应用的修改和部署。由于原来的回购需要大量的人工操作,即:tableStructNet

当您只想从表格图像中取出格式化文本时,这些步骤真的很烦人。

这些步骤已经聚合到我的tableStructNet分支中的单个步骤中。tableStructNet

APP的工作流程如下流程图所示:

表2SText​流程图

上图显示了Table2SText如何在幕后工作。

*注意:注意图片中的垂直线是由标记绘制的,这是一种向tableStructNet架构提供表结构信息的方式。我们可以通过在应用程序本身中绘制线条来虚拟地提供此信息,以便更准确地识别表格结构。

这里主要需要注意的是,tableStructNet预测输出需要很长时间。首先,由于冷启动问题,大约需要2分钟才能得到第一个预测。tableStructNet

一旦我们有了活动容器(我们的代码在其中运行的运行时环境),大约需要1分钟才能得到结果。对于这样一项简单的任务来说,现在还需要大量的时间。

今后的工作

  • 很多时候,摄像机可能会因为文档太长而无法捕获整个文档,为了解决这个问题,我们可以使用摄像机捕获整个文档,并对其进行逐段处理(表格视频到结构化文本)。
  • 在用户终端设备中部署模型,以便用户数据不需要离开设备。这是一项非常复杂的任务,因为它包括MaskRCNN、LSTM、DGCNN等架构,以及大量的预处理和后处理,使用TF-Lite将模型转换为Lite版本非常困难。
  • 使用联合学习在终端设备上训练模型,并将权重(而不是数据)发送到服务器,服务器对所有参与的终端设备的权重进行平均,以更新机器学习模型的权重,从而使算法变得更智能。您可以参考这个博客来更好地了解联合学习。

希望你觉得这个博客有用。如果您有任何问题或疑虑,请随时在下面的评论区发布。

谢谢你!!

参考文献

自上而下自下而上的提示Top-DownBottom-Up-Cues

TabStructNet将表格图像的结构捕获到XML中的效率如何?:可重现性报告How effective is TabStructNet in capturing the structure of a table-image into an XML? : A reproducibility report

获得图形神经网络的直觉|Inneke Mayachita|Analytics Vidhya|MediumGetting the Intuition of Graph Neural Networks | by Inneke Mayachita | Analytics Vidhya | Medium

理解用于节点分类的图卷积网络|Inneke Mayachita|迈向数据科学Understanding Graph Convolutional Networks for Node Classification | by Inneke Mayachita | Towards Data Science

DGCNN纸质笔记DGCNN paper notes

掩码R-CNNMask R-CNN

已申请的AICCourseAppliedAICourse

联合学习:TensorFlow中的一种循序渐进的实现Federated Learning: A Step by Step Implementation in Tensorflow

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/08/10/%e5%9f%ba%e4%ba%8e%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0%e4%bd%93%e7%b3%bb%e7%bb%93%e6%9e%84tablestruct-net%e5%92%8c%e7%9a%84%e8%a1%a8%e6%a0%bc%e6%96%87%e6%a1%a3%e5%9b%be%e5%83%8f%e5%88%b0/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息