问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何识别文档的层级结构

创作时间:
作者:
@小白创作中心

如何识别文档的层级结构

引用
CSDN
1.
https://blog.csdn.net/yifangyun_360/article/details/144396196

文档层级结构识别是自然语言处理和文档处理领域的重要技术,广泛应用于PDF转Markdown、目录生成等场景。本文深入介绍了Detect-Order-Construct、HRDoc和DocParser三个代表性方案,详细描述了它们的技术细节和实现思路。

Detect-Order-Construct、HRDoc、DocParser三个方案

在文档处理领域,将文档按照人类的阅读习惯进行排列是一个基础任务。而要进一步对文档进行层次化处理,需要识别文档中的多级标题、段落、图表等元素之间的结构关系。这种结构关系可以通过Markdown格式呈现,进而生成目录,方便索引。这对应着文档处理领域的两个经典任务:pdf2markdown(Markdown生成)和pdf2TOC(目录生成)。这些任务的关键技术都是文档层级结构识别技术。

让我们来看看具体的实现方案。经过调研发现,这个方向虽然比较冷门,但已经有一些代表性的方案,包括Detect-Order-Construct、HRDoc(一个数据集)和DocParser方案。这三个方案都采用了有监督学习思路,定义了不同的类别(主要是"父节点"关系),然后进行分类模型训练。

一、Detect-Order-Construct方案

《Detect-Order-Construct: A Tree Construction based Approach for Hierarchical Document Structure Analysis》(https://arxiv.org/pdf/2401.11874)提供了一个完整的思路,包括检测、排序和构建(Construct)三个环节。其中,构建阶段是重点,主要任务是从检测到的章节标题生成表示层次结构的目录树。

具体实现思路如下:

  1. 从所有页面对象的多模态表示中提取每个章节标题的多模态表示。
  2. 将所有章节标题的表示输入到一个Transformer编码器中,以进一步增强这些表示。与检测模块和顺序模块中使用的Transformer编码器不同,此处的输入序列是根据顺序模块预测的正确阅读顺序排列的,因此可以加入位置编码来传达阅读顺序信息。
  3. 为了包含阅读顺序序列中的相对位置信息并适应文档中较大的页码规模,使用了旋转位置编码(Rotary Position Embedding, RoPE)。
  4. 经过多模态特征增强模块的处理后,生成章节标题的增强表示。
  5. 引入一个树感知的目录关系预测头来预测这些章节标题之间的目录关系,该预测头包含两个不同类型的关系预测头,分别用于父子关系和兄弟关系。因此,这个方案的类别数有2种。
  6. 每个关系预测头使用一个多类(k类)分类器来计算分数,估计secj成为seci的父节点或者兄弟的可能性。

二、HRDoc方案

《HRDoc: Dataset and Baseline Method Toward Hierarchical Reconstruction of Document Structure》(https://arxiv.org/abs/2303.13839)提出了一个新的数据集HRDoc和一个基于编码器-解码器的层次化文档结构解析系统(DSPS)。

在关系建模上,将所有semantic units分为14个类别:{Title, Author, Mail, Affiliation, Section, First-Line, Para-Line, Equation, Table, Figure, Caption, Page-Footer, Page-Header, and Footnote},关系分为3类{Connect, Contain, Equality}。

其中,当两个单元在语义上相连时,段落中连续行之间的关系称为Connect。例如,章节行与其第一个小节行之间的关系称为Contain。当两个单元处于同一层次结构级别时使用Equality。

通过考虑语义和视觉特征,DSPS的分类效果不错。在编码器上,使用多模态双向编码器,输入嵌入包括句子嵌入、布局嵌入、一维位置嵌入、视觉嵌入和页面嵌入。通过Transformer架构的多模态双向编码器,生成每个语义单元的表示。句子嵌入使用Sentence-Bert模型,布局嵌入使用LayoutLMv2,视觉嵌入使用ResNet-50和FPN,页面嵌入使用绝对位置嵌入。

在解码器上,使用GRU网络捕捉跨页面的信息交换,并通过注意力机制计算每个语义单元的加权隐藏状态,引入软掩码操作,利用领域特定知识调整注意力分布。

在关系分类器上,在获得每个语义单元的父节点后,使用线性投影函数对每个子父对的关系进行分类。

三、DocParser方案

《DocParser: Hierarchical Structure Parsing of Document Renderings》(https://arxiv.org/pdf/1911.01702)采用了一种较为直接的方法。首先将各个区块截取出来设定为entity,然后定义relations={parent of,followed by, null},进行分类。

思想很粗暴,例如,启发式规则基于边界框的重叠来选择父子关系列表,然后再送入监督模型Mask R-CNN做分类,效果并不很好。

其中,弱监督(WS)使用的数据集带有用于弱监督的噪声标签。

总结

本文主要介绍了文档层级结构识别的三个代表性方案:Detect-Order-Construct、HRDoc(一个数据集)和DocParser方案。这三个方案都采用了有监督学习思路,定义了不同的类别(主要是"父节点"关系),然后进行分类模型训练。

但实际上,在真实落地的过程中,我们往往很少会有这类层级结构的分类数据,并且文档十分多样,模型的通用性不会太好。所以更多的还是说使用一些规则的方式进行判定(虽然显然有很多bug)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号