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

如何识别文档的层级结构

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

如何识别文档的层级结构

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

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

Detect-Order-Construct方案

该方案的核心在于"构建(Construct)"阶段,主要任务是从检测到的章节标题生成一个表示层次结构的目录树。

具体实现思路如下:

  1. 从所有页面对象的多模态表示中提取每个章节标题的多模态表示。将所有章节标题的表示输入到一个Transformer编码器中,以进一步增强这些表示。此处的输入序列是根据顺序模块预测的正确阅读顺序排列的,因此可以加入位置编码来传达阅读顺序信息。

  2. 为了包含阅读顺序序列中的相对位置信息并适应文档中较大的页码规模,使用了旋转位置编码(Rotary Position Embedding, RoPE)。

  3. 引入一个树感知的目录关系预测头来预测这些章节标题之间的目录关系,该预测头包含两个不同类型的关系预测头,分别用于父子关系和兄弟关系。每个关系预测头使用一个多类(k类)分类器来计算分数,估计secj成为seci的父节点或者兄弟的可能性。

HRDoc方案

该方案提出了一个新的数据集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}。

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

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

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

DocParser方案

该方案采用较为粗暴的方法,先将各个区块截取出来设定为entity,然后定义relations={parent of,followed by, null}进行分类。启发式规则基于边界框的重叠来选择父子关系列表,然后再送入监督模型Mask R-CNN做分类。

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

总结

本文主要讲了关于文档层级结构识别的三个代表方案:Detect-Order-Construct、HRDoc(一个数据集)和DocParser方案,三个方案都是有监督思路,定义了不同的类别(parent of 居多),然后做分类模型。

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

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