DeepSeek-OCR:上下文光学压缩
来源:https://arxiv.org/pdf/2510.18234v1
侯浩然、孙耀峰、李宇坤
DeepSeek-AI
摘要
本文提出 DeepSeek-OCR,作为通过光学二维映射压缩长上下文的可行性初步研究。该模型包含两大核心组件:DeepEncoder 编码器与 DeepSeek3B-MoE-A570M 解码器。其中 DeepEncoder 作为核心引擎,设计目标是在高分辨率输入下保持低激活状态,同时实现高压缩比,确保生成最优且可管理的视觉令牌数量。实验表明:当文本令牌数量不超过视觉令牌10倍时(即压缩比<10倍),模型解码(OCR)精度可达97%;即使在20倍压缩比下,OCR 准确率仍能维持在60%左右。这为历史长上下文压缩、大语言模型记忆遗忘机制等研究方向展现了可观潜力。此外,DeepSeek-OCR 更具显著实用价值------在 OmniDocBench 基准测试中,仅用100个视觉令牌即超越 GOT-OCR2.0(每页256令牌),并以不足800视觉令牌的表现优于平均每页需6000+令牌的MinerU2.0。实际应用中,单张A100-40G显卡每日可生成20万页以上的LLM/VLM训练数据。代码与模型权重已开源于:http://github.com/deepseek-ai/DeepSeek-OCR

图1 | (a)图显示在Fox [21]基准测试中的压缩比(真实文本令牌数/模型所用视觉令牌数);(b)图展示在OmniDocBench [27]上的性能对比。DeepSeek-OCR能够在端到端模型中实现最少的视觉令牌使用量,同时达到领先性能水平。
1. 引言
当前大型语言模型在处理长文本内容时,由于序列长度的二次方缩放特性面临显著计算挑战。我们探索了一种潜在解决方案:利用视觉模态作为文本信息的高效压缩媒介。包含文档文本的单张图像能够以远少于等效数字文本的令牌数量表征丰富信息,这表明通过视觉令牌实现光学压缩可获得更高压缩比。
这一发现促使我们从以LLM为核心的视角重新审视视觉语言模型,重点关注视觉编码器如何提升LLM处理文本信息的效率,而非局限于人类擅长的基础视觉问答任务。作为连接视觉与语言的中间模态,OCR任务为这种视觉-文本压缩范式提供了理想试验场------它在建立视觉与文本表征间自然压缩-解压缩映射的同时,提供了可量化的评估指标。
基于此,我们提出DeepSeek-OCR模型,作为高效视觉-文本压缩的初步概念验证。本研究主要有三大贡献:
首先,我们提供了视觉-文本令牌压缩比的全面量化分析。在包含多样文档版式的Fox基准测试中(如图1a所示),我们的方法在9-10倍文本压缩时实现96%+的OCR解码精度,10-12倍压缩时保持约90%精度,20倍压缩时仍维持约60%精度(若考虑输出与真实值间的格式差异,实际精度更高)。这些结果表明紧凑语言模型能有效学习解码压缩视觉表征,暗示更大规模的LLM通过适当的预训练设计亦可获得类似能力。
其次,我们提出DeepEncoder创新架构,即使处理高分辨率输入时也能保持低激活内存与最简视觉令牌数。该架构通过16倍卷积压缩器串联窗口注意力与全局注意力编码组件,确保窗口注意力组件处理大量视觉令牌的同时,压缩器能在视觉令牌进入稠密全局注意力组件前实现有效精简,最终达成内存与令牌的双重高效压缩。
第三,我们基于DeepEncoder和DeepSeek3B-MoE[19,20]开发了DeepSeek-OCR系统。如图1(b)所示,该模型在使用最少视觉令牌的前提下,于OmniDocBench基准测试中实现了端到端模型中的最优性能。此外,我们还为该模型增强了解析图表、化学方程式、简单几何图形及自然图像的能力,以进一步提升其实用价值。在实际部署中,DeepSeek-OCR仅需20个计算节点(每个节点配备8张A100-40G GPU)即可每日为LLM/VLM生成3300万页训练数据。
总结而言,本研究对使用视觉模态作为LLM文本信息处理的高效压缩媒介进行了初步探索。通过DeepSeek-OCR,我们证明了视觉-文本压缩能够在不同历史上下文阶段实现显著的令牌缩减(7-20倍),为解决大语言模型的长上下文挑战提供了新方向。我们的量化分析为VLM令牌分配优化提供了实证指导,而提出的DeepEncoder架构则通过实际部署能力验证了技术可行性。尽管现阶段以OCR作为概念验证载体,但该范式为重新思考视觉与语言模态如何协同提升大规模文本处理及智能体系统的计算效率开辟了新的可能性。

图2 | 主流视觉语言模型的典型视觉编码器。当前开源VLM中常用的三类编码器均存在各自缺陷。
2. 相关工作
2.1 视觉语言模型的典型视觉编码器
如图2所示,当前开源VLM主要采用三类视觉编码器架构:第一类是以Vary[36]为代表的双塔架构,通过并行SAM[17]编码器扩展视觉词表参数以处理高分辨率图像。该方法虽能控制参数量和激活内存,但存在明显缺陷:需要双重图像预处理导致部署复杂化,且训练时难以实现编码器流水线并行。第二类是以InternVL2.0[8]为代表的分块处理方法,将图像分割为小块进行并行计算以降低高分辨率下的激活内存。尽管能处理极高分辨率,但由于其基础编码器分辨率通常较低(低于512×512),导致大尺寸图像过度碎片化并产生大量视觉令牌。第三类是以Qwen2-VL[35]为代表的自适应分辨率编码,采用NaViT[10]范式直接通过基于图像块的分割处理完整图像而无需分块并行。该编码器虽能灵活适应不同分辨率,但处理大图像时面临严峻挑战:巨大的激活内存消耗可能导致GPU内存溢出,且训练时序列打包需要极长序列长度。过长的视觉令牌会同时拖慢推理过程的预填充和生成阶段。
2.2 端到端OCR模型
OCR(特别是文档解析任务)一直是图像转文本领域的热点研究方向。随着VLM技术的发展,大量端到端OCR模型应运而生,通过简化OCR系统彻底改变了传统流水线架构(需依赖独立的检测与识别专家模型)。Nougat[6]首次在arXiv学术论文OCR中应用端到端框架,证明了模型处理密集感知任务的潜力。GOT-OCR2.0[38]将OCR2.0范畴扩展至更多合成图像解析任务,并设计了性能与效率平衡的OCR模型,进一步凸显了端到端OCR研究的价值。此外,通用视觉模型如Qwen-VL系列[35]、InternVL系列[8]及其众多衍生模型持续增强文档OCR能力,不断探索密集视觉感知的边界。然而当前模型尚未解决一个关键研究问题:对于包含1000词的文档,解码至少需要多少视觉令牌?该问题对"一图胜千言"原理的基础研究具有重大意义。
3. 方法论
3.1. 架构
如图3所示,DeepSeek-OCR 采用统一的端到端视觉语言模型架构,由一个编码器和一个解码器组成。编码器负责提取图像特征,并对视觉表示进行标记化及压缩。解码器用于基于图像标记和提示生成所需的结果。DeepEncoder 参数量约为 3.8 亿,主要由一个 8000 万参数的 SAM-base [17] 和一个 3 亿参数的 CLIP-large [29] 串联构成。解码器采用 30 亿参数的 MoE [19, 20] 架构,激活参数量为 5.7 亿。在后续段落中,我们将深入探讨模型组件、数据工程及训练技巧。

图3 | DeepSeek-OCR架构示意图。DeepSeek-OCR由DeepEncoder编码器与DeepSeek-3B-MoE解码器构成。其中DeepEncoder作为系统核心,包含三个组件:基于窗口注意力机制的SAM[17]感知模块、采用密集全局注意力的CLIP[29]知识模块,以及连接二者的16倍标记压缩器。
3.2. DeepEncoder
为探索上下文光学压缩的可行性,我们需要一个具备以下特征的视觉编码器:1. 能够处理高分辨率;2. 高分辨率下激活量低;3. 视觉标记数量少;4. 支持多分辨率输入;5. 参数量适中。然而,如第 2.1 节所述,当前的开源编码器无法完全满足所有这些条件。因此,我们自行设计了一种新颖的视觉编码器,命名为 DeepEncoder。
3.2.1. DeepEncoder 的架构
DeepEncoder 主要由两个组件构成:一个以窗口注意力为主的视觉感知特征提取组件,以及一个具有密集全局注意力的视觉知识特征提取组件。为受益于前人工作的预训练成果,我们分别使用 SAM-base 和 CLIP-large 作为这两个组件的主体架构。对于 CLIP,我们移除了其首个补丁嵌入层,因为其输入不再是图像,而是来自前序流水线的输出标记。在两个组件之间,我们借鉴了 Vary [36] 的方法,使用一个 2 层卷积模块对视觉标记进行 16 倍下采样。每个卷积层的核大小为 3,步长为 2,填充为 1,通道数从 256 增加至 1024。假设我们输入一张 1024×1024 的图像,DeepEncoder 会将其分割为 1024/16×1024/16=4096 个补丁标记。由于编码器前半部分以窗口注意力为主且仅有 8000 万参数,其激活量是可接受的。在进入全局注意力之前,这 4096 个标记会经过压缩模块,标记数量变为 4096/16=256,从而使整体激活内存可控。

图4 | 为测试模型在不同压缩比(需要不同数量的视觉标记)下的性能,并增强DeepSeek-OCR的实用性,我们为其配置了多分辨率模式。
表1 | DeepEncoder的多分辨率支持特性。出于研究与应用的双重目的,我们为DeepEncoder设计了多种原生分辨率与动态分辨率模式。

3.2.2. 多分辨率支持
假设我们有一张包含1000个光学字符的图像,需要测试解码所需视觉标记的数量。这就要求模型支持可变数量的视觉标记,即DeepEncoder需具备多分辨率支持能力。
我们通过位置编码的动态插值来满足上述需求,并设计了若干分辨率模式进行同步模型训练,以实现单一DeepSeek-OCR模型支持多分辨率的能力。如图4所示,DeepEncoder主要支持两大输入模式:原生分辨率与动态分辨率,每种模式均包含多个子模式。
原生分辨率支持四种子模式:Tiny、Small、Base和Large,其对应分辨率与标记数分别为512×512(64)、640×640(100)、1024×1024(256)和1280×1280(400)。由于Tiny和Small模式分辨率较小,为避免视觉标记浪费,采用直接缩放原图尺寸的方式处理。对于Base和Large模式,为保持原始图像宽高比,会对图像进行填充至对应尺寸。填充后有效视觉标记数将少于实际视觉标记数,计算公式如下:
Nvalid=⌈Nactual×[1−(max(w,h)−min(w,h)max(w,h))]⌉(1) N_{valid} = \lceil N_{actual} \times [1 - ( \frac{\max(w, h) - \min(w, h)}{\max(w, h)} )] \rceil\tag{1} Nvalid=⌈Nactual×[1−(max(w,h)max(w,h)−min(w,h))]⌉(1)
其中www和hhh分别代表原始输入图像的宽度与高度。
动态分辨率可由两种原生分辨率组合构成。例如Gundam模式由n×640×640的局部切片与1024×1024的全局视图组成,其切片方法遵循InternVL2.0[8]的实现。支持动态分辨率主要出于应用考量,特别是针对超高分辨率输入(如报纸图像)。切片作为二次窗口注意力的一种形式,能进一步有效降低激活内存。值得注意的是,由于我们设定的原生分辨率较大,动态分辨率下图像不会过度碎片化(切片数量控制在2至9片范围内)。DeepEncoder在Gundam模式下的视觉标记输出数量为:n×100+256n \times 100 + 256n×100+256,其中nnn为切片数量。当图像宽高均小于640时,nnn设置为0,此时Gundam模式将降级为Base模式。
Gundam模式与四种原生分辨率模式共同参与训练,以实现单一模型支持多分辨率的目标。需特别说明的是,Gundam-master模式(1024×1024局部切片+1280×1280全局视图)是在训练完成的DeepSeek-OCR模型基础上通过持续训练获得。这主要是出于负载均衡考虑,因为Gundam-master分辨率过大,同步训练会降低整体训练速度。
3.3. MoE解码器
我们的解码器采用DeepSeekMoE[19,20]架构,具体为DeepSeek-3B-MoE版本。在推理过程中,模型会激活64个路由专家中的6个及2个共享专家,激活参数量约为5.7亿。该3B参数的DeepSeekMoE非常适用于以领域为中心(如本研究的OCR)的视觉语言模型研究,因其在获得30亿模型表达能力的同时,保持了5亿参数小模型的推理效率。
该解码器通过从DeepEncoder压缩的潜在视觉标记中重建原始文本表示,其映射关系为:
fdec:Rn×dlatent→RN×dtext;X^=fdec(Z)其中n≤N(2)f_{\text{dec}} : \mathbb{R}^{n \times d_{\text{latent}}} \to \mathbb{R}^{N \times d_{\text{text}}};\quad \hat{\mathbf{X}} = f_{\text{dec}}(\mathbf{Z}) \quad \text{其中} \quad n \leq N \tag{2}fdec:Rn×dlatent→RN×dtext;X^=fdec(Z)其中n≤N(2)
式中Z∈Rn×dlatent\mathbf{Z} \in \mathbb{R}^{n \times d_{\text{latent}}}Z∈Rn×dlatent表示来自DeepEncoder的压缩潜在(视觉)标记,X^∈RN×dtext\hat{\mathbf{X}} \in \mathbb{R}^{N \times d_{\text{text}}}X^∈RN×dtext为重建的文本表示。函数fdecf_{\text{dec}}fdec代表一个非线性映射,可通过OCR式训练由紧凑语言模型有效学习。有理由推测,经过专门预训练优化的大型语言模型将更自然地整合此类能力。
3.4 数据引擎
我们为DeepSeek-OCR构建了复杂多样的训练数据,主要包括三大类别:
- OCR 1.0数据:主要以传统OCR任务为核心,包含场景图像OCR与文档OCR等典型场景;
- OCR 2.0数据:主要涵盖复杂人造图像的解析任务,包括常见图表、化学公式及平面几何解析数据;
- 通用视觉数据:主要用于向DeepSeek-OCR注入通用图像理解能力,同时保留通用视觉接口。
3.4.1. OCR 1.0数据
文档数据是DeepSeek-OCR的重中之重。我们从互联网收集了3000万页多语言PDF数据,涵盖约100种语言,其中中英文约2500万页,其他语言共500万页。针对该数据,我们创建了两类真值标注:
- 粗粒度标注:使用fitz工具从全量数据直接提取,旨在使模型掌握光学文本识别能力,特别针对小语种数据
- 细粒度标注:包含中英文各200万页,采用先进版面分析模型(如PP-DocLayout[33])与OCR模型(如MinuerU[34]和GOT-OCR2.0[38])构建检测与识别交替数据
对于小语种数据,在检测环节我们发现版面分析模型具备一定泛化能力;在识别环节,通过fitz创建小图块数据训练GOT-OCR2.0模型,继而使用训练后的模型对版面处理后的小图块进行标注,借助模型飞轮机制生成60万数据样本。在DeepSeek-OCR训练过程中,通过不同提示词区分粗/细粒度标签。细粒度图文对真值标注示例如图5所示。
我们还收集了300万份Word文档,通过直接提取内容构建无版面信息的高质量图文对。该数据主要对公式与HTML格式表格的处理具有增益效果。此外,我们选取了部分开源数据[28,37]作为补充。
在自然场景OCR方面,我们的模型主要支持中英文。图像数据源自LAION[31]和Wukong[13],使用PaddleOCR[9]进行标注,中英文各含1000万数据样本。与文档OCR类似,自然场景OCR同样可通过提示词控制是否输出检测框。

图5 | OCR 1.0细粒度标注示例。我们将真值标注构建为交替出现的版面布局与文本格式,每个文本段落前均标注其在原图中的坐标位置及标签。所有坐标均归一化至1000个量化区间。
3.4.2. OCR 2.0数据
遵循GOT-OCR2.0[38]的界定,我们将图表、化学公式及平面几何解析数据统称为OCR 2.0数据:
-
图表数据:沿用OneChart[7]方案,通过pyecharts与matplotlib渲染生成1000万张图像,主要涵盖常用折线图、柱状图、饼图及复合图表。我们将图表解析定义为图像到HTML表格的转换任务,具体示例如图6(a)所示
-
化学公式:采用PubChem中的SMILES格式作为数据源,通过RDKit工具将其渲染为图像,构建500万组图文对
-
平面几何:按照Slow Perception[39]方法进行数据生成。具体以感知标尺尺寸4为基准对每条线段进行建模。为增强渲染数据多样性,我们引入几何平移不变性数据增强技术------将同一几何图像在原始画布内进行平移,其对应真值仍保持为坐标系中心位置绘制的标准形式。基于此方法,我们共构建100万条平面几何解析数据,示例如图6(b)所示
3.4.3. 通用视觉数据
DeepEncoder能够受益于CLIP的预训练成果,且具备足够参数量以融合通用视觉知识。因此,我们同样为DeepSeek-OCR准备了相应数据。参照DeepSeek-VL2[40]方案,我们为图像描述、目标检测与定位等任务生成对应数据。需要说明的是,DeepSeek-OCR并非通用视觉语言模型,该部分数据仅占总数据量的20%。引入此类数据主要为保留通用视觉接口,以便后续研究者能基于我们的模型便捷地开展通用视觉任务研究。
3.4.4. 纯文本数据
为保障模型语言能力,我们引入10%内部纯文本预训练数据,所有数据均处理为8192标记长度------此数值同时也是DeepSeek-OCR的序列长度。综上所述,在训练DeepSeek-OCR时,OCR数据占比70%,通用视觉数据占比20%,纯文本数据占比10%。
【未完,待续】