RAG 实战指南(二):一文搞懂RAG 的文档解析

116 阅读6分钟

本文是RAG 实战指南的第二篇文章,这篇主要带大家搞懂RAG 的文档解析,废话不多说,开造!

1749089371803.jpg

1.前言

在大语言模型(LLM)如ChatGPT、Claude、Gemini日益强大的今天,人们希望它们不仅能“生成”,还要“准确生成”。然而,LLM训练的数据往往是静态的、封闭的,这使得它们在面对时效性强、专业性高、上下文复杂的问题时,力不从心。

在有些时候,企业内部或者事业部门内部的数据是不允许公开上传的,那么也就没有办法享受到大模型的服务,生产力也得不到解放。

这时,RAG(Retrieval-Augmented Generation,检索增强生成)应运而生。它是连接“生成能力”与“外部知识”的桥梁,让LLM不再是“闭门造车”,而成为真正的知识型智能体。

对于RAG来说,最重要的无疑是从文档中提取内容作为知识库,所以从文档中提取得到高质量的数据至关重要。

从计算机的角度来看,文档主要分为两类:

  • 有标记的文档:如Word,Markdown,HTML,JSON等,这些文档具有明确的结构,计算机可以直接解析和理解。
  • 无标记的文档: 如图像,pdf等,这些文档缺乏结构信息,计算机无法直接理解其内容。

下面介绍当下对pdf文件进行解析的方法。

2.pdf解析难点

pdf是一种和docx以及doc文档一样最常见的文档格式。以下介绍和分析以gpt3论文中的第9页为例。

尽管 PDF(Portable Document Format)是一种通用、稳定、跨平台的文档格式,但它并不是为结构化数据提取设计的格式,这也使得从中提取高质量、结构化的知识成为一项技术挑战。主要难点包括:

1. 格式复杂、结构不统一

PDF 文件更像是“数字版的打印纸张”,其本质是页面渲染信息,而不是像 HTML、XML 那样的结构化标记语言。这导致同样是一个段落或表格,不同的 PDF 文件可能用完全不同的底层表示方式来编码。因此:

  • 标题和正文没有语义上的“层级结构”;
  • 表格、列表、图像和段落难以准确分离;
  • 多栏排版、复杂排版(如学术论文)易导致文本顺序错乱。

2. 内容可能是图片而非文本

许多扫描版文档(如合同、书籍、报表等)将内容以图像形式嵌入 PDF,此时需要 OCR(Optical Character Recognition,光学字符识别)工具进行识别,但 OCR:

  • 容易受图像质量、字体、旋转角度等因素影响;
  • 误识率高,可能产生错别字或结构错位;
  • 表格、公式识别精度更低。

3. 表格、图表提取困难

PDF 中的表格通常以线段 + 文本方式绘制,并非内嵌结构表格数据。这导致表格提取需依赖:

  • 文字坐标分析;
  • 网格线推断;
  • 机器学习辅助模型等。
    而图表(如折线图、饼图)更难提取出其中的数据值,往往只能通过图像分析手段尝试“反推”。

4. 跨页内容难以关联

如长段落、长表格跨越多个页面时,PDF 中并没有“语义信息”标明它们属于同一个结构,需人工或智能算法识别其上下文关联性。

5. 不同语言、字体、排版标准差异

特别是在多语种文档处理(如中英文混排、右到左语言等)中,不同语言的排版逻辑和标点规则可能导致解析工具无法正确断句、分段,影响后续向量化建库质量。

3.基于规则的方法

这是最早期也是最基础的 PDF 解析思路,依赖 PDF 文档的结构信息(如页数、文本框、字体大小、位置等),通过手动设计规则提取内容。以 Python 中的 PyPDF2 或 PyPDF4 为代表,它们支持读取 PDF 文件中的文本、页码、元信息等。 以最基础的PyPDF库为例进行介绍。

从图中的分析结果可以看到,PyPDF不对图片进行识别,输出的格式只支持txt,并且在文档换行的时候对应的识别结果也出现换行,段落完整性较差。

类似的基于规则的方法还有PyMuPDF等等, 这种方法适用于对文档结构非常了解的场景,如内部模板化文档、批量合同抽取等。

4.基于深度学习的方法

为了解决规则方法在结构复杂文档中的局限,近年来出现了以 深度学习模型 为核心的解析方法。典型代表如 LayoutParserDonutDocTR 等,结合图像分割、目标检测模型,对 PDF 页面进行版面分析(Layout Analysis),流程大致如下

1. 将 PDF 页面渲染为图像;
2. 使用模型识别出页面中的“标题”“段落”“表格”“图像”等区块;
3. 再使用 OCR 对每个区块进行文本识别;
4. 结合位置、标签进行结构化重构。

以PaddleOCR团队自研的智能文档分析系统PP-StructureV2为例,系统首先经过图像矫正模块,判断图方向并完成转正,随后进行版面信息分析和关键信息抽取。图像经过版面分析模型对文件不同区域进行划分,包括文本,图像,表格等等,随后对不同的区域进行识别,最后使用版面恢复将其恢复为与原始文件布局一致的文件中。

从上面的识别结果可以看出,相比于基于规则的识别方法,深度学习方法段落完整性较好,可适应多种布局;模型可迁移至各类文档(论文、发票、报告等);但是表格识别和图像识别仍然不够准确,同时需依赖 GPU 计算资源,对于语义理解和上下文推理仍然有限。

5.基于多模态大模型的方法

随着多模态大模型的发展,PDF 内容解析开始进入“端到端智能理解”阶段。这类方法利用图文输入能力强大的模型(如 GPT-4V、Gemini、Claude、MiniGPT-4),直接输入页面截图或文档图片,由大模型进行内容提取与理解。典型方式如下:

1. <font style="color:rgb(25, 27, 31);">将 PDF 渲染成图像;</font>
2. <font style="color:rgb(25, 27, 31);">提问如:“请总结这页的主要内容”“这页的表格中第一列是什么含义”;</font>
3. <font style="color:rgb(25, 27, 31);">LMM 模型结合视觉+语言能力返回结构化或自然语言内容。</font>

以Qwen2.5-VL系列模型为例,在 Qwen2.5-VL 中设计了一种更全面的文档解析格式,称为 QwenVL HTML 格式,它既可以将文档中的文本精准地识别出来,也能够提取文档元素(如图片、表格等)的位置信息,从而准确地将文档中的版面布局进行精准还原。

多模态模型无需预定义规则或模型训练,能处理复杂结构、跨页关联、图表内容,并支持语义级别的问答、摘要、推理。但是成本高(API调用或推理资源),对上下文窗口长度、图像清晰度等有一定要求。

原文地址:https://zhuanlan.zhihu.com/p/1912549174966194672