PDF、表格、扫描件这类文档,RAG 的解析链路怎么设计?
面试怎么回答
我会按文档类型分流:Word、网页、Markdown 直接解析,原生 PDF 做版面分析,扫描件走 OCR。版面分析识别标题、正文、表格、图片和阅读顺序,复杂页面可以用多模态模型或文档解析模型。表格单独处理成 Markdown 或 HTML 保留行列,按行切分时每块带表头;图表用多模态模型生成描述;输出保留标题层级,切分时按章节并把章节路径作为元数据;清洗页眉页脚和目录。解析按 ETL 来管:记录解析器版本、页数、字符数,检测空内容和乱码,抽样人工检查,升级解析器时对比新旧结果。成本上先用便宜方式,只对复杂页面用高成本解析。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
RAG 效果的上限,往往在第一步就决定了:文档解析。企业里的文档五花八门——带表格的 PDF、扫描的合同、PPT、Excel、网页、Word。解析出来的文本乱了,后面的切分和检索做得再好也没用。面试官问这题,想看你是否有处理非结构化数据的工程经验。
常见的解析难点
- PDF 版式:多栏排版读出来顺序错乱;页眉页脚、页码混进正文;
- 表格:解析成一串文字后,行列关系丢失,「哪个数属于哪一行哪一列」无法判断;
- 扫描件和图片:需要 OCR,存在识别错误;
- 图表:柱状图、流程图里的信息纯文本提取不到;
- 结构信息丢失:标题层级、列表、章节关系没了,Chunk 不知道自己属于哪一章。
解析链路的设计
- 按类型分流:Word、网页、Markdown 这类结构化程度高的直接解析;原生 PDF 用版面分析工具;扫描件走 OCR;
- 版面分析:识别标题、正文、表格、图片、页眉页脚的区域和阅读顺序。现在也可以用多模态模型或专门的文档解析模型来做,效果比传统规则好,但成本更高;
- 表格单独处理:转换成 Markdown 或 HTML 表格保留行列结构;大表格按行切分时每块都带上表头;
- 图片和图表:用多模态模型生成描述文字,和图片一起存储;
- 保留结构:输出带标题层级的文本(比如 Markdown),切分时可以按章节切,并把章节路径作为元数据;
- 清洗:去掉页眉页脚、重复的免责声明、目录页。
质量控制
解析是 ETL,要按 ETL 的方式管:
- 每份文档记录解析状态、使用的解析器和版本、页数、提取的字符数;
- 异常检测:字符数为 0 或极少(可能是扫描件没 OCR)、乱码比例高、表格数量异常;
- 抽样人工检查解析结果,特别是重要文档;
- 解析器升级后,对样本集对比新旧结果,必要时重新解析存量文档。
成本取舍
用多模态大模型解析每一页效果最好,但百万页级别的成本很高。常见做法是:先用便宜的方式解析,对检测出的复杂页面(表格多、图多、扫描件)再用高成本方式处理。