DeepSeek-OCR 2 的核心升级是用 LLM-style 视觉编码器 + 因果流(causal flow)查询 token 在编码阶段学到更接近人类阅读顺序的表示,在 相近/更小的视觉 token 预算下把 OmniDocBench v1.5 的整体指标从 87.36 提升到 91.09(+3.73)。
这篇笔记聚焦 DeepSeek OCR 2 的方法动机与关键机制,尤其是“编码器端重排阅读顺序 + 解码器端保持高效自回归”的级联因果结构。
贡献点
- DeepEncoder V2:用“LLM 作为视觉编码器”替换 DeepEncoder 里的 CLIP ViT,目的是让编码器具备更贴近人类阅读的“因果视觉流”。(引言贡献点 (1),图 1)
- 引入“因果流查询 token(causal flow tokens)”并用定制 attention mask:视觉 token 仍是双向全局注意力,但查询 token 走因果注意力,可逐步吸收视觉信息并形成“新阅读顺序”。(引言贡献点 (2),方法 3.2.2 + 图 5 + 式 (1))
- 保持查询 token 与视觉 token 等势(等数量),并且 只把查询 token(编码器输出后半段)喂给解码器,形成“编码器先重排、解码器再自回归推理”的级联因果结构。(引言贡献点 (3)(4))
- 在不牺牲 token 压缩比/解码效率的前提下提高性能:把喂给 LLM 的视觉 token 预算约束在 256–1120(下限对齐 DeepSeek-OCR 的 1024^2 tokenization,上限对齐 Gemini-3 Pro token budget)。
- 实证:OmniDocBench v1.5 上整体 +3.73,阅读顺序 ED 从 0.085 降到 0.057,并在生产环境用 repetition rate 观测到质量提升。
问题定义与假设
- 输入:文档图像(多分辨率、多布局;方法中明确有 1024×1024 global view + 768×768 local crops)
- 输出:面向“文档阅读/解析”的文本与结构化内容(论文用 OmniDocBench 的多指标来衡量文本、公式、表格、阅读顺序)
- 关键约束:
- token 预算:喂给解码器的(重排后)视觉 token 总数在 [256, 1120],通过 0–6 个 local crops 控制
- 可比性假设:训练数据源“基本一致”,仅做了轻量数据采样/标签合并,因此把 DeepSeek-OCR 视为有效 baseline
- 隐含假设(论文动机):
- 固定 raster-scan + 固定位置编码会引入不合理归纳偏置;文档这种强结构视觉逻辑更需要“因果阅读流”
方法细读
模块 -> 目的 -> 关键公式/伪代码 -> 复杂度/实现细节 + 逐段证据
总体架构:Encoder(DeepEncoder V2)+ Decoder(DeepSeek-MoE)
- 目标:在 encoder 端就完成 token 压缩 + token 重排(阅读顺序建模),decoder 侧保持 DeepSeek-OCR 的高效 MoE 解码。
- 证据:明确“主要聚焦 encoder,不升级 decoder,保留 DeepSeek-OCR 的 3B MoE(~500M active)”。
视觉 tokenizer(图像→视觉 token)
- 做法:沿用 DeepEncoder 的 tokenizer:80M 参数 SAM-base + 2 个卷积层;并把最后卷积层维度从 1024 改到 896 以对齐后续流水,采用的方法为 token compression 16×。
- 目的:在进入“全局注意力的 LM-style encoder”前就把 token 数压到可控规模,降低计算/显存。
LM 作为 Vision Encoder:双流注意力 + 前缀拼接(核心创新)
- Dual-stream attention(双流注意力):同一 transformer 序列里,前半段视觉 token 用双向注意力;后半段查询 token 用因果注意力。
- Causal flow queries / tokens(因果流查询 token):可学习的查询向量序列,用来“按因果顺序”聚合视觉 token,并隐式学出阅读顺序。
关键机制:
- 视觉 token:bidirectional attention,保留类似 ViT/CLIP 的全局建模能力。
- 查询 token:causal attention,每个查询 token 能看全部视觉 token + 之前的查询 token,从而形成“渐进式重排/蒸馏”。
- 只输出查询 token 给 decoder:编码器输出的后半段才进入 LLM 解码器,形成级联因果推理。
工程选择与动机:
- 实现实例:用 Qwen2-0.5B(500M) 初始化/实例化该 LM-style encoder,对标 CLIP ViT(300M)且避免过大开销。
- prefix-concatenation(视觉 token 作为前缀与查询 token 拼接):论文提到尝试 mBART 风格 encoder-decoder + cross-attn 失败不收敛,并推测原因是视觉 token 交互不足;而前缀拼接能让视觉 token 在各层保持“活跃”,促进与查询 token 信息交换。
查询 token 数量与 multi-crop:把“阅读重排能力”塞进固定预算
- 规则:查询 token 数 等于 视觉 token 数(n=m),并用 multi-crop 统一不同分辨率下的 query 配置。
目的:
- 保持信息容量不变:每个查询 token “负责”重排一个视觉 token 的信息,避免信息丢失或冗余。
- 控制解码器 token 预算:由于只有查询 token 被送入解码器,n=m 意味着解码器接收的 token 数与原始视觉 token 数一致,不额外增加解码成本。
- 简化 multi-crop 配置:1:1 对应关系让不同分辨率的 crop 可以共享统一的查询配置逻辑,便于工程实现和超参管理。
- 便于公平对比:总 token 预算(256–1120)与 DeepSeek-OCR 原方案(最高 1156)基本对齐,确保性能提升来自“因果流重排”而非“更多 token”。
配置:
- global view:1024×1024 ⇒ 256 query_global
- local view:768×768 ⇒ 144 query_local(所有 local crops 共享同一套 144 queries)
- crops 数 k ∈ [0,6] ⇒ 总 token = k×144 + 256 ∈ [256,1120]
与 DeepSeek-OCR 的直接对比:最大 1120 token 低于 DeepSeek-OCR 的 1156(文中称 Gundam mode),并对齐 Gemini-3 Pro 的上限预算。
Attention mask(式 (1) + 图 5):为什么它能“重排”
- LowerTri(n):n×n 下三角矩阵(对角线及以下为 1),对应标准 decoder-only 的因果掩码。
- R-order Edit Distance:阅读顺序的编辑距离(越低越好)。
Mask 分块(式 (1)):
- 视觉 token 区:全 1(双向可见)
- 查询 token 区:LowerTri(因果)
- 查询 token 可以 attend 到所有视觉 token(下左块全 1),但视觉 token 不看查询 token(上右块全 0)
- 且 n=m
直觉:
- 视觉 token 先形成一个“全局可交互”的视觉场。
- 查询 token 以因果方式逐步读取这个视觉场,并把“读到的内容”编码成序列 ⇒ 更贴近人类阅读的“因果扫视流”。
复杂度(从掩码结构推出的可解释结论)
设视觉 token 数 m,查询 token 数 n=m。单层注意力的有效计算量(按可见块估算)约为:
- Visual→Visual:m^2
- Query→Visual:n·m = m^2
- Query→Query(因果三角):~n^2/2 = m^2/2
合计 ≈ 2.5·m^2(而如果对 2m token 全双向,会是 4m^2)。
这不是论文显式数字,是从式 (1) 的可见区域推出来的结构性结论;证据基础:mask 的分块定义与 n=m。
术语表
| 术语 | 解释 |
|---|---|
| CLIP ViT | **Contrastive Language-Image Pre-training Vision Transformer 对比式语言-图像预训练视觉 Transformer。**OpenAI 于 2021 年发布的多模态预训练模型,通过对比学习在 4 亿对图文数据上训练,使图像编码器(ViT)与文本编码器学会将匹配的图文对映射到相近的特征空间。被广泛用作多模态大模型的视觉特征提取器。 |
| ED | **Edit Distance 编辑距离。**用于衡量阅读顺序预测与真实顺序之间的差异,数值越低表示预测顺序越接近真实顺序。 |
| Raster-scan | **光栅扫描顺序。**一种固定的图像 patch 排列方式,按从左到右、从上到下的顺序将图像切块平铺成序列。传统 ViT 均采用此顺序,但对于复杂文档布局可能引入不合理的归纳偏置,不能反映真实的阅读顺序。 |
| SAM-base | **Segment Anything Model - Base。**Meta 发布的通用图像分割模型,Base 版本约 80M 参数。在 DeepSeek-OCR 2 中被用作视觉 tokenizer 的 backbone,配合卷积层实现图像特征提取与 token 压缩。 |
| Token compression 16× | **16 倍 token 压缩。**指视觉 token 数被窗口注意力/压缩模块减少到原来的 1/16 量级。在 DeepSeek-OCR 2 中,通过 SAM-base 后的 2 个卷积层实现,目的是在进入全局注意力的 LM-style encoder 前就把 token 数压到可控规模,降低计算与显存开销。 |
| LowerTri(n) | **n×n 下三角矩阵。**对角线及以下为 1,其余为 0。在 Transformer 中用作因果注意力掩码(causal attention mask),确保每个 token 只能 attend 到自己及之前的 token,是标准 decoder-only 模型的基础组件。 |
| R-order Edit Distance | **阅读顺序编辑距离。**用于衡量模型预测的阅读顺序与真实阅读顺序之间的差异,数值越低表示预测的阅读顺序越接近真实顺序。在 DeepSeek-OCR 2 中,该指标从 0.085 降到 0.057,证明因果流设计有效提升了阅读顺序建模能力。 |