RAG 工程实践拦路虎之一:PDF 格式解析杂谈
背景
PDF(Portable Document Format)是一种广泛用于文档交换的文件格式,由 Adobe Systems 开发。它具有跨平台性、固定布局和易于打印等特点,因此在商业、学术和个人领域广泛应用。然而,PDF 文件的解析一直是一个具有挑战性的问题,因为其内部结构的复杂性和多样性,使得提取其中的文本、图片和表格等内容并不是一件容易的事情。
在构建 RAG(Retrieval-Augmented Generation)知识库时,非结构化数据的解析质量直接决定了检索的准确性和生成回答的质量。PDF 作为最常见的文档载体,其解析效果是 RAG 系统落地的关键前置条件。
技术方案
在目前的 PDF 文件解析领域中,我们可以将其大致分为以下几类技术方案:
1. LLM/视觉大模型解析
LLM(Large Language Model)大型语言模型在近年来的发展中,展现出了强大的语言理解和生成能力。通过训练大规模的神经网络,可以实现对 PDF 文件中文字内容的理解和提取。这种方法尤其适用于那些布局复杂、内容丰富的 PDF 文件。基于视觉的大模型(如 LayoutLM 系列)能够理解文档的语义结构,将页面视为图像进行处理,从而更好地识别标题、段落和表格关系。
2. OCR 模型
光学字符识别(OCR)模型专门设计用于将 PDF 文件中的图像转换为可编辑的文本。这种技术在处理扫描版或图像化的 PDF 文档时尤其有用。现代 OCR 引擎通常结合了深度学习技术,能够识别手写体、模糊文字以及多语言混合场景。
3. 传统规则提取
传统的 PDF 解析方式可能包括基于规则的文本提取、图像处理和表格识别等方法。虽然这些方法可能不如深度学习模型那样灵活,但在某些情况下仍然是有效的选择。例如,基于坐标过滤的文本提取可以精确控制获取范围,适合结构相对固定的报表。
各个解决方案目前可能需要配合使用,因为 PDF 格式本身的复杂程度,一项技术方案可能是无法 100% 满足业务需求的。这里面需要考虑的是:
- 文档提取还原度:通过技术手段,能够完整的提取 PDF 中的各项元素,包括文本、表格、图片、链接、图形、目录等等信息。
- 高效/成本:在 RAG 知识库问答的产品中,考虑到文本还需要 Embedding 的过程,因此在提取过程中如何更高效,成本更低也是需要着重考虑的事项。
- 稳定/幂等:我们知道大模型可能是出现幻觉的,如果用大模型来提取 PDF 中的内容,是否能足够保证稳定性。确定性算法通常比概率模型更适合基础数据清洗。
当我们处理解析 PDF 时,我们需要可以将每一项的难点都进行拆分,从需求出发,逐一进行攻破,找到解决方案。
其实技术人员如果能通过技术手段确定 PDF 中的 Block(块)以及阅读顺序,按 Block(块)进行输出转换(Markdown/Html 等),这里面包括的 Block 块元素:文本、图片、表格等等。那么这个提取的效果就会达到我们的最优。而这个目标是我们接下来要重点讨论的。
技术难点
在考虑解析 PDF 文件时,我们需要根据当前的技术栈发展情况,并结合实际的业务诉求,综合考量这其中的技术难点,因为每一项技术难点所涉及的技术方案都会需要一个算法或者技术手段去突破。
而开发者从解析的效果去考虑,可以从简单的做起,逐步突破难点,这对于开发人员自身的自信心提升也是一种正向的导向。在整个 PDF 解析过程中,我觉得以下几项是比较难处理的:
1. 布局解析困难
PDF 文件的布局可能会因为不同的作者、工具或用途而有所不同。有些 PDF 是基于流式布局生成的,而有些则是基于绝对坐标定位的。解析其布局是一个具有挑战性的任务,需要区分页眉、页脚、正文和侧边栏。
2. 格式错综复杂
PDF 文件中可能包含各种格式的内容,包括文字、图像、表格等,因此解析其内容需要考虑到这种多样性和复杂性。不同字体、字号、颜色甚至透明度的叠加都可能影响解析结果。
3. 复合表格
纵向/横向合并的复杂表格,在 PDF 中进行抽象还原是最难处理的问题之一。PDF 本身并不原生支持复杂的表格对象,通常是通过绘制线条和定位文本来模拟表格。解析时需要重建单元格关系。
4. 文本、图片、表格顺序提取
提取 PDF 文件中的文本、图片和表格,并确保它们的顺序正确性,是一个需要解决的重要问题。阅读顺序往往与物理位置不一致,特别是在多栏排版中。
5. 文档结构还原
还原 PDF 文件的文档结构,包括标题、目录等信息,是实现自动化文档处理和理解的关键步骤之一。缺乏层级信息的 PDF 会导致后续切片(Chunking)策略失效。


