

私たちは、570M のアクティブなデコーダーパラメータ(トークンあたり)を持つ、3.4B パラメータのドキュメントパーサーである jina-ocr-v1 をリリースします。本モデルは OmniDocBench v1.6 で 91.14、olmOCR-Bench で 83.4 というスコアを記録し、測定した 14 のシステムの中で最も高い 毎秒 2.57 ページ というページ処理スループットを達成しました。NVIDIA L4 上では、その推論(スペキュレーティブ)デコーディングヘッドにより、デコーディングの損失なしにデコーディング速度をほぼ 2 倍に向上させます。
このモデルは DeepSeek-OCR の圧縮ビジョンエンコーダーと Mixture-of-Experts(MoE)デコーダーをベースに、2 つの要素を追加しています。FastMTP ドラフトヘッドは 1 つのブロックを 3 つの予測ステップにわたって再帰的に適用するため、ドラフトパラメータは深さが増しても増加しません。ポストトレーニングは高密度で検証可能な報酬の下で行われ、すべてのチェックはリファレンスに対する決定論的なコードであり、各チェックが評価されます。このバックボーンにより、ポストトレーニングによって olmOCR-Bench で 7.4 ポイントの向上が見られ、OmniDocBench のすべての列で改善が達成されました。


tagモデルとトレーニング
長い出力は、ドキュメント解析のデコードコストを押し上げる要因です。DeepSeek-OCR は圧縮されたビジョンエンコーダーとコンパクトな MoE デコーダーでそのコストの大半を取り除きました。jina-ocr-v1 はこれらを引き継ぎ、残された自己回帰のボトルネックに対処します。

OCR の出力はほぼ決定論的であり、局所的に構造化されているため、推論(スペキュレーティブ)デコーディングに適したワークロードです。通常、この構成では予測の深さごとにドラフトヘッドを配置するため、モデルが先読みする距離に応じてドラフトパラメータが増加します。FastMTP は 1 つの密なブロックを K = 3 ステップにわたって再帰的に適用します。検証器は各提案を欲張り法(Greedy)でチェックし、ドラフトと検証器が一致する最長のプレフィックスを受け入れるため、確定したシーケンスは検証器の欲張りシーケンスと等しくなり、推論は出力時間の短縮のみに寄与します。
| コンポーネント | 仕様 |
|---|---|
| ビジョンエンコーダー | DeepEncoder (~380M): SAM (80M) → 16x conv → CLIP-L (300M) |
| ビジョントークン | 256 @ 1024x1024 (Base); 256+100n, n ≤ 9 (Gundam, ≤ 1,156/page) |
| デコーダー | DeepSeek-3B-MoE: 12 層, d = 1280, 64 ルーティング + 2 共有, top-6 |
| アクティブ / 総パラメータ数 | ~570M / ~3B (デコーダー); < 1B / ~3.4B (モデル全体) |
| 語彙数 | 129,280 |
| 位置制限 | 32,768 (RoPE, θ = 106) |
| MTP ヘッド | 1 共有密ブロック, 再帰的 K = 3 ステップ (FastMTP) |
モデル仕様。デコーダーは Markdown を出力し、テーブルは HTML、数式は LaTeX で記述されます。
トレーニングデータは、olmOCR-mix、FinePDFs、LightOnOCR、MMTab、UniMER などの公開 OCR コーパスに加え、Europeana の新聞、米国議会図書館の記録、NARA の年金記録といった意図的に困難なソースを利用しています。ルールベースのフィルターで退化したループや重複を除去し、ビジョン言語モデルによるパスで困難なソースに再ラベル付けを行いました。また、特定の理由でページを合成しています。自然なページでは数式やテーブルの報酬項が適用されるサンプルが非常に少ないため、ほとんどのロールアウトで構造的なシグナルが得られないからです。JinaOCRSynth は、各ページに採点可能な数式とテーブルを詰め込み、それらに付随するユニットテストも同梱しています。
ポストトレーニングでは、教師ありアライメント、劣化したページに対する堅牢性のファインチューニング、および GRPO を実行し、アウターループの各ラウンドで繰り返します。GRPO の報酬は、リファレンスのトランスクリプションに対して決定論的なコードによって計算された検証可能な項の積です。
| コンポーネント | シグナル | 役割 |
|---|---|---|
| コンテンツ | 混合 LaTeX/HTML 上の正規化編集距離 | テキストの忠実度 |
| 数式 | 数式文字列マッチング | 数式の正確さ |
| テーブル | TEDS, TEDS-S, テーブル編集距離 | 構造の復元 |
| 構造的妥当性 | 括弧のバランス、タグの閉じ、テーブルの整合性 | 整形式 |
| ユニットテスト | olmOCR 形式の存在チェック、順序、数学およびテーブルテストの合格率 | 高密度フィードバック |
| 繰り返しと形式 | 繰り返しペナルティ、HTML 適合性 | 退化の抑制 |
乗法的な報酬構成。ほとんどの項には下限があります。積を使用する場合、1 つのチェックの失敗が、それ以外は正しいページから勾配を取り除いてしまう可能性があるためです。繰り返し項には下限はありません。退化ループはコンテンツスコアを最も不当に引き上げる障害モードであるためです。
各ラウンドで候補チェックポイントのプールが残ります。エージェントは固定された評価予算の下でマージ設定を検索し、ユニットテストと編集距離チェックでスコアを付けます。選択されたマージでのエラーが次の収集ラウンドを決定します。ドラフトヘッドは、ループが選択した検証器に対して最後に適合させられます。
tag結果
| モデル | パラメータ数 | ArXiv | OldScans-Math | Tables | OldScans | Multi-col | LongTiny | Hdr/Ftr | Base | 全体 |
|---|---|---|---|---|---|---|---|---|---|---|
| Gemini 3 Flash | – | 80.1 | 73.6 | 64.6 | 45.8 | 75.3 | 90.3 | 27.4 | – | – |
| Qwen3-VL-235B | 235B/22B | 88.4 | 81.2 | 86.7 | 49.6 | 85.9 | 88.9 | 33.6 | – | – |
| DeepSeek-OCR | 3B/570M | 77.5 | 74.5 | 77.3 | 33.1 | 67.3 | 83.0 | 96.1 | 99.3 | 76.0 |
| dots.mocr | 3B | 85.9 | 85.5 | 90.7 | 48.2 | 85.3 | 81.6 | 94.0 | 99.7 | 83.9 |
| olmOCR-2 | 8B | 82.9 | 82.1 | 84.3 | 48.3 | 84.3 | 81.4 | – | 99.7 | 82.4 |
| LightOnOCR-2 | 1B | 89.6 | 85.6 | 89.0 | 42.2 | 84.8 | 91.4 | 19.7 | 99.6 | 83.2 |
| chandra-ocr-2 | 4B | 86.9 | 89.1 | 92.1 | 51.1 | 82.1 | 93.7 | 91.4 | 99.9 | 85.8 |
| jina-ocr-v1 | 3B/570M | 86.1 | 82.3 | 88.8 | 42.6 | 85.5 | 93.2 | 88.7 | 99.9 | 83.4 |
olmOCR-Bench において、jina-ocr-v1 は全体スコア 83.4 を達成しました。これはベースとなった DeepSeek-OCR よりも 7.4 ポイント高く、8B パラメータの olmOCR-2 をも上回っています。Hdr/Ftr カラムはテキストの不在をテストし、ヘッダーやフッターの省略を評価するため、ページ全体の忠実な書き起こしを行うシステムでは低スコアとなります。
| 手法 | パラメータ数 | 全体 ↑ | TextEdit ↓ | FormulaCDM ↑ | TableTEDS ↑ | TableTEDS-S ↑ | ROEdit ↓ |
|---|---|---|---|---|---|---|---|
| Gemini 3 Flash | – | 92.62 | 0.066 | 95.16 | 89.29 | 93.51 | 0.172 |
| Qwen3-VL-235B | 235B/22B | 89.78 | 0.063 | 92.55 | 83.07 | 86.75 | 0.166 |
| DeepSeek-OCR-2 | 3B/570M | 90.25 | 0.050 | 91.84 | 83.89 | 87.75 | 0.144 |
| HunyuanOCR-1.5 | 1B | 94.74 | 0.039 | 94.50 | 93.67 | 94.71 | 0.129 |
| PaddleOCR-VL-1.6 | 0.9B | 96.34 | 0.033 | 97.53 | 94.76 | 97.10 | 0.128 |
| jina-ocr-v1 | 3B/570M | 91.14 | 0.046 | 93.28 | 84.68 | 89.01 | 0.142 |
OmniDocBench v1.6 において、jina-ocr-v1 は 570M のアクティブパラメータ数で 91.14 を達成し、すべての項目で DeepSeek-OCR-2 を上回ったほか、はるかに大規模な Qwen3-VL-235B をも凌駕しました。
tagL4 GPU での投機的デコード
| モード | k | 出力 詞元/s ↑ | 高速化 S ↑ | 受け入れ率 | τ | c ↓ |
|---|---|---|---|---|---|---|
| Eager | 0 | 42.7 | 1.00x | – | – | 1.00 |
| Eager | 1 | 64.0 | 1.50x | 82.6% | 1.83 | 1.22 |
| Eager | 2 | 77.9 | 1.82x | 69.1% | 2.38 | 1.30 |
| Eager | 3 | 83.1 | 1.95x | 57.6% | 2.73 | 1.40 |
| Graph | 0 | 158.3 | 1.00x | – | – | 1.00 |
| Graph | 1 | 185.6 | 1.17x | 82.9% | 1.83 | 1.56 |
| Graph | 2 | 183.8 | 1.16x | 69.3% | 2.38 | 2.05 |
| Graph | 3 | 172.9 | 1.09x | 57.9% | 2.74 | 2.51 |
FastMTP(olmOCR-Bench、NVIDIA L4、vLLM 0.20.1、バッチサイズ 1)での測定結果。τ はボーナス詞元を含む投機的ステップごとに確定した平均詞元数、c = τ/S は自己回帰ステップ 1 回分を単位とした投機的ステップ 1 回分のコストです。上記図とは異なるデバイスで測定されました。
k = 3 の場合、τ は Eager モードで 2.73、CUDA グラフ下で 2.74 となり、ドラフト品質は実行モードに依存しません。ベースラインは依存します。CUDA グラフを使用すると自己回帰デコードは 42.7 から 158.3 詞元/秒へと向上しますが、投機的ステップのオーバーヘッドは約 9 ms のままであるため、そのコストは自己回帰ステップ 1.40 回分から 2.51 回分へと上昇します。このゲインは置き換え対象となる検証ステップのコストに追随するため、Eager モードでは k = 3、グラフモードでは k = 1 が最適な深さとなります。
tagはじめに
最も素早く実行する方法は Jina Reader を使うことです。r.jina.ai に URL を指定し、ヘッダーを 1 つ追加するだけで、Reader がページや PDF を取得・レンダリングし、その結果に対して jina-ocr-v1 を実行して Markdown を返します。デプロイの必要はなく、画像処理の実装も不要で、プラットフォームの他の機能と同じ API キーがそのまま利用可能です。
curl "https://r.jina.ai/https://example.com/document.pdf" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "X-Respond-With: jina-ocr-v1"X-Page を追加すれば、複数ページのドキュメントから 1 ページを書き起こせます。両方のパラメータは Reader API エディターにあり、トグルを切り替えるだけでヘッダーが自動的に作成されます。
モデルへの直接アクセスには、OpenAI 互換のホスト型エンドポイントをご利用ください。jina.ai で取得した API キーのみが必要です。
curl https://api.jina.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ***" \
-d '{
"model": "jina-ocr-v1",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the provided document image into a clean Markdown format, preserving the natural reading order."},
{"type": "image_url", "image_url": {"url": "https://example.com/document.png"}}
]
}]
}'
ご自身でサービングする場合は、重みとカスタムモデリングコードが 1 つの Hugging Face リポジトリに格納されています。trust_remote_code=True でロードしてください。FastMTP には vLLM 0.21 以降と、エンジン起動前の 1 回限りのアーキテクチャ登録が必要です。
import sys
from huggingface_hub import snapshot_download
from PIL import Image
from vllm import LLM
sys.path.insert(0, snapshot_download('jinaai/jina-ocr-v1'))
from deepseek_ocr_mtp import DEFAULT_OCR_PROMPT, register, vllm_llm_kwargs, vllm_sampling_params
register()
llm = LLM(**vllm_llm_kwargs('jinaai/jina-ocr-v1',
num_speculative_tokens=3,
mtp_heads=1,
mtp_recursive=True))
image = Image.open('document.png').convert('RGB')
outputs = llm.chat(
[{'role': 'user', 'content': [{'type': 'image_pil', 'image_pil': image},
{'type': 'text', 'text': DEFAULT_OCR_PROMPT}]}],
sampling_params=vllm_sampling_params(max_tokens=4096),
)
print(outputs[0].outputs[0].text)
高速化を実現するには 1 つのポイントがあります。ヘルパーは method="eagle" でヘッドを登録します。FastMTP は再帰的な隠れ状態フィードバックで学習されており、デフォルトの method="mtp" はドラフトステップごとにターゲットに対して再グラウンディングを行うためです。Transformers のパスでは MoE デコーダーのみが実行され、MTP の重みは無視されます。
本モデルは、表や数式の要素レベルの書き起こし、キャプション作成、ドキュメント VQA(視覚的質問応答)、重要情報抽出にも英語および中国語で対応しています。重みは CC BY-NC 4.0 ライセンスで公開されています。
tag結論
jina-ocr-v1 は 570M のアクティブパラメータ数で両ベンチマークの精度・パラメータ効率の境界線を維持しており、測定したシステムの中で最高のページ処理スループットを誇ります。これを実現しているのは、より大規模なモデルを必要としない 2 つのレバーです。それは、検証可能なチェックに対する段階的な報酬と、最終的な検証器に対して学習されたドラフトヘッドです。
出力の長さも検討に値します。詞元スループットとページスループットではシステムの順位付けが異なり、出力の長さは解析品質から独立しているため、簡潔さはそれ自体で最適化が可能です。jina-ocr-v1 は、83 を超えるスコアを持つすべてのシステムの中で最も短い出力を提供します。






