标准回答
在 RAG 索引(ingestion)流程中,解析(Parsing)是「原始文件 → 干净结构化文本」的第一道工序,发生在切分(Chunking)和嵌入(Embedding)之前。它的目标不是简单地把字符抠出来,而是还原文档的逻辑结构与阅读顺序,并保留可供检索和引用的元数据。
典型步骤
- 格式识别:判断文件类型(PDF、Word、PPT、HTML、Markdown、图片等),不同格式走不同解析器。
- 文本提取:对原生可选中文本直接抽取;对扫描件 / 图片型 PDF 需要 OCR 先识别成文本。
- 版面分析(Layout Analysis):识别标题层级、正文段落、列表、表格、页眉页脚、脚注、图注,重建正确的阅读顺序(尤其是多栏排版)。
- 清洗与规范化:去除水印、重复页眉页脚、乱码与多余空白,统一编码、全角半角、换行,做必要的去重。
- 保留层级与元数据:输出时带上标题路径、页码、所属章节、表格归属等信息,供后续切分对齐结构、检索时回溯出处。
为什么单独强调它
解析决定了进入向量库的「原料」质量。表格被打散成乱序文本、跨页段落被截断、公式变成乱码,都会在检索阶段制造噪声并污染答案,且后续环节无法修复。因此工程上常把解析当成一个独立、可评测、可替换的模块。
常用工具(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 质量受清晰度、字体、语言影响,建议保留置信度并对低置信区域标记或人工复核,否则识别错误会静默污染索引。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习