跳转到内容

深度文档理解:基于视觉模型的非结构化文档解析

深度文档理解:基于视觉模型的非结构化文档解析

学习目标

读完本章后,你将能够:

  • 理解深度文档理解在 RAG 管线中的关键作用
  • 掌握 OCR、布局识别、表格结构识别(TSR)三大核心任务
  • 分析不同文档类型对应的解析策略
  • 在多引擎解析架构中选择合适的解析器组合

前置知识


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>rowspancolspan 等属性。

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、布局识别)自研,特殊场景(如学术论文、法律文档)使用第三方解析器作为插件。


参考来源