结论先行:解析流水线的目标不是“把文件读出来”,而是“把文件变成结构化、可检索、可治理的数据”。设计时要按文件类型分流,文本型走高保真解析,扫描件自动路由 OCR。
一、支持什么格式,就决定能接什么数据
一套可用的解析层至少要覆盖 PDF / Word(含 OLE2 老 .doc)/ Excel / PPT / OFD / XPS / TXT / HTML,统一输出为 Markdown 或 JSON。格式覆盖决定知识库的天花板:缺一种格式,就有一批数据永远进不了库。真实语料里非标格式的比例也远比想象高——在 841 家公司、252,386 份文档、147GB 的 A 股投研语料中,约 23.3% 是非常规格式(HTML / OLE2 .doc / 巨潮 .bin)。
老格式不能靠转格式碰运气。OLE2 .doc 要按 CFB 复合文档结构解析,再经 piece table(CLX)提取正文;巨潮 .bin 这类老式文本需要 BOM / UTF-16 / UTF-8 / GBK 编码检测回退;HTML 公告则先做 Readability 正文定位,再做标签清洗。每多覆盖一类格式,就少一批需要人工搬运的数据。文本型 PDF 单份提取可以做到 200ms 以内,这是大批量语料入库的先决条件。
二、文本型与扫描件要分流
文本型 PDF 直接抽取文字层和版面;扫描件没有文字层,必须自动路由到 OCR 引擎。分流判断要在入库前自动完成,而不是靠人工挑:一份混合语料里常常既有原生 PDF 又有扫描报表,人工分拣既慢又容易错,漏判一件扫描件,下游就多一段空文本。
两者如果混用同一路径,要么扫描件丢字,要么文本件被无意义地重识别,浪费算力。更隐蔽的代价是质量不可比:同类文档走不同链路,解析质检得分不同,切片和检索的表现也就不稳定。把路由规则固化进流水线,质量才有可复现的基线。
| 文件特征 | 路由 | 关键动作 |
|---|---|---|
| 有文字层 | 高保真解析 | 抽取文字 + 版面 + 坐标 |
| 无文字层(扫描件) | OCR 路由 | 版面分析 + PP-OCRv6 识别 |
| 老格式(.doc / .bin) | 差异化解析 | CFB / 编码检测回退 |
三、版面分析保住结构
DeepDoc 版面分析用 layout.onnx 与 tsr.onnx 双模型在本地做 ONNX 推理,不依赖云端。前者定位标题、段落、表格、图片等区域,后者识别表格结构。整个环节保留阅读顺序、坐标以及表格的 HTML 结构(含 rowspan / colspan 合并单元格还原),PDF 走 PDFium 渲染。
这一步决定了后续切片能不能读懂“这是同一张表”。版面信息一旦丢失,跨页表格会被拆成两段孤立文本,双栏版式会按错误顺序拼接,切片得到的语义支离破碎。坐标还有治理价值:审计抽查时,任何一段文字都能回溯到原文档的具体页面和区域。
四、输出要可治理
解析产物不应只丢给下游,而应带上面向治理的元数据:来源、页码、坐标、解析质检 parse_quality 的三层评分(结构 / 关系 / 内容)与总体等级。这些字段是后续权限打标、时效治理和评测闭环的基础——没有结构化元数据,权限过滤和版本归档都无从落地。
质检分数还有一个工程用途:给文档分诊。低于阈值的批次自动进入人工复核或调参重试,合格批次直接入库,避免整批语料被少数坏文档拖垮。分数随版本记录下来,解析器的每次升级也就有了前后对照的依据。
解析是 RAG 质量的第一道闸门。想看完整的解析到切片链路,可参考 RAG 切片策略 与 表格结构识别;扫描件细节见 扫描件 OCR 与版面分析。
真实场景:23.3% 的非常规格式才是分水岭
很多团队在自测时用干净的 PDF,一上真实语料就翻车。我们维护的 A 股投研语料共 841 家公司、252,386 份文档、147 GB(2000 年至今),其中 23.3% 是非常规格式——HTML 公告、OLE2 老 .doc、巨潮 .bin 老式文本。也就是说,每五份文档就有一份会让通用解析器输出乱码或空文件。解析流水线的工程价值恰恰在这 23.3% 上:老格式差异化解析、编码检测回退、正文定位清洗,每一环都决定这部分语料是可检索资产还是永远躺在硬盘里的死数据。
另一个常被忽视的验收标准是增量审计:六格式入库 E2E(OFD / PDF / Excel / Word / XPS / PPT)全部通过 added + unchanged == total 校验,任何一份文档都不允许在流水线里静默丢失。关于老格式怎么逐个攻破,见老格式文档解析:OLE2 .doc 与编码文本;解析产出的表格怎么保住结构,见表格结构识别:合并单元格与阅读顺序。
常见问题 FAQ
Q1:文本型 PDF 和扫描件为什么要分开处理?
文本型 PDF 有文字层,直接抽取即可,单份可低于 200ms;扫描件无文字层必须走 OCR。混用路径会导致扫描件丢字或文本件被无意义重识别,两类文档的质量基线也无法对齐。
Q2:解析输出应该包含哪些元数据?
至少包含来源、页码、坐标,以及 parse_quality 的三层评分(结构 / 关系 / 内容)和总体等级。这些字段支撑后续权限打标、时效治理、审计溯源与评测闭环。
Q3:版面分析为什么要保留坐标和阅读顺序?
坐标和阅读顺序让下游切片能还原“这是同一张表”“这是同一段话”,否则表格会被拆散、段落会错位,检索与生成质量直接受损,审计时也无法回溯出处。
Q4:多大比例的真实语料是非标准格式?
在 841 家公司、252,386 份文档、147GB 的 A 股投研语料中,约 23.3% 是非常规格式(HTML / OLE2 .doc / 巨潮 .bin),必须靠 CFB 解析和编码检测回退这类差异化方案兜底。
需要搭建企业级 RAG 知识库?了解丑梨AI
私有化部署的 RAG 数据工程基座:解析、清洗、脱敏、压缩、切片、治理、评测一站式流水线,全本地推理,数据不出域,单机可部署。