PDF 文件中的文字识别与排版是一个具有一定难度的任务。
对于人类来说,浏览文档页面的认知过程是视网膜捕捉字符,大脑将其组织成段落、表格和图表等进行理解和记忆。但计算机以二进制码感知信息,文档分为有标记文档(如 Microsoft Word 和 HTML 文档,包含特殊标记来组织文本)和无标记文档(如 PDF 文档,只存储字符、线条等位置指令,无结构信息,机器难以读取,复制到 Word 时表格结构常丢失)。
基于深度学习的 ChatDOC PDF 解析器(pdflux.com)在超过一千万份文档页面的语料库上进行训练。它包含一系列复杂步骤,如 OCR 进行文字定位和识别、物理文档对象检测、跨列和跨页调整、阅读顺序确定、表格结构识别、文档逻辑结构识别等。解析后以段落和表格作为基本块,合并相邻块至达到词元限制形成分块,始终以 JSON 或 HTML 格式提供解析结果。解析后的结果类似结构清晰的 Word 文件,例如能将文档解析为内容块,包括表格、段落、图表等元素,对于表格能输出单元格文本及合并情况,对于有分级标题的文档能输出分层结构。案例中它成功解决了 PyPDF 的一些缺点,如识别混合布局、合并同一段落文本行、以 Markdown 格式表示表格并保留内部结构等。
对于人类来说,浏览任何文档页面的认知过程都是相似的。当我们阅读一个页面时,我们的视网膜会捕捉到字符。接着在我们的大脑中,这些字符被组织成段落、表格和图表,然后被理解或记忆。但计算机是以二进制码感知信息,所从计算机的角度看,文档可以分为两类,如图3所示:图3计算机视角下的两种类型的文档有标记文档(Tagged Documents):例如Microsoft Word和HTML文档,它们包含像<p>和<table>这样的特殊标记,用来将文本组织成段落、单元格和表格。无标记文档(Untagged Documents):例如PDF文档,它存储了每个文档页面上字符、线条和其他内容元素放置位置的指令。PDF文档以人类可读的方式“绘制”这些基本内容元素,但它并没有存储文档的任何结构信息,如表格或段落。因此,无标记文档仅供人类阅读,但机器无法读取。当尝试将PDF表格复制到Word中时,这一点会很明显,因为在Word中原表格的结构通常会完全丢失。
接下来,我们转向基于深度学习的解析方法,以我们的ChatDOC PDF解析器为例。ChatDOC PDF解析器(pdflux.com)在超过一千万份文档页面的语料库上进行了训练。按照引用[2]中的方法,它包含了一系列复杂的步骤:OCR进行文字定位和识别;物理文档对象检测;跨列和跨页调整;阅读顺序确定;表格结构识别;文档逻辑结构识别。读者可以参考引用[2]了解这些步骤的细节。解析后,我们用段落和表格作为基本块,然后合并相邻块,直到达到词元(Token)限制以形成一个分块。ChatDOC PDF解析器旨在始终以JSON或HTML格式提供解析结果,即使对于有挑战性的PDF文档也是如此。它将文档解析为内容块,其中每个分块指代一个表格、段落、图表或其他类型的内容元素。对于表格,它会输出每个表格单元格中的文本,并告知哪些单元格被合并成一个新的单元格。此外,对于具有分级标题的文档,它会输出文档的分层结构。
总之,解析后的结果就像一个结构清晰的Word文件。图5展示了一个扫描复印页面及其解析结果。左侧展示了文档及识别的内容块(不同内容块用不同颜色的矩形表示)。右侧展示了JSON或HTML格式的解析结果。读者可以参考引用[3]查看这个解析结果的在线演示。图5 ChatDOC PDF解析器的解析结果。放大查看细节。然后,我们查看了ChatDOC PDF解析器在案例1中的结果,如图6所示。它成功解决了PyPDF的三个缺点。图6案例一中ChatDOC的解析和分块结果(原文档:[4])。放大查看细节。1.如“3分块结果可视化”部分所示,ChatDOC PDF解析器识别了混合布局,并正确地将整个表格设置为一个单独的分块。对于段落,如“2分块结果”部分中的分块2所示,同一段落中的文本行会被合并到一起,使其更易于理解。1.在“2分块结果”部分的分块1中,我们可以看到表格以Markdown格式表示,保留了表格的内部结构。