电子文档全景结构识别漫谈

图片

1.引言

电子文档(Electronic Document),是文档在个人电脑、平板电脑、手机等电子设备上的视觉呈现形式,已经被广泛运用于各个领域(例如金融、专利、政府等)。PDF(Portable Document Format)文档是现今最常用的对外分发的电子文档格式。其最主要的优点是独立性:一旦文档被制成,那么他的本文格式和视觉效果就将完全固定,并且在任何的应用程序、硬件、操作系统或者打印设备下,都会以同一种方式呈现。

然而,这种优点同样也是一柄双刃剑。为了保证在不同设备上都以同种视觉效果呈现,PDF文档仅仅记录了每个页面上的字符、线条的位置、颜色、大小等信息,导致文档的结构信息完全丢失。我们用下面两个例子来一探究竟。

视频1:PDF文档无法复制出表格结构

这个例子中,我们想复制出PDF中的表格到Word中进行编辑。但是,我们只能复制出这些表格中的文本,而无法获得表格行列结构以及单元格合并等信息。

视频2:PDF文档无法复制出段落结构

另一个例子中,我们想复制出PDF中的一些段落到Word中进行编辑。但是,我们发现这些文本被分成了多个单独的行,而无法获得整个段落。

通过这两个例子,我们发现,PDF文档为了保持文档的视觉效果,而牺牲了文档的结构信息。而这些结构信息恰恰对于PDF文档的进一步分析和再利用是至关重要的。因此,让计算机“读懂”电子文档,首先需要进行“文档全景结构识别”(Panoptic Document Structure Recognition)。这一任务指的是:

对所输入的多页且复杂排版的电子文档,生成一个丰富而完整的文档的物理结构和逻辑结构。

这是迈向后续文档语义理解的重要一步。

读到这里,您一定有很多疑问。什么是文档的物理结构,逻辑结构?为什么PDF文档内就没有存储这些信息呢?为了回答这些问题,我们首先得回顾一下PDF文档的起源,探究它所存储的内容。

2.全面认识PDF文档

 2.1 PDF起源

时间拨回到1982年,彼时,年近四十的犹他大学计算机博士John Warnock和好友Charles Geschke创立了自己的公司Adobe Systems——就是日后发明Photoshop的Adobe。到了1991年春天,在推出第一款产品——印刷语言PostScript——一款桌面打印软件之后,Warnock推进了一个名叫“Camelot”的项目,它随后演变成了被广泛使用的PDF。

图片

图1:Charles Geschke (左) and John Warnock(右)in 1982(出处

“(Camelot的初衷是)为了有效地从任何应用上获取文档,并可以将它们的电子版发送到任何地方,在任何机器上查阅和打印它们。” 

                                                                                 ——John Warnock

PDF起初只是一种文本页面预览格式,主要是出于为方便电子打印的目的。但时值电子阅读兴起:一方面,消费者们开始将注意力从纸质阅读转向电子阅读,他们需要一款便捷、可靠的文档阅读工具。而一本电子书在传输过程中,假若可以被任何一位使用者进行删减也是现实中无法接受的。另一方面,企业存在着一个迫切的需求:同一份文档经过传输,依旧在不同机器、不同操作系统上显示出视觉内容完全一致的文档。直到今天,我们发现同一份Word文档在Windows操作系统和macOS上的展示效果不同。但是,PDF文档能做到。

那么PDF到底是如何达成这些需求的呢?让我们深入产品的内部来一探究竟。

2.2 PDF原理

首先我们想一下,平时大家最常用最便捷的用来传输、显式、打印不同类型的文档的方法是什么?没错,就是截图,把文档的一个个页面保存成图片。因为图片是由固定个数的具有颜色的像素点组成,所以图片完全保留了视觉效果——在任何设备上显式的效果都是一样的。但是,我们发现,一个图片进行放大会失真,放的越大,失真就越严重,这是因为图片的像素个数是固定的。但是PDF在保留视觉效果的同时放大也不会失真。

想要去理解具体是如何做到的,我们就要深入PDF的本文数据存储方式。首先我们介绍三个重要的概念:字形(glyph)、字体(font)和码位(code point)。

字形指的是拥有特殊形状和包围框的矢量图形对象。PDF浏览工具(例如Adobe Acrobat、福昕阅读器等)可以把一个字符在屏幕渲染成字形上以供人观看。比如字符“g”,渲染在屏幕上的图形如下图所示。由于是矢量图形,因此放大时其对应的像素会增加,于是不管放大多少看起来都不会失真。

图片

图2:字符"g"对应的字形(出处

字体是包含一组字符和字形对应的集合。字体包含字体大小(font size)、字体加粗(font bold)、字体家族(font family)等内容。以字体家族为例我们通常比较熟悉的中文字体家族“宋体”和英文字体家族“Times New Roman”。相同的字符在不同的字体中字形是不同的,比如同样是字符“g”,在“Times New Roman”中对应的字形是“g”,而在“Arial”中对应的字形是“g”。

码位是以数字形式存储用来表示特定字形,其主要是让计算机知道需要渲染哪一个字形。比如字形“g”对应的码位是0067。

PDF的文本内容,存储的实际上就是一系列的程序指令,每一条程序指令会告诉PDF浏览工具,在某个位置画一个特定的字形或者线条。虽然我们用PDF浏览工具打开一个PDF文档后,直接就呈现出我们看到的视觉样式,但实际上计算机内部完成了从程序指令到视觉内容的“翻译”过程。我们用下图来举一个例子。

图片

图3:左图-PDF渲染后的视觉效果;右图-PDF文件中存储的程序指令(出处

上右图中,第一条程序指令的意思是:“在(503,688)这个位置,用白色和8.5大小的字体去绘制一个字形m……”。通过这些指令,PDF浏览工具于是在屏幕上渲染出了一个个字形,一个个绿色、蓝色、黑色的线条,使得最终我们看到如上左图的视觉样式。因此,不论在任何应用程序、操作系统、打印设备中,我们所看到的视觉样式是完全一样的。PDF就像是电子版的“活字印刷”,非常出色地完成了这个使命。

 2.3 PDF遇到的挑战

如此看来,PDF文档只是存储了一条条绘制视觉内容(仅包括字形、线条、色块、图片)的程序指令。也就是说,它只是记录了每个页面上的字符、线条等对象的位置、颜色、大小等信息,而不包括任何结构信息。因此,通过PDF文件存储的内容,计算机是无法直接得知“哪里是一个表格”,“这个段落是否跨栏或者跨页了”,“哪些内容是文章的第三小节”等结构信息的。但是,人类强大的视觉系统和认知能力,可以将文档中独立的字符、线条、色块等对象组合、抽象,从而完全理解文档所蕴含的丰富完整的结构信息。

PDF文档中的这些丰富的信息,包含了重要的利用价值。以金融领域为例,假如投资者想分析对比一些上市公司今年的运营情况,他会去阅读这些公司披露的年度报告。例如,获知该公司的主营业务和产品是哪些;分析年度报告中资产负债表、利润表、现金流量表等;查找其供货商是哪些公司……。而上市公司的数量如此之多,一篇年度报告可能有300页左右,如此大的工作量如果能够用机器替代人工,那会节省巨大的时间和成本。而通过机器来理解和分析PDF文档中蕴含的知识,最重要的基础就是获得文档中丰富完整的全景结构信息。想象一下,如果连文档哪里是一个表格,每个章节标题是什么都不知道,还如何获得更高层次的信息和知识呢。接下来,本文会继续解释,文档“丰富完整的全景结构信息”具体指的是哪些信息?又如何通过计算机来识别这些信息?

3.文档全景结构识别

为了更好地理解文档具体包含哪些结构信息,我们先来思考一个PDF文档是如何制作成的?想象一下,我们用Office Word等编辑软件来写一篇文章。首先会构思文章的总体结构,即每一个章节会安排什么内容,这其实就是文档的逻辑结构。《Encyclopedia of Database Systems》一书中为文档的“逻辑结构”给出了形式化的定义:

逻辑结构是指文档中信息的组织方式,它定义了信息的层次结构以及文档不同部分间的关系。逻辑结构指示文档的构建方式,而非文档包含的内容。

当逻辑结构构思好了之后,我们会在每一个章节里安排具体的内容。例如每一个段落会介绍什么;为了方便阅读,某些地方会插入表格、图表、图片等;这些其实就是文档的物理结构。论文("Physical and logical structure recognition of pdf documents." PhD disssert, éditeur non identifié, 2010)中为文档的“物理结构”给出了形式化的定义:

一篇文档的物理结构对应于每一页中物理组件的组织形式,页面的不同区域可以被划分成段落、表格、图表等逻辑组件,而这些逻辑组件可以被进一步划分成文本、线条。

注意,这些物理结构和逻辑结构在文档编辑过程中是存在的。例如,用Word编辑时,我们会用格式刷将某些内容刷成不同层级的标题,某些地方我们会直接插入表格、图表等组件……。但是,一旦文档编辑完成,输出成PDF文档以在不同设备间显式和传递,这些物理结构和逻辑结构就“消失”了。难怪有人戏称,PDF文档是数据和内容消亡的地方(PDFs are where data and content go to die)。

于是挑战应运而生。如何通过这些PDF文档的底层信息(仅可获得页面中的字符和线条等内容),最终整合出整篇文档的物理结构和逻辑结构?我们提出了非常有意义的问题——文档全景结构识别。通过文档全景结构识别,我们可以“复活”一篇PDF文档。

本文引言部分,我们给出了文档全景结构识别的定义——对所输入的多页且复杂排版的电子文档,生成一个丰富而完整的文档的物理结构和逻辑结构。在此我们强调文档全景结构包含的两个重要性质——丰富性和完整性。一方面,丰富性指的是文档的物理对象类别众多,包括段落、表格、图表、页眉、页脚、公式、算法块等;另一方面,完整性指的是从物理结构到逻辑结构的完整识别,包括合并跨页(栏)对象、确定物理对象之间的阅读顺序以及整篇文档的逻辑结构。具体地,我们将全景结构识别分成4个重要的步骤:检测物理对象、修整跨页(栏)对象、确定阅读顺序、识别逻辑结构。接下来,我们以一篇审计报告文档中连续的3个页面作为样例,来介绍文档全景结构识别的四个步骤以及最终效果。

图片

图4:样例文档,来自一篇审计报告的连续3个页面

 3.1 检测物理对象

对于一篇给定的文档,检测物理对象的目标是遍历每一个页面,检测出页面中的每一个物理对象并且使用一个包围框描绘出该对象所在的区域。这里,物理对象指的是表格、图表、段落、页眉、页脚等元素;每个包围框包含四个坐标:左上角、右上角、左下角和右下角。如下图所示,示例页面中的每一个物理对象都使用了特定的颜色绘制出其包围框。

图片

图5:检测物理对象示例

虽然图中仅以三个页面作为示例,实际上整篇文档的每一个页面都会进行检测物理对象这一步骤。通过检测物理对象,我们可以将PDF中存储的字符和线条进行分组,以获得页面中一个个独立的物理对象。例如,第一个页面中,页眉对象包含的字符为“中诚信国际 穆迪投资者服务公司成员”,其下方的第一个段落对象包含的字符为“基本分析”。因此,获得每一个物理对象的包围框同时,也得到了每一个物理对象的类别,以及其包含的所有字符和线条。

 3.2 修整跨页(栏)对象

经过检测物理对象步骤之后,在文档每个页面中,我们获得了一个一个独立的物理对象。接下来的修正跨页(栏)对象步骤,主要目标是删除冗余对象和合并跨页(栏)对象,消除文档中“页面”的概念,以获得文档级别的物理对象集合。注意,某些文档的每一页会是双栏排版,那么其实不同的分栏区域页类似于文档页的概念。如下图所示,示例页面中的某些物理对象被移除,某些对象被合并。

图片

图6:修整跨页对象示例

首先,需要强调的是,“页面”这一概念存在的意义是因为,一篇文档包含的内容较多,为了方便人类阅读和理解,将文档分成多个页面并且每个页面中展示部分内容。这会导致,较大的表格或者段落被切分成多个部分,然后展示在相邻的页面(或者跨栏区域)中。例如图中第二页第一个分栏区域结尾和第二个分栏区域开头分别有一个段落,但他们其实是一个段落由于跨栏被分成了两个段落;第一页结尾和第二页开头的表格都是公司主要销售客户表的一部分,因此也应该被合并成一个大表格。

同时,每个页面中也存在一些冗余的对象。例如页眉和页脚,主要是用以标识页面的一些属性,但是对于整篇文档的阅读和理解而言,不仅没有提供有用的信息,而且对于跨页(栏)对象的合并具有干扰作用。例如,第一页结尾的段落下方是页脚,第二页开头的段落上方是页眉,恰好夹在这两个需要合并的表格之间,产生干扰。因此我们需要移除这些冗余的物理对象。

通过修整跨页(栏)对象之后,文档便不再具有“页面”的概念,而是一些物理对象的集合。这极大地便利了机器对文档的分析和理解。

 3.3 确定阅读顺序

人类阅读一个文档时,总是按照某种顺序,一页一页一段一段地依次阅读。这是因为人类对某个事物的理解总是有序的,从简单到困难。就像学数学,首先学习小学简单的数字加减乘除法,然后才能学习中学的代数计算以及大学的微积分。同样,文档的内容也是按照一定的顺序进行排列的,随心所欲的阅读往往最后完全无法理解文档到底介绍了什么内容。

机器的理解和分析也是如此,需要将文档中所有的物理对象按照一定的顺序进行排列,一般称之为文档阅读顺序。如下图所示,29个物理元素按照1-29的顺序依次排列,组成了物理对象有序序列。由于一般的文档都是按照经典的阅读模式,即从上到下,从左到右的顺序进行排布,所以文档阅读顺序很容易确定。而对于一些比较复杂排版的文档,则需要一些先验知识才能确定准确的阅读顺序。

图片

图7:确定阅读顺序示例

 3.4 识别逻辑结构

文档中逻辑元素除了以一种特定的顺序递进排列,往往还存在一种逻辑上的层级关系。这是因为,作者编写一篇文档之前,会构思文章的总体结构,即文档会分成几个章节,每个章节具体介绍什么方面的内容。然后再按照构思好的框架,在每个章节内部,按顺序安排具体的段落、表格、图表等具体对象。识别逻辑结构这一步骤,正是为了将有序的物理对象序列转化成反应物理对象之间并列和包含关系的章节层级结构。

图片

图8:识别逻辑结构示例

仔细观察可以发现,上述的三页示例文档,主要介绍了三个方面,分别是“基本分析”(对象1)、“担保实力”(对象37)和“总结”(对象43)。“基本分析”主要是对“合德轻工”(对象2)的分析,主要包含三个方面,分别是“原材料……”(对象3)、“依托稳定的客户……”(对象13)和“资产规模”(对象27)。这些物理对象的内容比较精炼并且对接下来的内容进行高度概括的段落,被称为标题。不同标题之间是并列或者包含的关系。而对每个标题进行展开介绍,则是一些具体的段落、表格、图表等物理对象。于是,整个文档就组成了一个以标题为中间节点,以具体物理对象为叶子节点的章节层级结构树。通常,一篇文档会将比较高层的标题罗列在文档的最开始部分,组成文档的目录结构。

通过文档全景结构识别,我们将仅仅由一个个独立的字形组成的PDF文档,转化成了具有章节层级结构的物理对象组合,获得了对整篇文档宏观的全景化的理解。使得机器不仅仅知道文档中包含哪些字符和线条,也知道某些字符和线条组成了一个个段落、表格、图表等内容,而且清晰地掌握了这些段落、表格、图表之间的并列和递进关系。基于这些基础的认知,可以帮助之后的一些任务,例如在表格中抽取信息、从文档中检索想要的内容等任务。可以说,文档全景结构识别,是理解和分析包含丰富信息的PDF文档的基础,使得“数据消亡”的PDF文档重新“复活”。

4.PDFlux介绍

 4.1 产品概况

PDFlux是庖丁科技研发的电子文档内容和数据提取神器,其致力于完成文档全景结构识别任务。针对金融领域的对外披露文档,我们进行了大量的人工标注,并且设计了复杂的模型对这些数据进行训练。经过多年的打磨,现在可以处理各种类型的文档,包括金融类的年度报告、债券募集书,也能轻松处理论文文献、行业报告等。

我们以上面的示例文档作为输入文件,传到PDFlux网页版中。然后点击“识别表格”按钮,PDFlux会对正片文档进行全景结构识别,在中间的页面中,展示出每一页的识别结果。接下来的步骤PDFlux是一次性预测出来的,为了方便理解,我们通过图片将分解步骤展示出来。

首先,PDFlux会对每一个页面识别出分栏区域,通过绘制出的分栏线,用户可以清晰地看到每一个分栏区域包含哪些内容。

图片

图9:PDFlux对文档进行全景结构识别——获取分栏区域

然后,PDFlux会识别出每个分栏区域中的每一个段落、图表、表格、页眉、页脚、脚注等具体物理对象。用户可以通过对光标的移动,定位到每一个物理对象上,对不同的物理对象可以进行不同的操作。

例如,当移动到段落对象上时,用户可以复制段落中的文本,编辑段落中的文本、对段落中的文本进行翻译,并且可以选择翻译工具。当移动到图表对象上时,用户可以对该图表进行截图,复制到其他文档中。当移动到表格对象上时,系统会展示出对该表格的深度解析,例如获取表格行列线、合并对应的单元格、获取单元格的对齐方式等。这样,用户可以对该表格进行复制,并且可以直接粘贴到Excel、Word等编辑工具中进行编辑。

图片

图10:PDFlux对文档进行全景结构识别——获取物理对象“段落”

图片

图11:PDFlux对文档进行全景结构识别——“段落”翻译功能

图片

图12:PDFlux对文档进行全景结构识别——获取物理对象“图表”

图片

图13:PDFlux对文档进行全景结构识别——“图表”截图功能

图片

图14:PDFlux对文档进行全景结构识别——获取物理对象“表格”

图片

图15:PDFlux对文档进行全景结构识别——展示“表格”结构

除此之外,PDFlux也分析了所有跨页(栏)的段落、表格是否需要合并。用户可以通过光标点击到对应的段落上,如果出现下图的图标,说明该段落或者表格是需要合并的。如果系统识别错误,用户可以通过点击按钮来解除跨页(栏)段落、表格的合并操作。

图片

图16:PDFlux对文档进行全景结构识别——跨页对象合并

除了PDFlux由于引入了大量的人工准确标注数据,并且这些数据来源于各种金融文档,例如年报、招股书、债券募集说明书、研究报告、评级报告等。因此,PDFlux可以轻松应对各种文档,无论是单栏文档还是多栏文档,无论页面是横板还是竖版,无论表格是有线框表格还是无线框表格。

图片

图片

图片

图17:PDFlux对文档进行全景结构识别——更多示例

除此之外,PDFlux还会对整篇文档提取目录结构,用户可以通过点击左侧的目录按钮,系统会将目录以选项卡的方式展示在最左侧。用户可以通过点击每一个标题,系统就会跳转到该页面,方便用户阅读。如果想看某个标题的子标题,用户可以通过点击改标题左侧的显示/隐藏图标。无论是短文档还是长文档,PDFlux都可以应对。

图片

图片

图18:PDFlux对文档进行全景结构识别——目录结构识别

最后,PDFlux还提供了一项非常友好的功能——整篇PDF文档转Word/EPUB/MOBI。用户可以通过点击下载按钮,然后点击相应的格式,PDFlux会弹出下载中心。用户耐心等待片刻,PDFlux会将PDF转化成对应的格式,然后下载到本地。当然,如果只想处理某一个页面,也可以点击复制本页按钮,然后粘贴在对应的编辑软件中进行编辑。

图片

图片

图19:PDFLux直接将PDF文档导出为Word、EPUB、MOBI

通过强大的模型、大量的标注数据,以及细致的产品设计,PDFlux希望能为每个想处理PDF文档的用户提供贴心的服务。PDFlux的目标是,使得“数据消亡”的PDF文档重新“复活”。PDFlux提供了客户端版网页版和微信小程序版(微信小程序中搜索PDFlux),可以方便用户灵活使用。

 4.2 PDFlux的SaaS服务

为了方便于计算机对PDF文档的分析和理解,PDFlux还对外提供了SaaS服务,以RESTful API的调用形式,使得用户获得想要的内容。

SaaS服务的地址为:

 https://www.pdflux.com/apidocs/。用户也可以通过阅读说明文档了解详情(点击“说明文档”以跳转)。

首先,用户通过“上传文件API”,向SaaS服务上传PDF文档

图片

图20:SaaS服务示例——“上传文件API”

然后,用户可以通过“获取文档解析结果API”,获得文档中的所有段落、图表、表格、页眉、页脚等内容,并且获得他们的阅读顺序。对于表格,还可以获得表格行列结构和单元格合并方式的信息。对于跨页的段落和表格,也可以获得相应的信息。

图片

图21:SaaS服务示例——“获取文档解析结果API”

最后,用户可以通过“下载结果API”,获取文档转化成Excel或者HTML后的对应文件,一站式地进行PDF文档转Word/Excel/HTML。

图片

图22:SaaS服务示例——“下载结果API”

5.总结与展望

人们的需求催生了各式产品,而好的产品更是服务、寻求、乃至创造更高标准的需求。PDF文档在“视觉内容呈现”上表现十分完美,但在“内容再利用”等方面存在着诸多应用困境。对此,我们提出了“文档全景结构识别”,对所输入的多页且复杂排版的电子文档,生成一个丰富而完整的文档的物理结构和逻辑结构。识别出的物理和逻辑结构,利于进一步对文档进行分析,很好地解决了PDF文档“内容再利用”方面的不足。

庖丁科技打造了以PDFlux为首的一系列产品,它们在诸如金融领域的任务上已经检验了其可靠性与优越性,而且它们能实现的其它文档智能的功能还在不断成长。经过近年来不懈的努力,庖丁科技已逐渐发展成为金融文档智能领域的领航者。我们的产品,在众多大型金融机构落地,每天都在帮助他们提升工作效率和防范合规风险。除了金融行业,我们已展望到这些产品在其它“文档工作密集型”行业的应用前景,并坚信技术能推动这些行业的革新和发展。

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值