Baidu Unlimited-OCR: One-Shot Long-Horizon Parsing

Baidu Unlimited-OCR: One-Shot Long-Horizon Parsing

Baidu 推出了 Unlimited-OCR,這是一個專為「一次性長程解析」設計的模型。該系統能夠在單次處理中轉錄大量文件(例如多頁 PDF),而不會發生處理視覺語言模型 (VLMs) 長序列時常見的記憶體崩潰問題。

使用參考滑動窗口注意力機制解決 VRAM 瓶頸

Unlimited-OCR 解決了長文件 OCR 的主要技術障礙:KV (Key-Value) 快取的線性增長。在標準的 transformer 架構中,當模型轉錄一份 100 頁的 PDF 時,它會嘗試記住之前生成的每一個字,導致記憶體使用量呈 $O(N)$ 增長,直到系統耗盡 VRAM。

為了達成此目標,Unlimited-OCR 實作了 Reference Sliding Window Attention (R-SWA)。這種架構方法將模型的注意力分為兩個不同的路徑:

  • Global Reference: 模型維持對原始文件圖像的完整且未受損的視圖,確保它永遠不會丟失來源材料的視覺上下文。
  • Local Generation: 模型將其對自身生成文本的記憶限制在一個緊湊的移動窗口內(例如,最後 128 個字)。它會安全地「忘記」較舊的生成文本,從而防止 KV 快取無限擴張。

這種機制允許模型處理幾乎不受限的文件長度,同時保持準確轉錄所需的視覺定位能力。

實作與推理選項

Unlimited-OCR 是基於 DeepSeek-OCR 和 PaddleOCR 的基礎之上構建的。它提供了兩種主要的部署與推理方法:

Transformers-based Inference

對於使用 NVIDIA GPU 的用戶,可以使用 Hugging Face 的 transformers 函式庫來運行該模型。環境需要 Python 3.12.3 和 CUDA 12.9。關鍵依賴項包括 torch==2.10.0transformers==4.57.1

該模型針對單張圖像支持兩種配置模式:

  1. Gundam Mode: 為特定佈局進行優化 (base_size=1024, image_size=640, crop_mode=True)。
  2. Base Mode: 標準解析 (base_size=1024, image_size=1024, crop_mode=False)。

SGLang Server Deployment

對於高吞吐量的生產環境,Unlimited-OCR 支持 SGLang。這允許模型透過 OpenAI 相容的 API 進行服務。伺服器可以搭配自定義的 logit processor (DeepseekOCRNoRepeatNGramLogitProcessor) 啟動,以管理重複並提升輸出品質。

技術要求與能力

  • Input Formats: 模型支持單張圖像、多圖序列以及 PDF(在處理前會透過 PyMuPDF 將其轉換為圖像)。
  • Context Length: 系統配置的上下文長度為 32,768 tokens。
  • Batch Processing: infer.py 腳本支持圖像目錄或 PDF 文件的併發請求,從而實現可擴展的批次推理。

社群洞察與觀點

雖然技術上的記憶體管理方法受到讚賞,但社群對於 AI 驅動的 OCR 實際應用提出了幾點關鍵觀點:

"My attempts at using AI to do OCR have always resulted in invented artifacts, which is not production feasible... words that are supposed to be in other languages being automatically translated to English, which ruins the effect."

其他用戶指出,雖然文本 OCR 正在進步,但其他專業領域仍未得到充分服務。一位用戶強調,Optical Music Recognition (OMR) 仍處於「綠地」狀態,因為目前的 AI 模型在處理音樂符號的複雜性質以及缺乏足夠豐富的訓練語料庫的標準化數位格式(如 MusicXML)方面仍有困難。

此外,一些用戶質疑重新發明 OCR 引擎本身的必要性,認為傳統的視覺模型已經非常穩定且可靠,並建議這些新模型的真正價值在於後處理與數據提取,而非原始轉錄過程。

Sources