Model reference · open weights

jina-ocr

Available as managed deployment Licence fee LLMs jinaai Vision + text 1 variants 595 dl/mo

jina-ocr is an open-weight language model from jinaai. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Released byjinaai
TypeLanguage models
TaskVision + text
Parameters (lead)3.4B
Context32k tokens
Runs withtransformers
Released2026-09-01
Popularity595 downloads / month
LicenceCommercial licence needed

About

What jina-ocr is

Blog | Reader | Playground | AWS | Azure | GCP | Arxiv

jina-ocr-v1 is an end-to-end document parsing model designed for high-quality OCR at an efficient serving point. The model builds on DeepSeek-OCR and inherits two of its efficiency-oriented components: a DeepEncoder vision tower that represents a 1024×1024 global view with 256 visual tokens and augments it with dynamic local tiles, and a 3B-parameter mixture-of-experts decoder with approximately 570M active parameters per token. On top of this backbone, we add a FastMTP speculative decoding head that recursively shares one dense draft block across K=3 prediction steps. Greedy verification accepts the longest token-equality prefix, preserving the verifier’s greedy output sequence by construction.

Read the full model card

This repository ships the model weights and the custom code needed to load them (trust_remote_code=True). There is no separate training or serving package to install. Transformers uses the modeling files in this snapshot; vLLM needs a one-time architecture registration from deepseek_ocr_mtp.py (see Using vLLM). A single script covers both backends: example.py.

BackboneDeepSeek-OCR (DeepEncoder + 3B MoE, ~570M active)
AccelerationFastMTP, one dense draft head, K=3 (vLLM only)
OmniDocBench v1.691.14 overall
olmOCR-Bench83.4 overall (+7.4 vs DeepSeek-OCR)
Throughput2.57 pages/s on olmOCR-Bench (A100, concurrency 32)
Local runexample.py — Transformers or vLLM
HostedJina Reader, OpenAI-compatible chat/completions, or Playground
python example.py --backend transformers --image document.png
python example.py --backend vllm --image document.png

Performance

At the default dynamic-resolution setting, jina-ocr-v1 scores 91.14 on OmniDocBench v1.6 and 83.4 on olmOCR-Bench, and has the highest page throughput of the fourteen systems we measured: 2.57 pages/s. Post-training adds 7.4 points on olmOCR-Bench over the DeepSeek-OCR backbone. On an NVIDIA L4, FastMTP nearly doubles decoding speed over greedy autoregressive decoding. Scores below use the eval prompt.

Three axes that determine deployment cost. (a) Pixels per visual token, log scale. DeepEncoder maps a 1024×1024 view from 4,096 patches to 256 tokens (3,887 pixels per visual token vs 783–1,022 for 28–32 px patch encoders). (b) Page throughput on olmOCR-Bench, one A100, concurrency 32. (c) Benchmark overall vs active parameters (log scale); the solid line joins Pareto-optimal systems. jina-ocr-v1 sits on both frontiers at 570M active parameters.

The same fourteen systems on olmOCR-Bench (one A100, concurrency 32), ranked by (a) output tokens/s, (b) output tokens/page, and (c) pages/s. Surya OCR 2 leads on tokens/s (3,760) but emits 3,568 tokens/page and finishes 1.05 pages/s. jina-ocr-v1 combines 2,792 tokens/s with 1,085 tokens/page and reaches 2.57 pages/s — the shortest outputs of any system scoring above 83.

Per-category breakdowns on olmOCR-Bench and OmniDocBench v1.6, FastMTP measurements on L4, and the full comparison set are in the technical report and the blog.

Prompt

Recommended default:

Transcribe the provided document image into a clean Markdown format, preserving the natural reading order.

The OmniDocBench and OlmOCR Bench scores on this card were measured with a stricter instruction (LaTeX math, HTML tables, drop headers/footers and figures):

Just return the plain text representation of this document as if you were reading it naturally.
Turn equations and math symbols into a LaTeX representation, make sure to use $ and $ as a delimiter for inline math, and $$ and $$ for block math. Do NOT use ascii or unicode math symbols such as ∈ ∉ ⊂ ⊃ ⊆ ⊇ ∅ ∪ ∩ ∀ ∃ ¬, just use LaTeX syntax, ex $ \in $ $ \notin $ etc. If you were going to surround a math expression in \( \) or \[ \] delimiters, surround it with $ $ or $$ $$ instead.
Convert tables into HTML format. Keep the syntax simple, but use  for header rows, and use rowspan and colspans appropriately. Don't use  inside of table cells, just split that into new rows as needed. Do NOT use LaTeX or Markdown table syntax.
Ignore all graphical content in the image document. Do not attempt to describe or convert the images.
Remove the headers and footers, but keep references and footnotes.
Read any natural handwriting.
This is likely one page out of several in the document, so be sure to preserve any sentences that come from the previous page, or continue onto the next page, exactly a

From the published model card. Full card on the HuggingFace links in the sidebar.

Benchmarks

Reported results

As published on the model card — the maker's own numbers, not measured by AxForge.

TaskDatasetMetricScore
Document ParsingOmniDocBench v1.6Overall Score91.140
OCROlmOCR BenchOverall Score83.400

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys jina-ocr for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (jina-ocr below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/chat/completions \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"jina-ocr","messages":[{"role":"user","content":"Hello"}]}'

Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms