跳转至

Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting

会议: ACL 2025
arXiv: 2505.14059
代码: https://github.com/ByteDance/Dolphin (有)
领域: 文档理解 / OCR
关键词: 文档解析, 布局分析, 多模态VLM, 并行解码, anchor prompting

一句话总结

提出 Dolphin,一个轻量级(322M)的文档图像解析模型,采用"先分析后解析"(analyze-then-parse)两阶段范式——先进行页面级布局分析生成阅读顺序的元素序列,再利用异构锚点提示(heterogeneous anchor prompting)并行解析各元素内容,以仅 322M 参数在页面级和元素级解析任务上超越 7B+ 模型和商业系统。

研究背景与动机

  1. 领域现状:文档图像解析(从图像中提取结构化内容)有两条技术路线:(a) 集成式方案(如 MinerU),组合布局检测、OCR、表格/公式识别等专家模型,精度高但集成复杂;(b) 端到端自回归方案(如 Nougat、GOT),用 VLM 直接生成页面级内容,简洁但面临效率和布局退化问题。
  2. 现有痛点:集成式方案需要独立优化每个模型,跨组件协调困难;自回归方案在处理复杂布局(表格+公式+图片混排)的长文档时,布局结构容易退化,且逐 token 生成严重影响效率。
  3. 核心矛盾:如何在保持端到端训练简洁性的同时,避免纯自回归方法在复杂文档上的布局退化和效率瓶颈?
  4. 本文要解决什么:(1) 统一的文档解析框架,支持多粒度任务;(2) 并行解析提升效率;(3) 轻量级架构。
  5. 切入角度:将文档解析分解为布局分析(全局结构理解)和元素解析(局部内容识别)两个阶段,利用布局元素作为"锚点"指导并行解析。
  6. 核心 idea:两阶段 analyze-then-parse——第一阶段生成布局元素序列(类型+位置+阅读顺序),第二阶段将元素裁剪送入同一模型并行解析,通过类型特定提示(异构 anchor prompting)适配不同元素类型。

方法详解

整体框架

输入:文档图像 → 输出:结构化 Markdown/HTML 文本。两阶段共享一个统一的 encoder-decoder VLM(Swin Transformer encoder + mBart decoder,共 322M 参数)。

关键设计

  1. Stage 1:页面级布局分析:
  2. 做什么:输入整页图像,生成按阅读顺序排列的布局元素序列 \(L = \{l_1, l_2, ..., l_n\}\),每个元素包含类型(段落/表格/公式/图片/标题等)和 bounding box
  3. 核心思路:Swin Transformer 编码页面图像为视觉特征,mBart decoder 以 "Parse the reading order of this document." 为提示,自回归生成结构化布局序列,保留层级关系(如图-图注、表格-标题、章节标题-段落的对应关系)
  4. 设计动机:先获取全局布局信息,为后续并行解析提供"锚点";阅读顺序预测是端到端方法的优势

  5. Stage 2:元素级内容解析(并行):

  6. 做什么:根据 Stage 1 的布局结果,裁剪每个元素的局部图像区域,并行解析所有元素
  7. 核心思路:对每个元素 \(l_i\),从原图裁剪对应区域 \(I_i\),用同一 Swin Transformer 编码,然后用类型特定提示(表格→HTML 格式、公式和段落→Markdown/LaTeX 格式)指导 decoder 生成内容。多个元素以 batch 形式并行推理
  8. 设计动机:裁剪+聚焦("what you see is what you get")比直接在全页图像上定位+识别更简单准确;并行解码比纯自回归快 1.8×

  9. 异构 Anchor Prompting:

  10. 做什么:为不同类型元素设计不同的解析提示
  11. 核心思路:表格使用专用 \(P_{table}\) 提示解析 HTML 结构;文本段落和公式共享 \(P_{paragraph}\) 提示(因为公式常内嵌在段落中);类型信息来自 Stage 1 的布局分析结果
  12. 设计动机:消融实验表明,类型特定提示 vs 通用提示 ED 从 0.1613→0.1028(↓36%),通用提示会导致误判(如将表格识别为 LaTeX 公式)

训练数据

构建 30M+ 样本的大规模数据集: - 页面级:混合文档 0.12M(布局标注)、HTML 渲染 4.37M、LaTeX 0.5M、Markdown 0.71M - 元素级:表格 1.57M(PubTabNet + PubTab1M)、公式 23M(arXiv LaTeX 渲染) - 元素解耦策略的数据优势:收集独立元素图像比收集完整标注的复杂页面更容易

损失函数 / 训练策略

  • 标准 seq2seq 交叉熵损失
  • AdamW 优化器,学习率 5e-5,cosine decay
  • 40 张 A100,2 epochs,batch size 16/GPU
  • 输入图像保持宽高比缩放到 896×896(长边 896 + padding)

实验关键数据

主实验(页面级解析,Edit Distance ↓)

模型 参数量 Plain Doc EN Plain Doc ZH Complex Doc Avg ED FPS ↑
MinerU (集成) 1.2B 0.0685 0.0702 0.2770 0.1732 0.035
GOT 580M 0.035 0.038 0.2459 0.1411 0.060
Qwen2.5-VL 7B 0.0135 0.0270 0.2025 0.1112 0.034
Mistral-OCR - 0.0138 0.0252 0.1283 0.0737 0.100
Dolphin 322M 0.0114 0.0131 0.1028 0.0575 0.173

消融实验(Dolphin-Page,ED ↓)

配置 ED FPS
Full model 0.1028 0.1729
Parallel → Sequential 0.0971 0.0971 (↓44%)
Type-specific → Generic prompts 0.1613 (↑57%) -
Element cropping → Box query 0.1849 (↑80%) -

关键发现

  • 轻量但强大:322M 模型全面超越 7B+ VLM(Qwen2.5-VL、GPT-4o、Claude 3.5)和商业系统(Mathpix),在复杂文档上优势尤为显著
  • 并行解码提速 1.8×:ED 保持不变的前提下 FPS 从 0.0971 → 0.1729,且有进一步加速空间(off-the-shelf parallel decoding 技术)
  • 类型特定提示至关重要:去掉后 ED 劣化 57%,通用提示导致元素类型误判(表格→公式)
  • 裁剪 > Box Query:聚焦局部视图比要求模型在全局图中定位+识别更有效(ED 0.1028 vs 0.1849)
  • 元素级同样 SOTA:公式 CDM 0.9850(SPE)、表格 TEDS 0.9515(PubTabNet)、文本 ED 0.0029(Fox-Block EN)

亮点与洞察

  • "先分析后解析"范式的优雅设计:用布局分析将"理解全局结构"和"识别局部内容"解耦,既保留了端到端的简洁性,又克服了纯自回归的效率/质量问题。这种两阶段共享模型的设计可迁移到其他需要全局-局部两级理解的视觉任务
  • 322M 击败 7B 的效率奇迹:说明在文档解析这个任务上,专门设计的架构+大量领域数据训练比通用大模型更高效。"小而专"vs "大而全"的经典命题
  • 数据构建策略:元素解耦使得数据收集更灵活——23M 公式图像就能单独收集渲染,无需完整页面标注

局限性 / 可改进方向

  • 仅支持标准水平文本布局,竖排文本(古籍)支持有限
  • 仅支持中英双语,多语言能力需扩展
  • 并行解码受限于 GPU 显存(batch 最大 16 个元素),超多元素的页面仍需多次推理
  • 手写体识别能力不足
  • Stage 1 的布局分析错误会级联到 Stage 2(error propagation)

相关工作与启发

  • vs MinerU (集成式):MinerU 用多个专家模型组合,效果好但集成复杂。Dolphin 用同一个 322M 模型统一处理,更简洁且效果更好
  • vs GOT/Nougat (端到端自回归):它们直接自回归生成全页内容,复杂文档 ED 远高于 Dolphin。Dolphin 的两阶段设计解决了自回归的布局退化问题
  • vs Qwen2.5-VL/GPT-4o (通用 VLM):通用 VLM 参数量 7B+,在复杂文档上仍不如 322M 的 Dolphin,说明任务特定设计的重要性

评分

  • 新颖性: ⭐⭐⭐⭐ analyze-then-parse 范式和异构 anchor prompting 设计巧妙,但两阶段解析不算全新
  • 实验充分度: ⭐⭐⭐⭐⭐ 页面级+元素级全面评估,多个 benchmark,消融实验充分
  • 写作质量: ⭐⭐⭐⭐⭐ 结构清晰,图表丰富,可视化案例说服力强
  • 价值: ⭐⭐⭐⭐⭐ 实用性极强,开源代码+模型,对文档理解领域有直接推动作用