深度文档理解:基于视觉模型的非结构化文档解析
深度文档理解:基于视觉模型的非结构化文档解析
学习目标
读完本章后,你将能够:
- 理解深度文档理解在 RAG 管线中的关键作用
- 掌握 OCR、布局识别、表格结构识别(TSR)三大核心任务
- 分析不同文档类型对应的解析策略
- 在多引擎解析架构中选择合适的解析器组合
前置知识
- RAG 全链路可视化管线 — RAG 管线的索引阶段
- 计算机视觉基础概念:目标检测、图像分割
1. 为什么 RAG 需要深度文档理解
传统 RAG 管线假设文档已经是纯文本格式,可以直接进行分块和嵌入。但现实世界中的文档大多是非结构化的:
- PDF:包含混合布局(多栏、图片、表格、脚注),纯文本提取会丢失结构信息
- 扫描件/图片:根本没有文本层,必须通过 OCR 提取
- 复杂表格:层级表头、合并单元格,纯文本提取会破坏表格语义
- 图文混排:图片中的文字、图注与正文的关系
深度文档理解解决的核心问题:在分块之前,先准确理解文档的视觉结构和内容类型,确保后续的文本切分、向量化、检索都建立在正确的语义基础之上。
2. 三大核心视觉任务
2.1 OCR(光学字符识别)
目标:从图片、扫描件中提取文字。
关键技术点:
- 文本检测:定位图片中的文字区域(通常使用 DBNet、EAST 等检测器)
- 文本识别:将检测到的文字区域转换为文本(通常使用 CRNN、SVTR 等识别器)
- 位置信息:OCR 结果包含每个文字块的边界框坐标,用于后续的布局分析
2.2 布局识别(Layout Recognition)
目标:将文档页面划分为不同的逻辑区域,并标注其类型。
典型布局组件(10 类):
| 布局类型 | 说明 | RAG 中的处理策略 |
|---|---|---|
| Text | 正文文本 | 直接分块 |
| Title | 标题 | 用作切分边界、目录生成 |
| Figure | 图片 | 多模态模型描述或跳过 |
| Figure caption | 图注 | 关联到图片 |
| Table | 表格 | 送 TSR 处理 |
| Table caption | 表注 | 关联到表格 |
| Header | 页眉 | 通常过滤 |
| Footer | 页脚 | 通常过滤 |
| Reference | 参考文献 | 特殊处理 |
| Equation | 公式 | LaTeX 提取或跳过 |
识别流程:
- 使用目标检测模型(如 YOLO 系列、DETR)将页面划分为不同区域
- 每个区域输出边界框 + 类型标签 + 置信度
- 相邻区域根据类型和位置关系判断是否连续
2.3 表格结构识别(TSR)
目标:还原表格的行列结构和合并关系。
五类标签:
| 标签 | 说明 |
|---|---|
| Column | 列 |
| Row | 行 |
| Column header | 列头(表头) |
| Projected row header | 投影行头(层级表头中的子行头) |
| Spanning cell | 合并单元格(跨行或跨列) |
输出格式:TSR 的最终输出通常是 HTML 表格结构,包含 <thead>、<tbody>、rowspan、colspan 等属性。
RAG 关键步骤:将表格转换为自然语言句子,使 LLM 能理解表格内容。例如:
表格:| 产品 | Q1 | Q2 ||------|-----|-----|| A | 100 | 120 || B | 80 | 90 |
转换后:"产品A在Q1销售额为100,Q2为120;产品B在Q1为80,Q2为90。"3. 多引擎解析架构
文档类型多样,单一解析器无法覆盖所有场景。成熟系统采用多引擎解析架构:
引擎选择策略:
- 简单 PDF(有文本层):优先规则引擎,速度快、成本低
- 复杂 PDF(扫描件、图文混排):使用视觉模型,准确率高
- 第三方解析器:作为可选增强,通过插件机制加载
4. 问题与规避
| 陷阱 | 对策 |
|---|---|
| 扫描件 OCR 准确率低 | 表格自动旋转:OCR 置信度驱动的最佳角度选择 |
| 复杂版面切分错误 | 布局识别先行,根据区域类型决定处理策略 |
| 表格结构丢失 | TSR 还原表格结构后转为自然语言,而非直接存为文本 |
| 解析器版本不一致 | 插件化架构,每个解析器独立版本管理 |
| 多模态图片理解成本高 | 可选开启:仅在布局识别为 Figure 时调用多模态模型 |
5. 设计取舍
视觉模型 vs 规则引擎
| 维度 | 视觉模型 | 规则引擎 |
|---|---|---|
| 适用场景 | 扫描件、复杂版面 | 简单 PDF、有文本层 |
| 准确率 | 高(能理解视觉结构) | 中(依赖文本层质量) |
| 速度 | 慢(GPU 推理) | 快(纯 CPU) |
| 成本 | 高(模型推理资源) | 低 |
| 维护 | 需训练/更新模型 | 只需修改规则 |
推荐策略:默认使用规则引擎,检测到低质量文本层或无文本层时自动回退到视觉模型。
自研模型 vs 第三方解析器
| 维度 | 自研模型 | 第三方解析器 |
|---|---|---|
| 控制力 | 完全可控 | 依赖上游更新 |
| 集成成本 | 高(需训练、部署) | 低(pip 安装即可) |
| 质量 | 取决于训练数据 | 通常质量较高 |
| 灵活性 | 可定制 | 受限于 API |
推荐策略:核心能力(OCR、布局识别)自研,特殊场景(如学术论文、法律文档)使用第三方解析器作为插件。
参考来源
- LayoutLMv3 论文:https://arxiv.org/abs/2204.08387
- PaddleOCR 官方文档:https://github.com/PaddlePaddle/PaddleOCR
- MinerU 官方文档:https://github.com/opendatalab/MinerU
- Docling 官方文档:https://github.com/DS4SD/docling