Unlimited-OCR 是百度以 DeepSeek-OCR 為基線提出的開源 OCR 模型,核心是 Reference Sliding Window Attention(R-SWA):一組靜態的「參考前綴」(全部視覺與提示 token,全程不變、對所有生成 token 全域可見)加上一個因果滑動窗(預設 128),使解碼過程的 KV cache 全程維持 m+n 恆定、單步成本降為 O(m+n)。論文宣稱在 OmniDocBench v1.5 達 93.23,超越 Qwen3-VL 235B、Gemini-2.5 Pro 與 DeepSeek-OCR,且解碼吞吐不隨輸出變長而下降,單次前向可辨識 40 餘頁;程式碼與權重以 MIT 開源,並指出 R-SWA 可推廣至 ASR、翻譯等長輸出任務。

線性膨脹的老問題:LLM 解碼器做 OCR,輸出越長越慢

把大型語言模型(LLM)當作 OCR 的解碼器,是近期的主流路線之一——以 DeepSeek-OCR 為代表,模型得以借用語言的先驗分布來提升辨識穩定度。代價同樣明確:輸出序列越長,要快取的鍵值(KV cache)就線性累積,記憶體占用與單步生成延遲隨之上升。換句話說,文件越長,模型反而越慢。這和人類形成尷尬對比:人在長篇抄寫時,效率並不會隨字數遞減。百度提出的 Unlimited-OCR,目標正是讓模型模仿這種「解析式工作記憶」,在長輸出時把成本固定下來。

R-SWA:靜態「參考前綴」+因果「滑動窗」

Unlimited-OCR 以 DeepSeek-OCR 為基線,把解碼器所有注意力層換成自研的 Reference Sliding Window Attention(R-SWA)。R-SWA 把每個生成 token 能注意的對象拆成兩段,總寬度為 m+n:第一段是「參考前綴」(大小 m),涵蓋全部視覺 token 與提示 token,只在開始編碼一次、之後全程不變,對後續每一個生成的 token 都維持全域可見;第二段是一個寬度 n(預設 128)的因果滑動窗,只涵蓋最近生成的輸出,新的 token 進入、最舊的被淘汰。

R-SWA 將注意力拆成靜態參考前綴(全部視覺與提示 token,全程不變、全域可見)與一個因果滑動窗(近期輸出、先進先出),使 KV cache 維持 m+n 恆定
圖① R-SWA 的關鍵不是更大的窗口,而是讓視覺證據全程不變、只讓近期輸出滑動。

數學上,標準多頭注意力的 KV cache 隨已生成 token 數 T 線性成長(m+T);R-SWA 的 cache 則被上界固定為 m+min(n,T),實作等同於一個容量 m+n 的佇列,單步注意力成本也從 O(m+T) 降為 O(m+n)。之所以額外保留一塊「靜態前綴」、而不是單純用滑動窗,是因為視覺證據必須全程可見——論文指出,若讓視覺特徵也隨滑動窗淘汰,會出現「漸進模糊」(progressive blurring),這正是泛用滑動窗或線性注意力套用到 OCR 會失分的原因。這條思路與〈Kimi Linear〉把多數層換成線性注意力、卻刻意保留少量全注意力層維持精確比對,屬於同一個「效率不能犧牲關鍵證據」的設計家族。

恆定延遲、93.23 與 40 餘頁:結果怎麼看

效率面的證據最直接:在 Flash Attention v3 的單步計時中,DeepSeek-OCR 的解碼延遲隨步數上升,Unlimited-OCR 則維持平坦。以輸出長度拉長來看,Unlimited-OCR 的吞吐(TPS)在 256 到 6144 token 之間幾乎不掉(約 7230 到 7848),DeepSeek-OCR 則從 7423 一路退到 5823——在 6144 token 處兩者差距約 35%;在 OmniDocBench 上則是 5580 對 4951 TPS。品質面同樣上升:OmniDocBench v1.5 的 Overall 達 93.23,較 DeepSeek-OCR 的 87.01 提升 6.22 分,並超過 Qwen3-VL 235B(89.15)、Gemini-2.5 Pro(88.03)與 dots.ocr(88.41);在更新版的 v1.6 也以 93.92 領先 Qianfan-OCR(4B,93.90)與 DeepSeek-OCR 2(90.25)。

Unlimited-OCR 的解碼吞吐隨輸出長度維持平坦,標準 LLM-OCR 則隨輸出累積下降;OmniDocBench Overall 93.23 超越 Qwen3-VL 235B 與 Gemini-2.5 Pro
圖② 輸出越長,恆定 KV cache 的優勢越明顯——但基準分數與頁數上限仍受 32K 上下文制約。

長文件的能力是另一個亮點:配合 DeepEncoder 把 1024×1024 影像壓成僅 256 個 token(16 倍壓縮),模型能在 32K 上下文內一次處理 2 到 50 頁,論文實測單次前向可辨識 40 餘頁,編輯距離在 2 頁時約 0.036、到 40 餘頁升至約 0.107。把「解碼端不隨長度退化」做到這個程度,和〈SANA-Video 2.0〉用混合線性注意力換取長序列效率、以及〈GigaToken〉在分詞環節擠出端到端成本槓桿,指向同一個結論:長序列的瓶頸往往不在算力,而在隨長度膨脹的狀態與快取。

「Unlimited」的兩個但書

「Unlimited」是行銷語言,論文其實交代了兩條硬限制。其一,R-SWA 固定的是解碼階段的 KV cache,但模型仍受 32K 上下文長度制約——每多一頁,靜態前綴裡的視覺 token 就會累積,最終仍會塞滿上下文,因此在有限上下文下「無法真正做到無上限的解析」。其二,多頁模式採用 DeepEncoder 的 Base 模式(1024×1024),在 40 餘頁時小字會變得難以辨識;論文強調這些誤差來自解析度而非 R-SWA 失去方向。此外,即使前端壓縮率很高,prefill 仍會隨頁數變長,形成另一個瓶頸。論文也列出後續方向:擴展到 128K 上下文、打造一個「prefill pool」讓模型學會主動取用 prefill 的 KV 區塊(模擬人類翻頁),以及把 R-SWA 推廣到 ASR 與翻譯。

開源範圍與更廣的適用性

Unlimited-OCR 的程式碼與權重以 MIT 授權開源在 GitHub(baidu/Unlimited-OCR)與 HuggingFace(baidu/Unlimited-OCR),約 3B 參數、原生 32K 上下文,並提供 transformers、vLLM(專用 Docker 映像)與 SGLang 三種推論後端的部署範例,支援單圖、多頁與 PDF(經 PyMuPDF 以 300 DPI 轉圖)解析。值得留意的是,論文把 R-SWA 定位為「泛用解析注意力」:只要任務的輸出夠長(OCR、ASR、翻譯都屬此類),這套「靜態前綴+滑動窗」的設計就可能適用。看待這組結果有兩點必須保守:分數與頁數都是論文在自家設定下的數字,能否在你的文件類型、解析度與硬體上複現仍待獨立驗證;不過 R-SWA 是可單獨移植的注意力模組、權重與部署範例齊備,重現門檻相對可控。