DeepSeek-OCR:一張圖真的值一千個字嗎?
不只是OCR工具,而是在探索vision-text compression的邊界
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 tokens | 6.7× | 98.5% |
| 700-800字 | 100 tokens | 7.5× | 97.3% |
| 900-1000字 | 100 tokens | 9.7× | 96.8% |
| 1000-1100字 | 100 tokens | 10.6× | 91.5% |
| 1200-1300字 | 100 tokens | 12.6× | 87.1% |
看到趨勢了嗎?
10倍壓縮以內,準確率97%+,幾乎無損。
超過10倍,準確率開始下降,但12倍壓縮還有87%。
如果用64個tokens(Tiny模式):
- 1000字文件,壓縮比15倍,準確率85%
- 1200字文件,壓縮比20倍,準確率59%
核心發現:壓縮比和準確率的關係不是線性的,而是有一個"甜蜜點"——10倍左右。
論文特別提到:實際準確率比測試結果還要高,因為測試時格式對不上(formatting differences)。
這是首次有人系統地量化vision-text compression的邊界。
三、怎麼做到的?DeepEncoder架構

能做到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官方提供的幾個實際案例:




從這些示例可以看出,DeepSeek-OCR能處理多種型別的文件:複雜佈局、圖文混排、表格、手寫文字等。