文档解析是AI落地最难的一公里:从PDF到结构化数据
合同、报表、扫描件——企业数据八成困在文档里。讲清版面分析、OCR、表格抽取、版面还原的完整流水线和选型思路。
被低估的一公里
企业里 80% 的信息,锁在 PDF、扫描件、图片、Excel 里。想让 AI 用上这些数据,第一关就是把非结构化文档变成结构化数据。
大家往往直奔”用大模型读文档”,结果发现:模型读得懂语义,却读不准版面和数字。文档解析,才是 AI 落地真正的、最难的一公里。
为什么难
- 版面复杂:多栏、页眉页脚、图文混排、跨页表格
- 扫描质量参差:倾斜、模糊、印章遮挡、手写
- 表格是重灾区:合并单元格、无边框、跨页续表
- 数字必须精确:金额、日期、编号错一位就是事故
- 格式繁多:PDF、图片、Word、Excel 各有一套处理逻辑
难点不在”看懂文字”,而在”还原结构”。
完整流水线
一条靠谱的文档解析流水线,通常分五步:
文件 → 格式识别 → 版面分析 → 文本/表格抽取 → 结构还原 → 校验
第一步:格式识别与预处理
- 判断是原生 PDF(含文字层)还是扫描件
- 扫描件需要图像预处理:去噪、纠偏、二值化
- 页分割:把多页文档拆成单页处理
原生 PDF 优先用文字层,别急着 OCR——直接抽文字比 OCR 准得多。
第二步:版面分析(Layout Analysis)
识别页面上的区域类型:标题、正文、表格、图片、页眉页脚。
这是决定成败的一步。把多栏文档按单栏顺序读,句子会错乱;把表格当正文读,结构全丢。
输出通常是每个区域的边界框 + 类型标签:
{"type": "table", "bbox": [72, 300, 540, 480]}
{"type": "title", "bbox": [72, 60, 400, 90], "level": 1}
第三步:文本与表格抽取
- 文本:按区域 OCR 或提取文字层
- 表格:这是硬骨头,要处理边框、无边框、合并单元格
表格抽取主流做法:
- 结构化识别模型:直接输出表格的 HTML/Markdown 结构
- 后处理修复:补全合并单元格、对齐行列
- 关键:表格绝不能按字符切碎,要整体保留结构
第四步:结构还原
把抽出的碎片,还原成有逻辑的文档结构:
- 按阅读顺序排列区域(注意多栏的正确顺序)
- 重建层级(标题—小节—段落)
- 表格转成 Markdown/JSON
- 保留页码、来源等元数据
输出成 Markdown 是最实用的格式——既能给模型读,又能人审。
第五步:校验与兜底
- 数字校验:金额、日期做格式与范围检查
- 完整性校验:页数、表行数是否对得上
- 低置信度标记:OCR 置信度低的部分标出来转人工
- 关键字段二次确认:涉及金额的字段,必要时走规则或人工
自动化越高,兜底越重要。
技术选型
| 需求 | 方案方向 |
|---|---|
| 原生 PDF 抽文字 | 直接用解析库,无需 OCR |
| 通用扫描件 | 版面分析 + OCR 模型 |
| 复杂表格 | 专用表格识别模型 |
| 高精度关键字段 | 大模型辅助 + 人工复核 |
| 大批量归档 | 流水线自动化 + 抽样质检 |
不要迷信单一方案:通用大模型适合理解语义,专用模型适合精确抽取,两者常需配合。
常见陷阱
- 跳过版面分析:多栏文档读成一锅粥
- 表格切碎:行列关系丢失,数据失去意义
- 无视数字精度:模型”看起来对”的结果里藏着小错
- 忽略阅读顺序:跨栏、跨页内容顺序错乱
- 没有置信度机制:低质量抽取直接进下游,污染整个系统
落地清单
- 是否区分原生 PDF 与扫描件分别处理?
- 是否做了版面分析(含多栏处理)?
- 表格是否整体保留结构?
- 是否保留页码、来源等元数据?
- 关键数字是否有校验与兜底?
- 是否有低置信度标记转人工?
- 是否有抽样质检机制?
结语
文档解析不性感,但它是所有文档类 AI 应用的地基。RAG、合同审查、财报分析、发票识别——上游解析错了,下游全错。与其在检索和提示上反复折腾,不如回头把这一公里走扎实。结构还原得准,后面的模型才能发挥真正的价值。