Skip to main content

DeepSeek-OCR:一张图真的值一千个字吗?

不只是OCR工具,而是在探索vision-text compression的边界

OCR Technology

DeepSeek昨晚开源了一个OCR模型。

几小时后,Andrej Karpathy在X上发了一条长推,说这篇论文"很有意思",然后开始讨论一个激进的想法:

能不能让所有LLM的输入都变成images,包括纯文本?

马斯克也跟了一条:

"长期来看,AI模型99%以上的输入和输出都会是photons。"

我读完论文,发现他们讨论的是同一件事。

DeepSeek-OCR表面上是个OCR模型,实际上在探索一个更大的问题:

1000个字的文档,最少需要多少个vision tokens才能让LLM理解?

论文给的答案是:100个。

压缩比10倍,准确率97%。

这不只是OCR的问题,而是在挑战一个基本假设:一张图真的值一千个字吗?

今天就跟你聊聊这个。


一、论文在探索什么?

DeepSeek-OCR的论文一开始就问了一个很关键的问题:

"For a document containing 1000 words, how many vision tokens are at least needed for decoding?"

1000个字的文档,最少需要多少vision tokens才能解码?

这个问题看似简单,但它在挑战一个基本假设:一张图真的值一千个字吗?

传统想法:

  • 1000个字 = 1000个text tokens
  • 一张包含这1000个字的图片,也需要差不多1000个vision tokens

DeepSeek的实验结果:

  • 1000个字 ≈ 100个vision tokens
  • 压缩比10倍,准确率97%

这就有意思了。

如果vision tokens真的这么高效,那为什么我们还要用text tokens?

能不能把所有文本都渲染成图片,然后用vision tokens输入LLM?

这就是Andrej Karpathy看完论文后,立刻想到的问题。


二、量化的答案:压缩边界在哪?

论文做了一个很系统的实验,用Fox benchmark测试不同压缩比下的准确率。

结果很清楚:

文档字数Vision Tokens压缩比准确率
600-700字100 tokens6.7×98.5%
700-800字100 tokens7.5×97.3%
900-1000字100 tokens9.7×96.8%
1000-1100字100 tokens10.6×91.5%
1200-1300字100 tokens12.6×87.1%

看到趋势了吗?

10倍压缩以内,准确率97%+,几乎无损。

超过10倍,准确率开始下降,但12倍压缩还有87%。

如果用64个tokens(Tiny模式):

  • 1000字文档,压缩比15倍,准确率85%
  • 1200字文档,压缩比20倍,准确率59%

核心发现:压缩比和准确率的关系不是线性的,而是有一个"甜蜜点"——10倍左右。

论文特别提到:实际准确率比测试结果还要高,因为测试时格式对不上(formatting differences)。

这是首次有人系统地量化vision-text compression的边界。

三、怎么做到的?DeepEncoder架构

DeepSeek-OCR技术架构

能做到10倍压缩,靠的是一个叫DeepEncoder的新架构。

现有的VLM encoder都有问题:

  • Vary(双塔):需要两次预处理,部署复杂
  • InternVL2(tile-based):图片会被切成很多小块,vision tokens太多(>15个/页)
  • Qwen2-VL(adaptive):activation memory太大,大图会爆显存

DeepEncoder的设计很巧妙

输入1024×1024图片

SAM (80M, window attention) → 4096个patch tokens

16× Conv Compressor → 压缩到256个tokens

CLIP (300M, global attention) → 输出256个vision tokens

核心技巧:串联window attention和global attention,中间用16×压缩桥接。

为什么这样设计?

  • 前半部分(SAM):用window attention处理海量tokens(4096个),但因为是局部attention,activation memory可控
  • 中间压缩:16倍降采样,从4096→256
  • 后半部分(CLIP):用global attention处理少量tokens(256个),虽然密集但tokens少所以可控

结果:

  • ✅ 支持高分辨率(1024×1024)
  • ✅ Vision tokens少(256个)
  • ✅ Activation memory低(不会爆显存)

而且通过调整输入分辨率,可以得到不同数量的vision tokens:

  • 512×512 → 64 tokens
  • 640×640 → 100 tokens
  • 1024×1024 → 256 tokens
  • 1280×1280 → 400 tokens

这让他们能系统地测试:用N个vision tokens,能压缩多少text tokens?


四、最激进的idea:模拟人类遗忘

论文里有一张图(Figure 13),我觉得是整篇论文最有想象力的部分。

他们画了一个类比:

人类记忆的时间衰退

  • 刚发生 → Crystal Clear(水晶般清晰)
  • 1小时 → Very Clear
  • 1天 → Clear
  • 1周 → Blurry(模糊)
  • 1月 → Very Blurry
  • 1年 → Almost Gone(几乎消失)

视觉的空间衰退

  • 10cm → Crystal Clear
  • 50cm → Very Clear
  • 1m → Clear
  • 3m → Blurry
  • 10m → Very Blurry
  • 20m → Almost Gone

DeepSeek-OCR的分辨率模式

  • Text token → Crystal Clear
  • Gundam → Very Clear
  • Large → Clear
  • Base → Blurry
  • Small → Very Blurry
  • Tiny → Almost Gone

看到了吗?三条曲线的衰退规律一模一样。

论文提出的想法:

能不能用降低分辨率的方式,模拟人类的记忆遗忘?

具体怎么做?

假设你有一个AI agent,有100轮对话历史:

  • 最近5轮:保持text tokens(高清)
  • 6-20轮:渲染成Large模式图片(400 tokens/轮)
  • 21-50轮:渲染成Base模式(256 tokens/轮)
  • 51-100轮:渲染成Small模式(100 tokens/轮)
  • 100轮以上:渲染成Tiny模式(64 tokens/轮)

效果:

  • Context window从100,000 tokens压缩到10,000 tokens(10倍)
  • 旧对话越来越"模糊",但关键信息还在
  • 重要的旧对话可以"恢复"到高分辨率

这就是论文说的"memory forgetting mechanisms in LLMs"。

用物理的方式(降低分辨率)模拟生物的记忆(遗忘曲线)。


五、这给我们什么启发?

理解了技术思路,再看应用场景,你会发现这不只是"功能列表"。

它展示的是一个新思维:用压缩比和准确率的trade-off,匹配不同场景

1. 高精度场景:Large/Base模式

学术论文、合同文档、技术手册——这些场景容错率低,必须保证准确。

用Large模式(400 tokens)或Base模式(256 tokens),压缩比不高(5-7倍),但准确率接近100%。

这时候,vision tokens不是为了省token,而是为了保留文档的结构化信息(标题、列表、表格、图表)。

传统OCR只能给你纯文本,但DeepSeek-OCR能输出Markdown,保留语义结构。

2. 效率优先场景:Small/Tiny模式

快递单扫描、票据识别、移动端OCR——这些场景对速度和成本敏感。

用Small模式(100 tokens)甚至Tiny模式(64 tokens),压缩比10-20倍,准确率85-95%。

虽然不是100%准确,但对于"扫一眼快递单看个大概"的场景,完全够用。

而且,64个vision tokens意味着显存占用极低,可以跑在移动设备上。

3. 超长文档场景:Gundam模式

这个名字很中二,但思路很务实。

如果你有一个100页的PDF,传统做法是分页处理,然后拼接结果。但这样会丢失跨页的上下文信息。

Gundam模式是动态分辨率:n×640×640 + 1×1024×1024

根据文档长度,自动调整vision tokens数量,既能处理超长文档,又不会爆显存。

4. 压缩思维的本质

看完这些场景,你会发现:

DeepSeek-OCR不是在做"更好的OCR",而是在探索**"用多少视觉信息,能让LLM理解到什么程度"**。

这就像压缩算法——不是无损压缩,而是有损压缩。

关键是找到那个"甜蜜点":压缩到什么程度,信息损失还在可接受范围内?

对于文档OCR,10倍压缩是个甜蜜点(准确率97%)。

对于不同场景,甜蜜点不一样。所以DeepSeek-OCR提供了5种模式,让你自己选。


六、为什么开源很重要?

DeepSeek-OCR用的是MIT协议,完全开源。

但开源的意义,不只是"免费可商用"。

更重要的是,这个技术思路可以被验证、改进、集成到更大的系统里

如果你认同Andrej Karpathy说的那个方向——未来LLM的输入应该都是images——那DeepSeek-OCR就是第一个可以拿来用的工具。

你可以:

  • 用它做实验,验证vision tokens是不是真的比text tokens更高效
  • 基于它改进encoder,探索更好的压缩算法
  • 把它集成到自己的多模态系统里,测试真实场景的效果

这比闭源的API强太多了。

API只能告诉你"输入图片,输出文字",但底层怎么做的、为什么这么做、能不能改进——你都不知道。

开源才能推动这个领域往前走。

而且,DeepSeek一直在这么做。去年的DeepSeek-Coder、今年的DeepSeek-V3,都是完全开源的。

这次的DeepSeek-OCR也一样。

这对整个AI社区来说,是真正的贡献


七、回到最初的问题

文章开头,我们提到Andrej Karpathy的那个激进想法:

"能不能让所有LLM的输入都变成images?"

和马斯克的观点:

"长期来看,AI模型99%以上的输入和输出都会是photons。"

现在,读完DeepSeek-OCR的技术细节,你应该明白了:

这不是科幻,而是正在发生的技术路径。

DeepSeek-OCR证明了:

  • 1000个字的文档,可以压缩到100个vision tokens(10倍压缩,97%准确率)
  • 通过降低分辨率,可以模拟人类的记忆遗忘
  • Vision tokens比text tokens更适合做上下文压缩

如果这个方向成立,那未来的LLM可能长这样:

  • 输入层:全是vision encoder,文本也渲染成图片
  • 压缩层:根据重要性动态调整分辨率
  • 理解层:LLM在"模糊"和"清晰"之间做trade-off

一张图到底值多少个字?

DeepSeek-OCR的答案是:取决于你需要什么精度

10倍压缩够了,就用100个tokens。想要更清晰,就用400个tokens。想要省资源,64个tokens也能用。

这就是"上下文光学压缩"的本质。


DeepSeek-OCR刚发布,还有很多问题需要验证:中文支持、复杂布局、长文档处理...

但我觉得,它的思路值得关注。

不是做"更好的OCR",而是探索"LLM需要什么样的视觉信息"。

如果你对这个方向感兴趣,可以去GitHub看看代码:

https://github.com/deepseek-ai/DeepSeek-OCR

MIT协议,开源免费,拿去用就是了。


实际效果展示

这是DeepSeek-OCR官方提供的几个实际案例:

文档识别示例1

文档识别示例2

文档识别示例3

文档识别示例4

从这些示例可以看出,DeepSeek-OCR能处理多种类型的文档:复杂布局、图文混排、表格、手写文字等。