核心要点

  • 解析 = 把原始文件(PDF/Word/PPT/扫描件等)转成干净、带结构的文本,是切分与嵌入的前置环节

  • 完整流程:格式识别 → 文本提取(扫描件走 OCR)→ 版面分析(标题/段落/列表/表格/页眉页脚)→ 清洗(去噪/去重/规范化)→ 保留层级与元数据

  • 主要难点:复杂版面(多栏/嵌套表格)、扫描质量差、公式与图表、内容跨页连续性

  • 解析质量是 RAG 效果的上限——脏数据进、脏答案出,再好的检索和模型也补不回来

标准回答

在 RAG 索引(ingestion)流程中,解析(Parsing)是「原始文件 → 干净结构化文本」的第一道工序,发生在切分(Chunking)和嵌入(Embedding)之前。它的目标不是简单地把字符抠出来,而是还原文档的逻辑结构与阅读顺序,并保留可供检索和引用的元数据。

典型步骤

  1. 格式识别:判断文件类型(PDF、Word、PPT、HTML、Markdown、图片等),不同格式走不同解析器。
  2. 文本提取:对原生可选中文本直接抽取;对扫描件 / 图片型 PDF 需要 OCR 先识别成文本。
  3. 版面分析(Layout Analysis):识别标题层级、正文段落、列表、表格、页眉页脚、脚注、图注,重建正确的阅读顺序(尤其是多栏排版)。
  4. 清洗与规范化:去除水印、重复页眉页脚、乱码与多余空白,统一编码、全角半角、换行,做必要的去重。
  5. 保留层级与元数据:输出时带上标题路径、页码、所属章节、表格归属等信息,供后续切分对齐结构、检索时回溯出处。

为什么单独强调它
解析决定了进入向量库的「原料」质量。表格被打散成乱序文本、跨页段落被截断、公式变成乱码,都会在检索阶段制造噪声并污染答案,且后续环节无法修复。因此工程上常把解析当成一个独立、可评测、可替换的模块。

常用工具(2026)

  • Unstructured:开源、统一处理多格式并输出带类型的元素(Title/NarrativeText/Table 等)。
  • LlamaParse:面向 RAG 的托管解析服务,对复杂 PDF、表格还原较好。
  • PyMuPDF / pdfplumber:轻量、可控的 PDF 文本与表格抽取,适合结构相对规整的文档。
  • 视觉文档大模型(VLM / 文档理解模型):把整页当图像理解,对复杂版面、扫描件、图文混排鲁棒性更强,但成本与延迟更高。

实践中通常按文档复杂度做分层策略:规整文档用轻量库,复杂版面或扫描件再升级到 LlamaParse 或视觉模型。

常见误区

⚠️ 常见踩坑

把解析等同于「pdf2text 抽字符」,忽略版面结构。结果是表格被压成乱序文本、多栏正文交错、跨页段落被切断,这些噪声会一路传导到检索和生成,且下游无法补救。解析必须保结构、保顺序、保元数据,而不只是拿到纯文本。

追问

追问 1表格在解析时为什么特别难?怎么处理才不丢信息?

表格是二维结构,普通文本抽取会按物理坐标线性输出,导致行列关系丢失、单元格错位,嵌套表和跨页表更严重。常见做法:用支持表格识别的解析器(LlamaParse、Unstructured 或视觉模型)把表格还原为 Markdown / HTML 结构,保留行列对应;必要时对整张表单独切块并附上表头与上下文说明,避免被拆成无意义的碎片。

追问 2扫描件 / 图片型 PDF 的解析链路和原生 PDF 有什么不同?

原生 PDF 文本可直接抽取;扫描件本质是图像,必须先 OCR。链路要多出图像预处理(去歪斜、去噪、二值化)、OCR 识别、以及版面检测来恢复阅读顺序。OCR 质量受清晰度、字体、语言影响,建议保留置信度并对低置信区域标记或人工复核,否则识别错误会静默污染索引。

追问 3如何评估解析质量,避免「脏数据进、脏答案出」?

把解析当成可评测模块:抽样人工核对结构还原(标题层级、表格、阅读顺序)是否正确;用一组带标准答案的问题做端到端检索评测,对比不同解析器下的 Context Recall / Precision 与答案 Faithfulness;监控乱码率、空块率、表格识别率等指标。发现某类文档解析差,就为其单独升级解析策略。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习