視覚的圧縮に基づいた効率的なOCRモデルで、ドキュメント画像をMarkdown形式に変換し、多解像度と多言語認識をサポートします。

MITPythonDeepSeek-OCRdeepseek-ai 17.7k Last Updated: October 25, 2025

DeepSeek-OCR プロジェクト詳細紹介

プロジェクト概要

DeepSeek-OCR は、DeepSeek AI チームによって開発された革新的なオープンソース光学文字認識(OCR)モデルであり、視覚テキスト圧縮の限界を探求することに焦点を当てています。このプロジェクトは、大規模言語モデル(LLM)を中心とした視点からビジョンエンコーダーの役割を研究し、視覚的知覚を情報圧縮媒体として利用することで、大規模で複雑なドキュメントをはるかに少ないトークンで処理することを可能にします。

主要な特徴

  • 高効率圧縮: 7〜20倍のトークン圧縮率を実現し、10倍圧縮時でも約97%のデコード精度を維持
  • 多解像度対応: 512×512から1280×1280までの複数のネイティブ解像度をサポート
  • 高性能処理: 1つのA100-40G GPUで1日あたり20万ページ以上の学習データを生成可能
  • 多言語対応: 約100言語のテキスト認識をサポート
  • 多機能性: テキスト抽出だけでなく、図表、化学分子式、単純なグラフィックも理解

技術アーキテクチャ

モデル構成

DeepSeek-OCR は、2つのコアコンポーネントで構成されています。

  1. DeepEncoder(ビジョンエンコーダー)

    • パラメータ数: 約3.8億
    • アーキテクチャ構成:
      • SAM-ViTDet(Metaの8000万パラメータセグメンテーションモデル)を局所的な画像認識に使用
      • 2層の畳み込み圧縮器により、16倍のトークンダウンサンプリングを実現
      • CLIP ViT-300M(OpenAIの3億パラメータモデル)をグローバルな視覚知識集約に使用
  2. DeepSeek3B-MoE デコーダー

    • アクティブパラメータ数: 約5.7億
    • 総パラメータ数: 3B(混合エキスパートモデルアーキテクチャ)
    • 機能: 画像トークンとプロンプト情報に基づいて結果を生成

動作原理

  1. 画像処理フロー:

    • 1024×1024ピクセルの画像は初期に4096個のトークンを生成
    • SAMモジュールがウィンドウアテンション処理を実行
    • 圧縮器がトークンを256個に削減(16倍圧縮)
    • CLIPモジュールがグローバルアテンション処理を実行
    • 最終的に圧縮されたビジョントークンを出力
  2. 解像度モード:

    • ネイティブ解像度モード:

      • Tiny: 512×512(64ビジョントークン)
      • Small: 640×640(100ビジョントークン)
      • Base: 1024×1024(256ビジョントークン)
      • Large: 1280×1280(400ビジョントークン)
    • 動的解像度モード:

      • Gundam: n×640×640 + 1×1024×1024(グローバルとローカルの視野を組み合わせる)

性能表現

ベンチマークテスト結果

  • Fox ベンチマーク: 10倍圧縮率で、デコード精度が約97%に達する
  • OmniDocBench ベンチマーク:
    • わずか100個のビジョントークンでGOT-OCR2.0(256トークン/ページ)を上回る
    • 800個未満のビジョントークンでMinerU2.0(平均6000トークン/ページ以上)を上回る

学習と推論性能

  • 学習速度:
    • 純粋なテキストデータ: 1日あたり90Bトークン
    • マルチモーダルデータ: 1日あたり70Bトークン
  • プロダクション性能: 1つのA100-40Gノードで1日あたり20万ページ以上を処理可能
  • 並行処理性能: PDF処理 約2500トークン/秒(A100-40G)

応用シナリオ

主要機能

DeepSeek-OCR は、複数のプロンプトモードをサポートしています。

# ドキュメントをMarkdownに変換
prompt = "<image>\n<|grounding|>Convert the document to markdown."

# 汎用OCR
prompt = "<image>\n<|grounding|>OCR this image."

# フリーOCR(レイアウトなし)
prompt = "<image>\nFree OCR."

# 図表解析
prompt = "<image>\nParse the figure."

# 詳細な画像記述
prompt = "<image>\nDescribe this image in detail."

# テキスト位置特定
prompt = "<image>\nLocate <|ref|>xxxx<|/ref|> in the image."

実際の応用

  1. ドキュメントのデジタル化: 学術論文、書籍、レポートなどのドキュメントを効率的に処理
  2. データセット生成: 大規模言語モデルやビジョン言語モデル向けに大量の学習データを生成
  3. チャットボットのコンテキスト圧縮: 解像度を下げて古い会話履歴を保存(人間の記憶の減衰に類似)
  4. 構造化データ抽出:
    • 財務図表を構造化データに変換
    • Markdown形式のテーブルやグラフィックを自動生成
    • 化学分子式(SMILES形式)の認識をサポート

インストールと使用

環境要件

  • Python 3.12.9
  • CUDA 11.8
  • PyTorch 2.6.0
  • Transformers 4.46.3

インストール手順

# リポジトリをクローン
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd DeepSeek-OCR

# Conda環境を作成
conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr

# 依存関係をインストール
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
pip install -r requirements.txt
pip install flash-attn==2.7.3 --no-build-isolation

使用例

方法1: Transformersを使用

from transformers import AutoModel, AutoTokenizer
import torch
import os

os.environ["CUDA_VISIBLE_DEVICES"] = '0'

model_name = 'deepseek-ai/DeepSeek-OCR'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(
    model_name, 
    _attn_implementation='flash_attention_2', 
    trust_remote_code=True, 
    use_safetensors=True
)
model = model.eval().cuda().to(torch.bfloat16)

# 推論パラメータを設定
prompt = "<image>\n<|grounding|>Convert the document to markdown."
image_file = 'your_image.jpg'
output_path = 'your/output/dir'

# 推論を実行
res = model.infer(
    tokenizer, 
    prompt=prompt, 
    image_file=image_file, 
    output_path=output_path, 
    base_size=1024, 
    image_size=640, 
    crop_mode=True, 
    save_results=True, 
    test_compress=True
)

方法2: vLLMを使用(高性能推論)

# 設定ファイルを変更
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
# config.pyを編集してINPUT_PATH/OUTPUT_PATHを設定

# 画像OCRを実行(ストリーミング出力)
python run_dpsk_ocr_image.py

# PDF OCRを実行(高並行処理)
python run_dpsk_ocr_pdf.py

# バッチ評価
python run_dpsk_ocr_eval_batch.py

技術革新

視覚テキスト圧縮パラダイム

DeepSeek-OCR は、新しい視覚テキスト圧縮パラダイムを提案しています。

  • 核心思想: テキストを画像に変換し、ビジョンエンコーダーで処理することで、意味をテキストトークン形式で保存しない
  • 利点:
    • 少ないメモリ使用量: ビジョントークンはよりコンパクト
    • 速い推論速度: トークンが少ない = 計算量が少ない
    • 自然な忘却メカニズム: 古いコンテキストはダウンサンプリング可能
    • より容易なマルチモーダル融合: モデルはすでにテキストを画像として扱っている

従来のOCRとの違い

従来のOCRはパイプライン型アーキテクチャ(検出 → 認識 → 後処理)を採用していますが、DeepSeek-OCR はエンドツーエンドのビジョン言語モデルアーキテクチャを採用しており、OCRシステムを根本的に簡素化しています。

リソースリンク

謝辞

DeepSeek-OCR プロジェクトは、以下のオープンソースプロジェクトの貢献に感謝します。

  • Vary
  • GOT-OCR2.0
  • MinerU
  • PaddleOCR
  • OneChart
  • Slow Perception

およびベンチマークデータセット: Fox と OmniDocBench。

まとめ

DeepSeek-OCR は、OCR技術における大きな革新を象徴しており、視覚圧縮パラダイムを通じて大規模言語モデルの長文コンテキスト処理の課題を解決します。その高効率なトークン圧縮能力(7〜20倍)、優れた精度(10倍圧縮時97%精度)、そして強力な処理能力(単一GPUで1日20万ページ処理)は、ドキュメントのデジタル化、AI学習データ生成、マルチモーダルアプリケーションにとって理想的な選択肢となります。

このプロジェクトのオープンソース性とその包括的なドキュメントは、様々なアプリケーションシナリオへの統合を容易にし、研究者や開発者が視覚テキスト圧縮の限界を探求するための強力なツールを提供します。

Star History Chart