編輯|張倩、陳陳
DeepSeek OCR 留下的一個問題,好像被人接上了。
昨天,我們在 HuggingFace 上刷到一個新開源模型,直接被驚艷到了。
它叫Unlimited OCR,百度出的
最吸引眼球的地方是,在標(biāo)準(zhǔn)最大上下文長度 32K 的條件下,它讓 OCR 模型第一次能夠一口氣讀完整本書。
注意,這不是逐頁處理,不是 for-loop 式拆任務(wù),也不是靠外部調(diào)度器把結(jié)果拼起來,而是真正意義上的一次前向推理直接完成數(shù)十頁文檔解析。
![]()
更絕的是,它不僅做到了,還做得相當(dāng)好。在文檔解析主流基準(zhǔn) OmniDocBench v1.5 上,Unlimited OCR 以 93.23% 的總分拿下端到端 SOTA,比 DeepSeek OCR 整整高出 6 個百分點。
![]()
看到這里,我們不免好奇:它到底是怎么做到的?于是翻開技術(shù)報告,結(jié)果越看越有意思。
因為 Unlimited OCR 并不是另起爐灶。恰恰相反,它直接構(gòu)建在 DeepSeek OCR 的基礎(chǔ)之上。
原因很簡單:在視覺壓縮這件事上,DeepSeek OCR 已經(jīng)把事情做到相當(dāng)極致。一張 1024×1024 的文檔頁面,經(jīng)過 DeepEncoder 編碼之后,最終只剩下 256 個視覺 token。即使放到今天看,這依然是一個相當(dāng)激進(jìn)的設(shè)計。
但之后,一個問題慢慢浮現(xiàn) —— 如果輸入側(cè)已經(jīng)壓縮得這么狠,為什么此前的 OCR 模型還是很難真正處理長文檔?
答案在解碼端。視覺 token 壓縮之后,模型生成的文本卻不會憑空消失。隨著輸出越來越長,解碼器里的 KV Cache 仍然會不斷增長。輸出越長,顯存占用越高;歷史越長,注意力計算越重;生成速度也會越來越慢。
這也是為什么過去的大多數(shù) OCR 系統(tǒng),最終都會退回到逐頁解析的模式。因為再高效的編碼器,也解決不了解碼階段不斷膨脹的歷史負(fù)擔(dān)。
而 Unlimited OCR 的切入點,恰好落在這里。它沒有重做編碼器,而是把全部精力放在了解碼階段。項目界面上有一句很耐人尋味的話:「push DeepSeek-OCR one step further」。
![]()
看到這里的時候,我們專門回去翻了一遍 DeepSeek OCR,然后發(fā)現(xiàn)兩者關(guān)注的,似乎正好是同一條技術(shù)路線上的兩個不同環(huán)節(jié)。
DeepSeek OCR 解決的是輸入側(cè)的問題 —— 如何把高分辨率文檔壓縮成盡可能少的視覺 token。Unlimited OCR 解決的是輸出側(cè)的問題 —— 如何讓模型在長時間生成過程中,不被不斷膨脹的 KV Cache 拖垮。
一個發(fā)生在編碼端,一個發(fā)生在解碼端。單獨看,兩者各自成立,放在一起看,卻意外地連貫。
更有意思的是,Unlimited OCR 技術(shù)報告對 DeepSeek OCR 的討論頻率相當(dāng)高,整整高達(dá) 40 次。很多地方讀起來完全不像是在做通常意義上的競品對標(biāo),反而更像是在接著思路,繼續(xù)往前推。
至于為什么會給人這種感覺,我們有一個大膽的猜測。
![]()
- 報告標(biāo)題:Unlimited OCR Works
- 報告鏈接:https://huggingface.co/baidu/Unlimited-OCR/blob/main/Unlimited-OCR.pdf
- 項目地址:https://github.com/baidu/Unlimited-OCR
- Hugging Face:https://huggingface.co/baidu/Unlimited-OCR
像人類一樣抄書:Unlimited OCR 解決大模型的長程失憶癥
要理解 Unlimited OCR 的意義,需要先回到傳統(tǒng) OCR 模型處理長文檔的方式。
過去的 OCR 系統(tǒng)處理長文檔,通常采用逐頁解析的方式。模型識別第一頁,結(jié)束;然后識別第二頁,再結(jié)束;整個流程依賴外部程序一頁一頁調(diào)用模型。從模型能力本身看,它并沒有真正連續(xù)地完成一次長程任務(wù)。每一頁都像一次重新開始,上一頁的解析狀態(tài)被清空,模型并不真正知道自己正在完成一本書級別的連續(xù)轉(zhuǎn)寫。
這種 For-loop 范式,本質(zhì)上依賴外部調(diào)度器(External Scheduler)來拼接結(jié)果。這相當(dāng)于把一本完整的書拆成獨立碎片,不僅割裂了語義連貫性,更是一種工程上的權(quán)宜之計(Engineering Workaround),而非邁向 AGI 的路徑。
人類處理長程任務(wù)的方式,顯然更接近另一種模式。
例如,一個人手抄一本書時,注意力并不會平均分配給整本書。你不會一邊寫當(dāng)前這個字,一邊完整回憶前面已經(jīng)抄過的幾百頁內(nèi)容。真實情況通常是:眼睛盯著原始書頁,腦子里記住剛剛寫下的一小段文字,然后把注意力放到下一個要寫的字上。
![]()
受人類抄書過程的啟發(fā),百度提出了 Unlimited OCR。當(dāng)一個人手抄一本書時,注意力通常集中在三個地方:原始書頁、剛剛寫下的一小段內(nèi)容(通常只有幾個字),以及接下來要寫的那個字。
人類之所以能夠連續(xù)抄完整本書、翻譯數(shù)百頁內(nèi)容,或者轉(zhuǎn)錄數(shù)小時音頻,并不是因為大腦完整保存了所有歷史輸出。相反,人并不會完整記住所有已經(jīng)轉(zhuǎn)寫過的內(nèi)容,而是會進(jìn)行一種軟遺忘(Soft Forgetting)。
正是受這一觀察啟發(fā),百度提出了 Unlimited OCR。
Unlimited OCR 以 DeepSeek OCR 作為基線模型。它由 DeepEncoder 和混合專家架構(gòu)(Mixture-of-Experts,MoE)組成,模型總參數(shù)量為 3B,其中激活參數(shù)為 500M,這是其保持高效率的底牌之一。
DeepEncoder 的突出優(yōu)勢在于出色的視覺 token 壓縮能力。它能夠在保留穩(wěn)定光學(xué)文本特征提取能力的同時,大幅降低 prefill 階段的 KV cache 占用。
除了 DeepSeek OCR 編碼器,百度的創(chuàng)新是將標(biāo)準(zhǔn)多頭注意力機(jī)制(MHA)替換為 R-SWA(Reference Sliding Window Attention)。借助這一新的注意力機(jī)制,只需要在原有參考 KV cache 的基礎(chǔ)上,增加一個寬度為 的固定容量輸出 KV 緩沖區(qū),就可以實現(xiàn)長程解析。
R-SWA 如何穩(wěn)住長程解碼?
盡管 DeepEncoder 在輸入側(cè)已經(jīng)實現(xiàn)了令人滿意的視覺 token 壓縮,但一次性解析整本書的真正瓶頸在于解碼階段。
假設(shè)視覺 token 與文本 token 之間的壓縮比為 1:10,也就是說,一個視覺 token 大約可以解碼出 10 個文本 token。那么,1 萬個視覺 token,也就是約等于 1024×1024 分辨率下的 20 到 30 頁文檔,在完整解碼時就需要輸出超過 10 萬個 token。
對普通 LLM 驅(qū)動的 OCR 模型來說,這會帶來兩個問題:
- 第一,KV cache 會不斷增長。每生成一個 token,模型都要把它的 Key 和 Value 存下來,供后面 token 使用。
- 第二,注意力計算會越來越重。越到后面,模型要回看的歷史越長,生成速度也就越慢。
為此,百度提出了參考滑動窗口注意力機(jī)制 R-SWA(Reference Sliding Window Attention),它把模型能看到的信息分成兩部分。
- 第一部分是 Reference tokens,也就是參考信息。在 OCR 里,它主要包括視覺 token 和 prompt。可以把它理解成模型一直放在眼前的原始文檔。
- 第二部分是最近生成的一小段輸出 token,默認(rèn)窗口大小是 128,也就是說,模型只保留最近 128 個輸出 token 作為工作記憶。這恰好模擬了人類「只記得最近剛寫下的幾個字」的認(rèn)知狀態(tài)。
![]()
R-SWA 示意圖。每個生成 token 都會關(guān)注所有參考 token,也就是 OCR 中的視覺 token,以及前面 個輸出 token,其中 默認(rèn)設(shè)為 128。與標(biāo)準(zhǔn)全注意力相比,R-SWA 在整個解碼過程中都能保持恒定的 KV cache。與普通滑動窗口注意力(vanilla SWA)相比,R-SWA 將視覺 token 排除在狀態(tài)轉(zhuǎn)移之外,從而保留視覺 token 的保真度,避免視覺特征在長程過程中逐漸模糊。
因此,R-SWA 的核心邏輯可以概括為:原始文檔始終可見,已經(jīng)輸出過的文本只保留最近一段。
這和人抄書很像,人抄書時,不會一邊寫當(dāng)前這個字,一邊回憶前面幾百頁全部內(nèi)容。真正有用的是:原書還在眼前,剛剛寫過的幾個字還在腦子里,然后繼續(xù)寫下一個字。
這樣一來模型不再需要隨著輸出變長而不斷背負(fù)越來越大的歷史緩存,解碼階段的計算開銷和顯存占用也就不會一路膨脹。下圖直觀展示了這一點: DeepSeek OCR 基線模型和 Unlimited OCR Works(圖中記為 UOW)在 Flash Attention v3 內(nèi)核上的單次調(diào)用耗時。
圖中可以清楚看到,DeepSeek OCR 中的標(biāo)準(zhǔn) MHA 內(nèi)核會隨著解碼步數(shù)增加而產(chǎn)生越來越高的延遲;而在 Unlimited OCR 中,單次調(diào)用耗時基本保持恒定。這正是因為 Unlimited OCR 在 LLM 解碼器的所有層中都采用了 R-SWA。
DeepSeek OCR 中出現(xiàn)的延遲尖峰,是因為 KV cache 長度跨過了某個對齊邊界,導(dǎo)致數(shù)據(jù)傳輸效率突然下降;而采用 R-SWA 后,這個問題也不會出現(xiàn)。
此外,推理過程中的 GPU 顯存使用也會呈現(xiàn)類似趨勢:在原始 DeepSeek OCR 中,顯存占用會線性增長;而在 Unlimited OCR 中,顯存占用保持固定。
計算成本和內(nèi)存占用的雙重穩(wěn)定,正是長程解析得以實現(xiàn)的關(guān)鍵。
![]()
Flash Attention v3 內(nèi)核延遲隨解碼長度增加而變化的情況。
準(zhǔn)確率沒掉,長輸出更穩(wěn),R-SWA 的長程解析跑通了
當(dāng)然,注意力機(jī)制設(shè)計得再巧妙,最終還要實驗來驗證。除了主結(jié)果(前文 table 1),論文還在 OmniDocBench v1.5 的 9 類文檔上做了細(xì)分類別分析,包括 PPT、學(xué)術(shù)論文、書籍、彩色教材、試卷、雜志、報紙、筆記、研究報告等。
細(xì)分類別分析:復(fù)雜版式下也沒有掉隊
如表 2 所示,與 DeepSeek OCR 相比,Unlimited OCR 在所有指標(biāo)上都取得了明顯且一致的提升。與 DeepSeek OCR 2 相比,Unlimited OCR 也保持了明顯優(yōu)勢。
更關(guān)鍵的是,在 PPT、報紙、雜志、筆記這類復(fù)雜版式文檔上,Unlimited OCR 也沒有表現(xiàn)出劣勢。這說明 R-SWA 的效果不是只適用于簡單純文本,而是可以覆蓋更復(fù)雜的文檔解析場景。
![]()
長程解析實驗:一次性處理多頁文檔
長程解析是 Unlimited OCR 的一項新能力。
此前的模型難以實現(xiàn)這一點,主要有兩個障礙:第一,過長的輸出序列很容易超過最大 token 限制;第二,輸出延遲會隨著序列長度增加而上升,導(dǎo)致幾十頁文檔的 OCR 解析越往后越慢。
實驗中,百度構(gòu)建了內(nèi)部長文檔測試集,按頁數(shù)分為 2、5、10、15、20、40+ 頁幾組,測試模型在多頁一次性 OCR 場景下的表現(xiàn)。
結(jié)果顯示,Unlimited OCR 在同時輸入 20 頁時仍能保持較好效果;在 40+ 頁場景下,編輯距離仍低于 0.11,Distinct-35 約為 97%(Distinct-n 可以理解為生成文本中 n-gram 的多樣性指標(biāo),數(shù)值越高,說明模型越不容易陷入重復(fù)輸出)。
![]()
輸出越長,R-SWA 優(yōu)勢越明顯
最后,論文比較了 Unlimited OCR 和 DeepSeek OCR 在不同輸出長度下的 TPS,也就是每秒輸出 token 數(shù)。
結(jié)果顯示,當(dāng)輸出長度為 256 個 token 時,兩個模型的推理速度幾乎相同。但隨著輸出長度增加,DeepSeek OCR 的 TPS 會持續(xù)下降;當(dāng)輸出長度達(dá)到 6000 個 token 時,DeepSeek OCR 的速度已經(jīng)比采用 R-SWA 的 Unlimited OCR 落后 35%。
這和前面 Figure 3 的 kernel latency 結(jié)果是一致的:標(biāo)準(zhǔn) MHA 會隨著 KV cache 變長而越來越慢;R-SWA 將輸出側(cè) KV cache 限制在固定窗口內(nèi),因此解碼開銷不會隨著輸出長度持續(xù)膨脹。
![]()
一個大膽的猜測:百度把 DeepSeek 的研究員挖過來了?
咦?讀完 Unlimited OCR 的技術(shù)報告,怎么有一種似曾相識的感覺。沒錯,它的技術(shù)風(fēng)格、表達(dá)方式,都讓人想起 DeepSeek OCR 的技術(shù)報告。
技術(shù)上自不必說,Unlimited OCR 直接構(gòu)建在 DeepSeek OCR 的基礎(chǔ)之上,對 DeepEncoder 等核心組件進(jìn)行了進(jìn)一步融合。同時,二者之間的這種近乎無縫的銜接,也讓我們感覺,這不像是一次對開源項目的簡單學(xué)習(xí),而更像是在完整理解的基礎(chǔ)上,繼續(xù)向前推進(jìn),讓該技術(shù)順理成章地走入下一個階段。
而在行文風(fēng)格上,Unlimited OCR 報告給人一種故事性極強(qiáng)、想法頗為激進(jìn),同時又帶有強(qiáng)烈探索色彩的感覺。而這種感覺,之前讀 DeepSeek 技術(shù)報告的時候我們也曾領(lǐng)略過。
這就不得不讓人大膽猜想:難道百度把 DeepSeek 的研究員挖過來了?
這也不是不可能。因為前段時間,的確有不少研究員從 DeepSeek 離職,比如 DeepSeek V4 技術(shù)報告里被「*」標(biāo)出來的那些人,有些去向已知,如郭達(dá)雅去了字節(jié)跳動 Seed 團(tuán)隊、王炳宣去了騰訊混元 (Hunyuan) 團(tuán)隊。
但是還有一些人至今去向不明,如 OCR 系列模型作者魏浩然至今未公開披露去向。等等,百度不會把魏浩然挖來了吧?這也不是沒可能,畢竟他在 DeepSeek 期間,是 OCR 系列模型的核心作者。
![]()
此外,在 HuggingFace 主頁,我們還注意到致謝一欄寫著:感謝 Deepseek-OCR、Deepseek-OCR-2。
![]()
雖然,Unlimited OCR 技術(shù)報告沒有明確說明,但有一個署名「YY」的神秘作者。ta 是這份工作的「technical director」,通常來講,這個角色要負(fù)責(zé)技術(shù)路線的整體把關(guān),如果 ta 確實來自 DeepSeek,那么 Unlimited OCR 與 DeepSeek OCR 之間那種無縫銜接感便不再令人意外;同時,Unlimited OCR 技術(shù)報告的措辭也更像是在對自身先前研究進(jìn)行反思與改進(jìn),而非一般意義上的競品對標(biāo)。
![]()
若這一推測屬實,這也算是一場雙向奔赴 —— 畢竟,百度的 PaddleOCR 長期穩(wěn)居行業(yè)榜首,對相關(guān)領(lǐng)域的人才本就有著獨特的吸引力。而如今,百度極有可能正在開辟新的技術(shù)路線,新鮮血液的注入也加速了成果的涌現(xiàn)。
當(dāng)然,這一切都只是猜測。如果有了解這份工作背后故事的朋友,歡迎在評論區(qū)留言分享。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.