DeepSeek-OCR降本增效,10×暴力壓縮還能讀得清
Deepseek-OCR模型發布,給OCR領域帶來了不小的震動。但是,它又不是大家認知的,提升OCR領域的文字識別能力,而是在于通過光學壓縮技術解決長文本處理中的計算效率問題。
換句話就是說,現在大模型token消耗成本隨著輸入的文字增長而增長。如果把需要消耗的token固定在一個可控的范圍內,無論你輸入多少文字,總的計算成本就是可控的。

因此,Deepseek-OCR給我們提供了一個新思考視角:把輸入的文字,全部限定在一張圖片上,來達到控制大模型消化token的成本問題。 可以看出,從deepseek誕生之日起,就一直在做控制成本、降低資源消耗的事情,讓AI技術能夠被以低成本的方式推廣到更多的人應用。
一、首先回顧一下典型視覺編碼器的局限性

現有的 VLMs 主要采用以下三種類型的視覺編碼器:
- 雙塔架構:
例如 Vary,通過并行 SAM 編碼器增加視覺詞匯參數,適用于高分辨率圖像處理。
但這種架構需要雙重圖像預處理,增加了部署復雜度,并且在訓練時難以實現編碼器的流水線并行化。
- 瓦片方法:
例如 InternVL2.0,通過將圖像分割成小瓦片進行并行計算,降低高分辨率下的激活內存。
但這種方法的原生分辨率較低(通常低于 512×512),導致大圖像被過度分割,產生大量token。
- 自適應分辨率編碼:
例如 Qwen2-VL,采用 NaViT 范式直接處理完整圖像,通過基于塊的分割避免瓦片并行化。
雖然這種方法能夠靈活處理多種分辨率,但在處理大圖像時會消耗大量激活內存,甚至導致 GPU 內存溢出,訓練時需要極長的序列長度。
二、 Deepseek-OCR的架構設計

DeepSeek-OCR 的整體架構包括一個編碼器(DeepEncoder)和一個解碼器(DeepSeek3B-MoE-A570M)。 編碼器負責從圖像中提取特征并進行令牌化和壓縮,解碼器則基于這些token和提示生成所需的文本輸出。
2.1 DeepEncoder
DeepEncoder 是 DeepSeek-OCR 的核心組件,主要由兩部分組成:
- 以窗口注意力為主的視覺感知特征提取組件
- 以全局注意力為主的視覺知識特征提取組件。
為了充分利用現有預訓練成果,研究者們采用了 SAM-base(80M 參數)和 CLIP-large(300M 參數)作為這兩部分的主要架構。
- 窗口注意力組件:負責處理高分辨率輸入下的局部特征,通過窗口注意力機制高效處理大量token。
- 全局注意力組件:負責處理全局特征,通過全局注意力機制提取圖像的整體語義信息。
- 16× 壓縮模塊:在兩個組件之間,通過兩層卷積模塊實現 16× 的token壓縮,有效降低了激活內存。
2.2 多分辨率支持

為了支持不同分辨率下的token數量需求,DeepEncoder 設計了多種分辨率模式,包括原生分辨率模式(Tiny、Small、Base、Large)和動態分辨率模式(Gundam、Gundam-M)。 這些模式通過動態插值位置編碼實現,使得單個模型能夠支持多種分辨率輸入。
2.3 DeepSeek3B-MoE 解碼器
解碼器采用 DeepSeek3B-MoE 架構,激活參數量為 570M。在推理過程中,模型激活 64 個專家中的 6 個以及 2 個共享專家,實現高效的文本重建。解碼器將壓縮后的token重新轉換為文本表示,通過非線性映射函數實現這一過程。
三、數據引擎

為了訓練 DeepSeek-OCR,研究者們構建了豐富多樣的訓練數據集,涵蓋 OCR 1.0 數據、OCR 2.0 數據、通用視覺數據和純文本數據。
- OCR 1.0 數據:主要包括傳統 OCR 任務,如場景圖像 OCR 和文檔 OCR。數據集包含從互聯網收集的 3000 萬頁 PDF 數據,覆蓋約 100 種語言。
- OCR 2.0 數據:主要包括復雜人工圖像的解析任務,如圖表、化學公式和平面幾何圖形的解析。
- 通用視覺數據:用于注入一般圖像理解能力,幫助模型更好地處理通用視覺任務。
在訓練階段使用了 20% 的通用視覺數據(如圖像描述、目標檢測和定位等任務的數據)
在訓練階段引入這些通用視覺數據,DeepSeek-OCR 能夠學習到圖像的基本特征和語義信息,從而在處理圖像相關的任務時表現出更好的性能
- 純文本數據:占總數據量的 10%,確保模型具備良好的語言能力。
- 多語言數據處理:DeepSeek-OCR 采用了兩種標注方式:粗標注(coarse annotations)和細標注(fine annotations)。
粗標注:通過直接從完整數據集中提取文本內容來完成,這種方式主要教模型如何識別光學文本,尤其是一些少數民族語言
細標注:包括 200 萬頁的中文和英語數據,這些數據使用先進的布局模型(如 PP-DocLayout)和 OCR 模型(如 MinuerU、 GOT-OCR2.0)進行標注
3.3 訓練流程
DeepSeek-OCR 的訓練分為兩個階段:獨立訓練 DeepEncoder 和訓練整個 DeepSeek-OCR 模型。
- 訓練 DeepEncoder:使用 2 個 epoch、1280 的批量大小,采用 AdamW 優化器和余弦退火調度器,學習率為 5e-5,訓練序列長度為 4096。
- 訓練 DeepSeek-OCR:使用 20 個節點(每個節點配備 8 個 A100-40G GPU),采用管道并行策略,將模型分為 4 個部分進行訓練。整個模型使用 AdamW 優化器和基于步長的調度器,初始學習率為 3e-5。

DeepSeek-OCR 使用較少的token數量就超越了現有模型:
- 使用 100 個token(640×640 分辨率),DeepSeek-OCR 超越了 GOT-OCR2.0(256 個token)
- 使用 400 個token(1280×1280 分辨率),DeepSeek-OCR 與現有最先進模型持平。
- 使用 800 個token(Gundam 模式),DeepSeek-OCR 超越了 MinerU2.0(平均 6000+ 個token)
本文轉載自??CourseAI??,作者:CourseAI

















