跳至主要内容

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能處理多種型別的文件:複雜佈局、圖文混排、表格、手寫文字等。