核心原则
PDF 必须优先使用版面感知解析,因为多栏、页眉页脚、脚注和阅读顺序会破坏朴素文本抽取。
保留文档树结构:标题、章节、页码、表格单元格、图片说明、URL、更新时间和权限范围都应随 chunk 进入索引。
表格、截图和扫描件要走 OCR、表格识别或多模态描述,不能直接丢弃非正文证据。
解析输出要带版本号,方便定位一次质量下降到底来自解析规则、文档变更还是模型变更。
先建立解析质量抽检集,至少覆盖合同、政策、报告、FAQ 和工单五类文档。
方法对比
| 方法 | 延迟 | 成本 | 最适合 |
|---|---|---|---|
| 纯文本抽取 | 快 | 低 | Markdown、日志、结构简单的网页 |
| 版面感知解析 | 中 | 中 | PDF、合同、研究报告 |
| OCR + 视觉解析 | 慢 | 高 | 扫描件、图表、截图 |
| Schema 优先解析 | 中 | 中 | 报表、工单、CRM 导出 |
大厂与框架实践
LlamaIndex 的 reader 与 node parser 会在索引前保存 page_label、source、section 等元数据,便于引用回溯。
LangChain loader 通常把来源路径、页码和自定义 metadata 传给 splitter,避免切分后丢失来源。
百度千帆和阿里通义知识库强调 Office/PDF 解析,因为中文企业文档常混合表格、图片和盖章扫描页。
财务报表问答需要把表头复制到每个行 chunk,否则“15%”这类数字会失去指标含义。
客服手册解析应保留版本日期,避免旧政策被召回后生成过期答案。
关键论文与参考
LayoutLMv3,Huang 等,2022
Nougat,Blecher 等,2023
DocVQA,Mathew 等,2021
Donut,Kim 等,2022
Pix2Struct,Lee 等,2023
深度讲解
解析质量可以用字段级准确率和引用可回溯率衡量。一个实用抽检公式是 parse_score = 0.35 * reading_order + 0.25 * table_header + 0.20 * citation_anchor + 0.20 * acl_metadata。若 100 页政策文档中有 8 页表格,表头保留率从 70% 提升到 95%,表格问答通常会比只调提示词更稳定。工程上建议保存 parser_version,例如 parser=v3.2-layout,把它写入每个 chunk 的 metadata,出现答案回归时可以按版本聚合错误。
最佳实践
为每类文档维护 20-50 个解析金样本。
表格 chunk 必须携带表名、列名、行 ID 和页码。
解析失败不要静默入库,应进入人工修复队列。