摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别、文字检测、文字识别、单元格和文字框对齐。其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识别用到的是Master模型。

本文分享自华为云社区《论文解读二十八:表格识别模型TableMaster》,作者: cver。

1. 概述

在表格识别中,模型一般先回归出单元格的坐标,然后再根据单元格的坐标得到表格的行列信息。对于有表格线的场景,模型可以比较准确地获取单元格坐标,进而可以利用单元格坐标后处理得到行列信息。对于无表格线情况,通常难以直接得到单元格位置或表格线信息,这时通常需要利用模型训练的方式获取文字块的空间布局。例如在图模型中,常见的识别流程是先由OCR模型获取文字框的坐标和文字内容,然后结合视觉、位置、语义等多模态信息,并利用图网络来预测文字节点的行列属性,进而恢复出表格的结构。

在平安科技最新发布的表格识别模型TableMaster中,提出了另外一种解决思路,即同时训练得到单元格内的文字块位置和表格结构。这里涉及到表格的另一种表达形式,这种形式在网页中经常被用到,也即用超文本标记语言来定义表格(如图1)。

图1 表格的超文本标记符和对应的表格

根据超文本标记语言的语法规则,表格是由 <table> 标签来定义,每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义)。从图1可以看出,一个表格被表示成了一段文本字符序列,这样就可以用序列化的模型(seq2seq或transformer)来进行表格结构预测。

2.TableMaster

2.1 表格结构识别流程

TableMaster采用多任务的学习模式,它有两个分支,一个分支进行表格结构序列预测,一个分支进行单元格位置回归。在TableMaster识别结束后,识别结果经过后处理匹配算法,融合表格结构序列和单元格文本内容,得到表格最终的html(如图2)。

图2 TableMaster表格识别流程 2.2 TableMaster原理

2.2 TableMaster原理

2.2.1 网络架构

TableMaster基于Master[2]模型进行了修改。Master是平安自研的文本识别模型, 其网络结构分为编码和解码两个部分。编码的网络结构借鉴ResNet的残差连接结构。和ResNet不同的是,Master的编码网络在每一个残差连接块之后接了一个多头通道注意力模块(Multi-Aspect GCAttention):

其中h是多头注意力的个数。

编码阶段是整个Master网络的关键,其把一张图片转换成序列,使得可以用Transformer进行解码。在编码阶段输入的图片维度为:48*160*1,输出的维度为6*40*512,其中512就是模型的序列长度。编码阶段输出的序列特征再经过位置编码,输入到解码阶段。解码部分是由三个常规的Transformer 解码层组成(如图3)。

图3 Master模型结构,图片来源[2]

TableMaster特征提取模型也即编码结构和Master一致,和Master结构不同的地方在解码部分。TableMaster的解码部分相对于Master增加了一个分支:在经过一个Transformer层之后,TableMaster的解码部分分成两个分支。之后每个分支再接两个Transformer层,分别对应两个学习任务:单元格文字框的回归以及表格结构序列的预测。

图4 TableMaster和Master模型结构对比,图片来源[1]

2.2.2 输入和输出

TableMaster特征提取阶段输入图片的维度为480*480*3,输出的维度为7*7*500,然后把输出的序列特征reshape到49*500,输入到解码阶段。其中500是模型的序列长度,49为每个位置序列特征的维度。表格的类别标签有38个(如图5),再加上开始和结束两个标签,模型中用到的类别标签一共是41个。

图5 Tablemaster模型中表格的38类标签,图片来源[1]

其中有两个<td></td>,一个表示空单元格,一个表示非空单元格。

标记符中有<tbody>、</tbody>、<tr>、</tr>等表示表格开始和行的标记符以及空单元格的标记符。这些标记符没有对应的文字块坐标。因此标记符序列长度比实际的单元格序列长。为了使得单元格序列和标记符序列一样长,在单元格序列中,对应于<tbody>、</tbody>、<tr>、</tr>标记的位置会填充为0。而这些位置的坐标在回归单元格坐标时不用于参数的更新,会被一个Mask过滤掉。

下图展示了TableMaster识别的表格结构序列和单元格坐标:

图6 TableMaster预测的结果。(a)原图;(b)预测的文字框;(c)预测的表格结构序列

2.2.3 文字框定位和识别

在文字检测和识别阶段用到的文字检测模型为经典的PSENet[3]。文字识别用到的模型就是上文提到的Master。利用PSENet+Master模型组合,文字端到端的识别精度可以达到0.9885。

2.2.4 还原完整的html

TableMaster网络输出的表格结构序列并不是最终的html序列。为了得到表格最终的html序列还需要在表格结构标记符中填充对应的文字内容,其流程如下:

图7 由识别结果到最终的html序列。(a)流程图;(b)最终的html序列;(c)html序列可视化

其中重要的一步就是单元格的匹配:根据单元格坐标和文字框坐标,把文字框坐标和单元格坐标进行对齐,然后就可以把对应文字框的识别内容填充到对应单元格的标记符序列中,从而得到最终的html文本。文字框的对齐主要基于三个规则:1、中心点规则,如果文字框的中心点在单元格框内,则把文字框相应的文字内容填充到对应的<td></td>中;2、IOU规则,在第一点不满足的情况下,计算和文字框具有最大IOU的单元格框作为匹配项;3、距离原则,如果以上两点都不满足,则计算所有单元格和文字框的距离,选取距离最小的单元格框作为匹配项。

通过序列化模型来进行表格结构的还原是一种有效的表格结构识别方法,类似的还有百度的RARE。和TableMaster不同的是,RARE把TableMaster中的Transformer换成了GRU。另外,该方法只利用了图像的视觉信息,后续工作中可以结合多模态特征得到更好效果。

文献引用

[1] Jiaquan Ye , Xianbiao Qi , Yelin He , Yihao Chen , Dengyi Gu , Peng Gao , and Rong Xiao. PingAn-VCGroup's Solution for ICDAR 2021 Competition on Scientific Literature Parsing Task B: Table Recognition to HTML. arXiv:2105.01848, 2021.

[2] Ning Lu, Wenwen Yu, Xianbiao Qi, Yihao Chen, Ping Gong, Rong Xiao, and Xiang Bai. Master: Multi-aspect non-local network for scene text recognition. Pattern Recognition, 2021.

[3]Wenhai Wang, Enze Xie, Xiang Li, Wenbo Hou, Tong Lu, Gang Yu, and Shuai Shao. Shape robust text detection with progressive scale expansion network. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 9336–9345, 2019.

点击关注,第一时间了解华为云新鲜技术~

论文解读丨表格识别模型TableMaster的更多相关文章

  1. 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)

    摘要:本文提出一种基于局部特征保留的图卷积网络架构,与最新的对比算法相比,该方法在多个数据集上的图分类性能得到大幅度提升,泛化性能也得到了改善. 本文分享自华为云社区<论文解读:基于局部特征保留 ...

  2. 人工智能论文解读精选 | PRGC:一种新的联合关系抽取模型

    NLP论文解读 原创•作者 | 小欣   论文标题:PRGC: Potential Relation and Global Correspondence Based Joint Relational ...

  3. CVPR2020行人重识别算法论文解读

    CVPR2020行人重识别算法论文解读 Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer 具有特定共享特征变换 ...

  4. CVPR2020论文解读:OCR场景文本识别

    CVPR2020论文解读:OCR场景文本识别 ABCNet:  Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...

  5. NLP论文解读:无需模板且高效的语言微调模型(上)

    原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论文 ...

  6. NLP论文解读:无需模板且高效的语言微调模型(下)

    原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论文 ...

  7. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

  8. zz扔掉anchor!真正的CenterNet——Objects as Points论文解读

    首发于深度学习那些事 已关注写文章   扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 ​关注他 JustDoIT 等 ...

  9. 医学AI论文解读 |Circulation|2018| 超声心动图的全自动检测在临床上的应用

    文章来自微信公众号:机器学习炼丹术.号主炼丹兄WX:cyx645016617.文章有问题或者想交流的话欢迎- 参考目录: @ 目录 0 论文 1 概述 2 pipeline 3 技术细节 3.1 预处 ...

随机推荐

  1. 20210713考试-2021noip13

    这位巨佬的博客还是比我好多了 T1 工业题 考场: 暴力挺香的,不想正解了. 题解: $f(i,j)$ 只会得到 $f(i-1,j)$ 和 $f(i,j-1)$ 的贡献.每向右一步乘 $a$ ,向下一 ...

  2. Python - 面向对象编程 - 小实战(1)

    题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...

  3. Linux常用命令 - head命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 显示文 ...

  4. Spring中使用@within与@target的一些区别

    目录 背景 模拟项目例子 看看使用@within和@target的区别 @within @target @target 看起来跟合理一点 通知方法中注解参数的值为什么是不一样的 想用@within,但 ...

  5. Activiti 学习(四)—— Activiti 结合实际业务

    流程实例 流程实例(ProcessInstance)代表流程定义的执行实例.一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等信息.例如:用户或程序按照流程定义内容发起一 ...

  6. css颜色字符串转换, 字符串转化为驼峰形式

    * 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff1. rgb 中每个 , 后面的空格数量不固定2. 十六进制表达式使用六位小写字母3. 如 ...

  7. aws中centos登陆连接设置

    第一步:使用aws密钥文件(.pem)登陆(*在shell中需使用新建的会话,不能直接,使用原来的会话进行修改,否则无法进入) 点击浏览器,点添加,再点击导入,选择.pem 文件 第二步: 登陆后,使 ...

  8. 『Python』优雅的记录日志——loguru

    1. 安装 pip install loguru 2. 初识 from loguru import logger logger.debug("This is a debug..." ...

  9. 鸿蒙内核源码分析(源码结构篇) | 内核每个文件的含义 | 百篇博客分析OpenHarmony源码 | v18.04

    百篇博客系列篇.本篇为: v18.xx 鸿蒙内核源码分析(源码结构篇) | 内核每个文件的含义 | 51.c.h .o 前因后果相关篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 ...

  10. YbtOJ#532-往事之树【广义SAM,线段树合并】

    正题 题目链接:https://www.ybtoj.com.cn/problem/532 题目大意 给出\(n\)个点的一个\(Trie\)树,定义\(S_x\)表示节点\(x\)代表的字符串 求$$ ...