(本文阅读时间:11分钟)
阅读序列抽取是指通过抽取扫描文档或数字商业文档中的单词并重新进行排序,将原本独立的单词组合成读者可以理解的文本。对于大部分电子文档,如网页、Word 文档等,获取正确的阅读序列并不困难,只要分析源代码即可。但是许多扫描文档或 PDF 文档并不具备这样的信息。因此,错误的阅读序列不仅让读者无法理解,还会导致文档智能分析难以进行,因为文档智能分析是将扫描文档或数字商业文档中的关键信息抽取,把非结构化的信息更加结构化,进而实现自动化文档理解的。
然而,现有的文档智能分析模型仍依赖文档内容的输入顺序,若关键信息部分出现错乱,很有可能导致模型判断错误或遗漏信息。因此,阅读序列抽取是文档智能分析中一项非常重要的任务。
日常工作、生活中的文档具备各种不同的模版和格式,为了提取阅读序列,传统方法往往直接将单词按照从左到右、从上到下的顺序进行排列或通过人工来匹配模版。但当出现多栏、表格等格式时,传统方法通常就会失效。若为了应对种类繁多的文档类型,则需要引入大规模预训练语言模型,借助文档中的文本信息、布局位置等信息进行阅读序列抽取。
图1:ReadingBank 数据集中文档图片的阅读序列示意图
由于现有数据集存在着不能满足预训练要求且人工标注构建新数据集的成本过高等问题。所以,微软亚洲研究院自然语言计算组的研究员们利用 Word 文档中的 XML 源码,构建了首个大规模阅读序列数据集 ReadingBank,并基于 ReadingBank 提出了阅读序列抽取模型 LayoutReader。
当前多模态信息抽取模型(LayoutLM、LayoutLMv2)通常依赖文档中的文字内容和对应的位置。所以ReadingBank包括两部分:按照正确阅读顺序排列的文字内容(阅读序列),以及这些文字在当前页面内的位置。
文档收集
Word 文档有两种格式,分别为 .doc 和 .docx,这里只使用 .docx 文档,因为需要借助其解压缩后的 XML 源码。研究员们通过文档长度和语言检测 API 过滤掉低质量的文本和非英文的文档,最终共爬取了210,000个英文 .docx 文档,并随机抽取了其中的500,000页作为数据集。
获取阅读序列
阅读序列是当前文档中按照正确阅读顺序排列的文字内容,如何在不借助人工标注的情况下得到正确的阅读顺序是个难题。为此,研究员们借助了 Word 文档中的 XML 源码,构建出了正确的阅读序列。XML 源码中记录了 Word 文档中的所有信息,并按照文档本身的阅读顺序依次排列。于是,研究员们首先借助了开源工具 python-docx 解析网络上爬取的 .docx 文档,然后逐一段落、逐一单元格遍历整个文档,进而获得阅读序列。
获取对应位置信息
虽然 Word 文档包含了正确的阅读顺序信息,但是 XML 源码并不记录对应的位置,而是当用户打开文档时再进行实时渲染。为了固定文字获得准确的位置信息,研究员们借助了 PDF Metamorphosis .Net 工具,将 Word 文档转换为 PDF,再通过 PDF 解析器,获取文字在 PDF 页面内的位置。
有了阅读序列和阅读序列中文字的位置,接下来就需要构建“阅读序列”与“对应位置”之间的一一对应。常用的方法通常是利用文字之间的对应关系,比如在 Word 文档中的“MSRA”与 PDF 中的“MSRA”相对应。然而当文档中一个词出现次数大于一次时,就无法建立这种简单的对应关系。
为了区别出现在不同位置的同一个词,学术界常采用“染色法”。首先为阅读序列中的每个单词添加序号,当某个词首次出现时标注为0,第二次出现时标注为1,以此类推。同时将这个单词进行染色,字体颜色由一个双射函数 C 确定,这样在转换为 PDF后就可以通过解析器获得字体颜色,进而还原出原本序号。所以通过文字内容结合出现次序的序号,就可以在阅读序列和从 PDF 提取出的位置之间建立一个对应关系。
图2:通过对于 Word 文档的文字染色构建 ReadingBank 数据集
由于有了这样的对应关系,因此就可以将阅读序列中的单词添加到对应的位置,进而得到完整的数据集。研究员们按照8:1:1的比例进行随机分割,分别得到训练集、验证集和测试集。分割后的数据集信息如下表1所示。数据集各个部分分割均衡,在下游任务中也不会出现数据不平衡的情况。
表1:随机分割后的数据集(Avg. BLEU 是指将从左向右从上到下排列与 ReadingBank 相比较计算得到的 BLEU 值,ARD 是指平均相对距离,用于衡量数据集的难度)
研究员们又基于 Seq2Seq 模型提出了 LayoutReader,并在 ReadingBank 上进行了预训练。模型输入为页面内按照从左到右、从上到下排列的文字序列,目标序列为由 ReadingBank 提供的阅读序列。(点击阅读原文,获取论文详细信息)
编码器
为了利用位置布局信息,研究员们用 LayoutLM 作为了编码器,将输入序列和目标序列相连接,利用 mask 控制 Attention 过程中各个位置可见的信息,从而实现 Seq2Seq 的模型。
解码器
由于输入序列和目标序列都来自相同的单词序列,只是顺序不同,所以研究员们修改了解码器,将原本从词表中预测下一个单词,改为从输入序列中预测下一个单词,即预测下一个单词在输入序列中的序号。
基准模型
研究员们将 LayoutReader 和启发式方法、纯文本方法和纯布局方法进行了比较:
启发式方法 (Heuristic Method):即将文本内容按照从左到右从上到下的顺序排列。
纯文本方法:将 LayoutReader 中的编码器 LayoutLM 替换为纯文本的编码器,如 BERT 和 UniLM,这样模型将无法利用位置布局信息进行预测。
纯布局方法:移除 LayoutReader 编码器 LayoutLM 中的词向量,这样模型无法利用文本信息。
评估方法
研究员们利用了两个评估指标来衡量模型的效果:
平均页面 BLEU 值:BLEU 值是常见的衡量序列生成效果的指标。通过将输出序列和ReadingBank提供的目标序列相比较,可以得到对应的 BLEU 值。
平均相对距离(ARD):因为模型输出序列与目标序列内容相同,区别只在于对应单词的位置不同,所以通过对应单词的距离可以验证模型的效果。当生成过程中出现单词缺失的情况时,ARD 同时会引入惩罚。公式如下,其中 A 是输出序列,B 是目标序列,e_k 是 A 中第 k 个单词,I(e_k, B) 则是指 e 在 B 中的序号。
阅读序列抽取
模型的输入为从左到右、从上到下的单词序列。将输出序列与 ReadingBank 进行比较,从结果中可以看出,结合文本信息和布局信息的 LayoutReader 取得了最优的结果,相比最常使用的启发式方法,平均页面 BLEU 值提高了0.2847,平均相对距离减少了6.71。在去除文本模态或布局模态之后,结果依旧有所提高。在平均页面 BLEU 上,分别提升了0.16和0.27。而纯文本方法在平均相对距离上则有所下降,主要原因是平均相对距离中对单词缺失的惩罚项。同时,比较纯文本方法和纯布局方法也可以看出布局信息起到了更重要的作用,纯布局方法相较于纯文本方法在平均页面 BLEU 上提升0.1左右,在平均相对距离上提升了9.0左右。
表2 :LayoutReader 模型在 ReadingBank 数据集的实验结果(输入顺序是从左到右、从上到下)
输入顺序研究
以上的实验都是基于从左到右、从上到下的输入序列。由于人们的阅读习惯,这样的训练为后续生成起到了很大的提示作用,输入顺序研究旨在研究训练或者测试时,输入顺序对结果的影响。因此,研究员们分别设计了两个实验进行验证:
在训练时将一部分训练样本打乱,不再以从左到右、从上到下的顺序输入,而在测试时,依旧保留从左到右、从上到下的输入
更进一步,在训练时依旧将一部分训练样本打乱,在测试时,输入的全部是打乱单词顺序的序列。
实验结果如下(r 是训练样本打乱的比例):
表3 :训练时打乱部分样本,测试时保持从左到右、从上到下的顺序
表4:训练时打乱部分样本,测试时打乱全部样本
从结果中可以看到,相对于前三行做比较的模型,LayoutReader 结合文本信息和布局信息,能够有效对抗打乱的输入,几乎在所有场景下都保持了较好的效果。在实验二中,可以看到当在训练样本没有打乱(r=0%),即保持从左到右、从上到下的顺序输入,但测试时使用打乱样本的情况下,结果有极大的下降。研究员们认为这是由于训练时过拟合了从左到右、从上到下的顺序,进而无法应对陌生的打乱顺序的输入。这与之前的结果相符,说明位置信息对阅读顺序有着更强的指导作用。
在 OCR 中的应用
当前OCR已经能够很好地识别对应的文字,但却没有关注这些文字的排列顺序。因此,研究员们利用 LayoutReader 将 OCR 得到的文本行,按照阅读顺序排列。然后,将文本行对应的 bounding box 与各个单词的 bounding box 求交集,再将各个单词分配给交集最大的文本行,并且将文本行按照所包含单词的最小序号排序,进而将得到的顺序和 ReadingBank 的顺序进行比较。研究员们选择了一个开源 OCR 算法 Tesseract,和一个商用 OCR 算法,得到如下结果:
表 5:针对 Tesseract OCR 文本行进行对比实验
表 6:针对一种商业 OCR 引擎本文行进对比实验
从以上结果可以看出,LayoutReader 相比于两个 OCR 算法,都能得到更好的结果;相比于商用 OCR 依旧能够在 BLEU 上提高0.1左右,在 ARD 上降低2左右。
未来,微软亚洲研究院的研究员们计划进一步从 ReadingBank 中提取阅读顺序,通过引入更多噪声和诸如旋转的变换,使得数据集更加鲁棒,能够运用于更多场景。同时,在大规模数据集 ReadingBank 的基础上,研究员们也将引入特定领域的少数人工标注,将阅读顺序抽取有着更细致的运用。
论文链接:
https://arxiv.org/abs/2108.11591
模型代码:
https://aka.ms/layoutreader
你也许还想看: