144 lines
15 KiB
Markdown
144 lines
15 KiB
Markdown
# DeepSeek-OCR:上下文的光学压缩
|
||
|
||
> **原文标题**:DeepSeek-OCR: Contexts Optical Compression
|
||
> **arXiv**:[2510.18234](https://arxiv.org/abs/2510.18234) | **发布**:2025-10-21
|
||
> **作者/机构**:Haoran Wei、Yaofeng Sun、Yukun Li(DeepSeek-AI,深度求索)
|
||
> **原文 PDF**:[05-DeepSeek-OCR-2510.18234.pdf](./05-DeepSeek-OCR-2510.18234.pdf)
|
||
|
||
## 一、摘要(全文翻译)
|
||
|
||
我们提出 DeepSeek-OCR,作为对「通过光学二维映射(optical 2D mapping)压缩长上下文」这一可行性的初步研究。DeepSeek-OCR 由两个组件构成:DeepEncoder,以及作为解码器的 DeepSeek3B-MoE-A570M。具体而言,DeepEncoder 充当核心引擎,其设计目标是在高分辨率输入下保持低激活(activation),同时实现高压缩比,从而确保视觉 token 数量既最优又可控。实验表明,当文本 token 数量不超过视觉 token 数量的 10 倍(即压缩比 < 10×)时,模型可以达到 97% 的解码(OCR)精度。即使在 20× 的压缩比下,OCR 精度仍保持在约 60%。这对历史长上下文压缩以及 LLM 中的记忆遗忘机制等研究领域展现出相当大的前景。除此之外,DeepSeek-OCR 还表现出很高的实用价值。在 OmniDocBench 上,它仅使用 100 个视觉 token 就超过了 GOT-OCR2.0(每页 256 token),并在使用不到 800 个视觉 token 的情况下超过了 MinerU2.0(平均每页 6000+ token)。在生产环境中,DeepSeek-OCR 可以以每天 20 万页以上的规模为 LLM/VLM 生成训练数据(单张 A100-40G)。代码与模型权重公开于 http://github.com/deepseek-ai/DeepSeek-OCR 。
|
||
|
||
## 二、核心贡献
|
||
|
||
1. **视觉-文本 token 压缩比的量化边界**:首次回答「解码 N 个文本 token 至少需要多少视觉 token」,在 Fox 上给出 9–10× 压缩时解码精度 96%+、10–12× 约 90%、20× 约 60%(图 1(a))。
|
||
2. **提出 DeepEncoder 架构**:用 16× 卷积压缩器串联窗口注意力与全局注意力组件,让窗口注意力承担海量视觉 token、压缩器在进入稠密全局注意力前先削减 token 数,兼顾高分辨率、低激活与极少视觉 token。
|
||
3. **构建 DeepSeek-OCR**:DeepEncoder + DeepSeek3B-MoE(激活 570M),在 OmniDocBench 的端到端模型中性能最优且视觉 token 最少(图 1(b)),并具备图表、化学式、几何图形与自然图像的解析能力。
|
||
4. **生产级数据引擎**:单张 A100-40G 每天可生成 20 万页以上数据;20 个节点(每节点 8×A100-40G)每天可生产 3300 万页。
|
||
5. **长上下文新视角**:论证视觉模态可作文本信息的低成本压缩媒介(多模态系统本就需视觉编码器,故无额外开销),并设想「历史文本渲染成图→逐步缩放更老的图」的多级压缩以模拟生物记忆的遗忘曲线。
|
||
|
||
## 三、方法与技术要点
|
||
|
||
### 3.1 总体架构
|
||
|
||
DeepSeek-OCR 采用统一的端到端 VLM 架构:编码器(DeepEncoder)负责提取图像特征、将视觉表示 token 化并压缩;解码器依据图像 token 与提示词生成结果。DeepEncoder 约 380M 参数,由 80M 的 SAM-base 与 300M 的 CLIP-large 串联构成;解码器为 3B 的 DeepSeekMoE,激活参数 570M。因任务是对光学压缩的初步可行性验证,作者刻意把编码器做轻、把压缩比推到极限。
|
||
|
||
### 3.2 DeepEncoder:为什么需要新编码器
|
||
|
||
作者先列出理想编码器必备的五个特征:能处理高分辨率、高分辨率下激活低、视觉 token 少、支持多分辨率输入、参数量适中。第 2.1 节表明现有开源编码器无法同时满足:Vary 的双塔结构需双重图像预处理、难以流水线并行;InternVL2.0 的切块方案降低激活,却因原生分辨率偏低使大图被过度切碎、视觉 token 暴增;Qwen2-VL 的自适应分辨率虽灵活,却因大图激活显存过大可能 OOM。故需自研编码器。
|
||
|
||
**架构设计(图 3)**:DeepEncoder 由「以窗口注意力为主的感知组件」与「稠密全局注意力的知识组件」构成,为继承预训练收益分别采用 SAM-base(patch size 16)与 CLIP-large;关键改动是**去掉 CLIP 的第一个 patch embedding 层**,因其输入不再是图像,而是上一段流程输出的 token。两组件之间借鉴 Vary,用 **2 层卷积做 16× 下采样**(kernel 3、stride 2、padding 1,通道 256→1024)。以 1024×1024 输入为例:
|
||
|
||
$$
|
||
\frac{1024}{16}\times\frac{1024}{16}=4096\ \text{patch tokens},\qquad \frac{4096}{16}=256\ \text{tokens after compression}
|
||
$$
|
||
|
||
前半段由窗口注意力主导且仅 80M,激活可接受;4096 个 token 在进入全局注意力前先压成 256 个,整体激活显存因之可控。这就是「先感知、后压缩、再全局建模」的分工:窗口注意力以低成本换细节,压缩器把成本峰值挡在稠密全局注意力之外。
|
||
|
||
### 3.3 多分辨率支持
|
||
|
||
要回答「1000 个光学字符需要多少视觉 token」,模型必须支持可变视觉 token 数,故 DeepEncoder 需支持多分辨率:方式是**位置编码的动态插值**,并让多种分辨率模式同时训练(表 1)。
|
||
|
||
| 模式 | 原生分辨率 | 视觉 token 数 | 处理方式 |
|
||
|---|---|---|---|
|
||
| Tiny | 512×512 | 64 | resize |
|
||
| Small | 640×640 | 100 | resize |
|
||
| Base | 1024×1024 | 256 | padding |
|
||
| Large | 1280×1280 | 400 | padding |
|
||
| Gundam(动态) | n×640×640 + 1024×1024 | n×100+256 | resize + padding |
|
||
| Gundam-M(动态) | n×1024×1024 + 1280×1280 | n×256+400 | resize + padding |
|
||
|
||
Tiny/Small 分辨率小,直接按原形状缩放以免浪费 token;Base/Large 为保持长宽比采用填充,填充后有效视觉 token 少于实际数量:
|
||
|
||
$$
|
||
N_{valid}=\left\lceil N_{actual}\times\left[1-\frac{\max(w,h)-\min(w,h)}{\max(w,h)}\right]\right\rceil \tag{1}
|
||
$$
|
||
|
||
动态分辨率由两种原生分辨率组合,切块沿用 InternVL2.0。Gundam 由 n 个 640×640 局部视图(tile)加一个 1024×1024 全局视图构成,动机是应用需求(尤其报纸这类超高分辨率输入)——切块相当于「二级窗口注意力」,可进一步压低激活;因原生分辨率较大,图像不会被过度切碎(tile 数 2–9)。宽高均小于 640 时 $n=0$,Gundam 退化为 Base。Gundam-M 则由已训练模型继续训练 6M 采样数据得到,主要为负载均衡(其分辨率过大,混合训练会拖慢速度)。
|
||
|
||
### 3.4 MoE 解码器
|
||
|
||
解码器采用 DeepSeekMoE(DeepSeek-3B-MoE):推理时从 64 个路由专家中激活 6 个,另加 2 个共享专家,激活参数约 570M。作者认为它既有 3B 的表达能力、又享有 500M 小模型的推理效率,尤其适合以领域为中心的 VLM 研究。解码即从压缩潜变量重建文本表示:
|
||
|
||
$$
|
||
f_{\text{dec}}:\mathbb{R}^{n\times d_{\text{latent}}}\rightarrow\mathbb{R}^{N\times d_{\text{text}}},\qquad \hat{\mathbf{X}}=f_{\text{dec}}(\mathbf{Z})\quad\text{where }n\le N \tag{2}
|
||
$$
|
||
|
||
其中 $\mathbf{Z}$ 为 DeepEncoder 输出的压缩潜(视觉)token,$\hat{\mathbf{X}}$ 为重建文本表示。作者指出这是紧致语言模型可通过 OCR 式训练学会的非线性映射,并推测 LLM 经专门预训练优化能更自然地集成该能力。
|
||
|
||
### 3.5 数据引擎与训练流程
|
||
|
||
数据分四类,配比为 **OCR 70%、通用视觉 20%、纯文本 10%**。
|
||
|
||
- **OCR 1.0 数据**:收集 3000 万页 PDF、覆盖约 100 种语言(中英约 2500 万、其它 500 万)。粗标注用 `fitz` 直接抽取,用于教模型识别光学文本(尤其小语种);精标注中英各 200 万页,用 PP-DocLayout 等布局模型与 MinerU、GOT-OCR2.0 构建检测-识别交错数据,以不同提示词与粗标注区分;小语种先用小块数据训练一个 GOT-OCR2.0 再标注布局处理后的小块,以模型飞轮产出 60 万样本。另收集 300 万 Word 数据(提升公式与 HTML 表格能力)与 LAION/Wukong 来源、PaddleOCR 标注的中英场景 OCR 各 1000 万。
|
||
- **OCR 2.0 数据**:图表参照 OneChart 渲染 1000 万张图,解析目标定为**图像到 HTML 表格的转换**(比字典格式省 token);化学式以 PubChem 的 SMILES 经 RDKit 渲染成 500 万图文对;平面几何沿 Slow Perception 加平移不变增广,共 100 万条。
|
||
- **通用视觉数据**:参照 DeepSeek-VL2 生成 caption、detection、grounding 数据,仅占 20%,只为保留通用视觉接口。
|
||
- **纯文本数据**:占 10%,统一为 8192 token 长度。
|
||
|
||
**训练分两阶段**。阶段一独立训练 DeepEncoder:仿 Vary 以紧致语言模型做下一 token 预测,数据为全部 OCR 1.0/2.0 加 LAION 采样的 1 亿通用数据,训练 2 epoch、batch size 1280、AdamW + 余弦退火、学习率 5e-5。阶段二在 HAI-LLM 平台训练 DeepSeek-OCR:4 段流水线并行——SAM 与压缩器作为「视觉分词器」置于 PP0 并冻结,CLIP 视为输入嵌入层置于 PP1 且可训练,12 层 MoE 每 6 层置于 PP2/PP3;20 节点(每节点 8×A100-40G)、DP 40、全局 batch 640、AdamW + step 调度器、初始学习率 3e-5;纯文本 90B token/天,多模态 70B token/天。
|
||
|
||
## 四、主要实验结果
|
||
|
||
### 4.1 视觉-文本压缩研究(Fox 基准)
|
||
|
||
取 Fox 英文文档部分,用 DeepSeek-OCR 的分词器(词表约 129k)对 ground truth 分词,挑选 600–1300 文本 token 的文档共 100 页,仅测 Tiny(64 token)与 Small(100 token)模式,提示词为无布局的 `"<image>\nFree OCR."`。
|
||
|
||
| 文本 token 区间 | 视觉 token=64 精度 | 压缩比 | 视觉 token=100 精度 | 压缩比 | 页数 |
|
||
|---|---|---|---|---|---|
|
||
| 600–700 | 96.5% | 10.5× | 98.5% | 6.7× | 7 |
|
||
| 700–800 | 93.8% | 11.8× | 97.3% | 7.5× | 28 |
|
||
| 800–900 | 83.8% | 13.2× | 96.8% | 8.5× | 28 |
|
||
| 900–1000 | 85.9% | 15.1× | 96.8% | 9.7× | 14 |
|
||
| 1000–1100 | 79.3% | 16.5× | 91.5% | 10.6× | 11 |
|
||
| 1100–1200 | 76.4% | 17.7× | 89.8% | 11.3× | 8 |
|
||
| 1200–1300 | 59.1% | 19.7× | 87.1% | 12.6× | 4 |
|
||
|
||
10× 压缩比以内解码精度可达约 97%,作者认为未来有望通过文生图实现接近 10× 的无损上下文压缩。超过 10× 后性能下降,原因有二:长文档布局更复杂;长文本在 512×512 或 640×640 下变模糊——前者可把文本渲染到单一布局页面解决,后者被认为将演化为「遗忘机制」的特性。压缩近 20× 时精度仍接近 60%;且输出格式无法与 Fox 完全对齐,实际性能应略高。
|
||
|
||
### 4.2 OCR 实际性能(OmniDocBench)
|
||
|
||
表内指标均为编辑距离(越小越好),括号中为按公式 (1) 计算的有效视觉 token 数。
|
||
|
||
| 基准 / 任务 | 本模型 | 对比对象 | 说明 |
|
||
|---|---|---|---|
|
||
| OmniDocBench overall 编辑距离(英文 / 中文) | Small,100 token:0.221 / 0.284 | GOT-OCR2.0,256 token:0.287 / 0.411 | 仅用 100 token 即超过 GOT-OCR2.0 |
|
||
| 同上 | Large,400(285) token:0.138 / 0.208 | MinerU2.0,6790 token:0.133 / 0.238;dots.ocr†200dpi,5545 token:0.125 / 0.16;Gemini2.5-Pro:0.148 / 0.212 | 400 token 时达到与该基准 SOTA 相当的水平(英文 0.138 接近 MinerU2.0 的 0.133,中文 0.208 优于其 0.238) |
|
||
| 同上 | Gundam,795 token:0.127 / 0.181 | MinerU2.0,6790 token:0.133 / 0.238 | 用不到 800 个视觉 token 超过需要近 7000 token 的 MinerU2.0 |
|
||
| 同上 | Gundam-M†200dpi,1853 token:0.123 / 0.157 | dots.ocr†200dpi,5545 token:0.125 / 0.16 | 本文最佳配置 |
|
||
| 同上(弱配置对照) | Tiny,64 token:0.386 / 0.361;Base,256(182) token:0.137 / 0.24 | Dolphin:0.356 / 0.44;MinerU-2.1.1:0.162 / 0.244 | Tiny 模式接近传统流水线模型 Dolphin |
|
||
|
||
按文档类别的编辑距离(表 4)显示压缩边界有强烈的类别依赖:幻灯片只需 64 个视觉 token(Tiny 0.116、Small 0.111、Base 0.08);Book/Report 类仅需 100 个(Small 分别为 0.085 / 0.079);报纸则差异悬殊——Tiny 0.94、Small 0.744、Base 0.645、Large 0.353,必须用 Gundam(0.122)乃至 Gundam-M(0.099)。这与 4.1 节一致:这些文档的文本 token 多在 1000 以内、压缩比不超 10×;报纸则有 4000–5000 文本 token,远超其它模式的 10× 能力。
|
||
|
||
### 4.3 定性能力
|
||
|
||
- **深度解析(deep parsing)**:模型兼具布局与 OCR 2.0 能力,可通过二次模型调用解析文档内的图表、几何图形、化学式乃至自然图像,且只需统一提示词(图表转结构化结果、化学式转 SMILES)。
|
||
- **多语言识别**:可处理近 100 种语言,与中英文一样同时支持带/不带布局两种输出,论文以阿拉伯语、僧伽罗语为例。
|
||
- **通用视觉理解**:保留图像描述、目标检测、grounding 与语言能力;但因未包含 SFT 阶段,模型不是聊天机器人,部分能力需补全式提示词激活。
|
||
|
||
## 五、结论、局限与影响
|
||
|
||
- **结论**:论文初步验证了上下文光学压缩的可行性——模型能从少量视觉 token 解码出超过其 10 倍数量的文本 token;DeepSeek-OCR 也可支撑大规模预训练数据生产。作者强调仅靠 OCR 尚不足以完全验证真正的上下文光学压缩,未来将做数字-光学交错预训练与大海捞针测试。
|
||
- **局限性**:OCR 只是该范式的概念验证;压缩比超过 10× 后性能明显下降;报纸类需 Gundam/Gundam-M 才能获得可接受的编辑距离;模型未做 SFT、不是对话模型,部分能力需补全提示激活;几何解析因线段依赖错综复杂「仍有很长的路要走」;作者承认这属早期工作。Fox 评测中输出格式与 ground truth 不一致,也会低估实际性能。
|
||
- **影响**:工作给出视觉 token 分配的经验性指南,并提出两条路径——对多轮对话中第 k 轮之后的历史做光学处理以取得约 10× 压缩效率;对更早上下文逐步缩小渲染图以进一步省 token,模拟与「视觉随距离退化」相平行的记忆衰减(近端高保真、远端自然模糊),指向理论上有无限上下文能力、兼顾信息保留与算力约束的架构。
|
||
|
||
## 六、关键术语对照表
|
||
|
||
| English | 中文 |
|
||
|---|---|
|
||
| Contexts Optical Compression | 上下文光学压缩 |
|
||
| Optical 2D Mapping | 光学二维映射 |
|
||
| Vision Token | 视觉 token |
|
||
| Compression Ratio | 压缩比 |
|
||
| DeepEncoder | DeepEncoder(深度编码器) |
|
||
| Window Attention | 窗口注意力 |
|
||
| Global Attention(Dense) | (稠密)全局注意力 |
|
||
| Token Compressor | token 压缩器 |
|
||
| Native / Dynamic Resolution | 原生分辨率 / 动态分辨率 |
|
||
| Tiling | 切块(局部视图) |
|
||
| MoE Decoder / Activated Parameters | MoE 解码器 / 激活参数 |
|
||
| Deep Parsing | 深度解析 |
|
||
| OCR 1.0 / OCR 2.0 | OCR 1.0 任务 / OCR 2.0 任务 |
|
||
| Edit Distance | 编辑距离 |
|
||
| Forgetting Mechanism | 遗忘机制 |
|
||
| Needle-in-a-Haystack | 大海捞针测试 |
|