文档解析与清洗:垃圾进,垃圾出

01-RAG基础与架构 核心 约 20 分钟 #解析#PDF#表格#OCR#清洗 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照经典文献复核。

一句话定义

文档解析把 PDF、扫描件、网页、Office 文档转成干净的带结构文本——它决定分块边界是否有意义、表格数字是否存活、页眉页脚噪音是否混入索引,是"垃圾进垃圾出"定律生效的第一站。

为什么重要

企业知识大多不以干净 Markdown 存在:扫描合同、双栏论文、带合并单元格的 Excel、聊天记录导出。解析丢一处,检索就永久缺一块证据——而且这种缺失是静默的(用户只会看到"模型答不上",不会知道是解析丢了)。解析质量的上限就是整个 RAG 系统的上限。

前置知识

kp-002(流水线位置)。

核心概念

  • 文本层 vs 扫描层:PDF 有内嵌文本层的可直接抽取;纯扫描件必须 OCR(识别质量、版面分析、公式表格处理都是误差源)。
  • 版面分析(layout analysis):识别标题、正文、表格、图片、页眉页脚、双栏顺序——PDF 的物理存储顺序 ≠ 阅读顺序,双栏文档直接顺序抽取会得到两栏交错的乱文。
  • 表格抽取:目标是保留二维结构(Markdown 表 / HTML 表),而非拍平成一行文字——"营收 100"脱离表头就毫无意义。
  • 结构保留:标题层级转 Markdown heading,为 kp-004 的结构感知分块提供边界信号。
  • 清洗:去页眉页脚水印、去重复导航、规范化空白与编码、去 OCR 常见错字模式。

原理与机制

为什么 PDF 难:PDF 是排版指令集而非文档语义结构——"视觉上是一张表"在文件里可能是一堆绝对定位的文字行。因此 PDF 解析的本质是从渲染结果反推语义结构:主流方案(如版面检测模型 + 结构重建,或 miner/Unstructured/pymupdf 类工具组合)先做区域检测再分类(正文/表/图),表格区域走专门的表格结构识别。

处理策略分层(按投入递增):① 原生文本直接抽取(快、零成本,覆盖大头);② 版面感知解析(双栏/图文混排);③ OCR + 表格识别(扫描件,最贵最慢且误差最大)。工程要点是按文档类型路由,并对 OCR 结果做置信度标记,低置信片段降权或不入库。

清洗的红线:清洗不足则索引被页码、"第 X 页共 Y 页"、版权声明污染(这些内容高频出现,会大量命中无关查询);清洗过度则把"表 3-2"这类有价值的交叉引用信息抹掉。清洗规则必须带白名单意识。

图示

PDF(双栏+表格)
 ├─ 原生文本层? ──是──► 抽取 + 版面排序(先左栏后右栏)
 └─ 否(扫描) ──► OCR ─► 版面分析 ─► 表格结构识别 ─► Markdown(带置信度)
输出: # 章节 / 正文段 / | 表格 | / [页眉已剔除]

实例或案例

  • 财报 PDF:利润表被 naive 解析拍平成"项目金额项目金额…"的乱串,嵌入后无法命中"2023 年净利润"——必须表格结构化。
  • 双栏学术论文顺序抽取导致两句不同栏的话拼接成病句,分块后语义崩坏。
  • 内部 wiki 导出 HTML:导航菜单每页重复,检索时大量噪音命中——清洗去导航是第一刀。

常见误区

  • 误区一:"解析就是提取纯文本"。丢掉结构与表格等于丢掉语义;标题层级和表格结构是下游分块与引用的生命线。
  • 误区二:"OCR 置信度不看直接入库"。低置信错字(0 与 O、中文字形误识)会让该块永远无法被正确查询命中,且用户无从察觉;必须带置信度门限。
  • 误区三:"一次性解析完就不管了"。文档源格式会变(新版 PDF 模板、新扫描仪),解析质量需要抽检监控,最好入库时保留解析质量标记。

与其他知识点的关系

  • kp-004:结构信号(标题)是分块的边界依据。
  • kp-006:解析产物(页码、章节)构成元数据。
  • kp-033:多模态 RAG 的前置是图文混合解析。

自测题

  1. 为什么 PDF 的文本抽取顺序可能是错的?

答:PDF 存储的是排版指令与坐标而非逻辑结构,双栏/浮动元素的物理顺序不等于阅读顺序,需要版面分析重建。

  1. 表格为什么要保留二维结构而不是拍平?

答:单元格数值依赖行列表头才有语义("100"是哪个季度哪个指标),拍平后嵌入无法表达该关系,检索与生成都会失败。

  1. OCR 结果入库前应做什么?

答:按置信度过滤或降权、清洗常见错字、保留"来自扫描件"的元数据标记,避免低质块污染检索。

延伸阅读

  • Unstructured / LlamaParse / MinerU 等解析工具文档。
  • Zhong 等, "Image-based Table Recognition"(表格结构识别综述)。
  • Adobe PDF 结构规范的背景介绍(理解"PDF 无语义"这一根源)。