2026-10-11 16:38 UTC

Jina AI claims its released jina-ocr-v1 improves document-parsing accuracy over its DeepSeek-OCR backbone and accelerates lossless decoding on an NVIDIA L4 by 1.95× in eager mode but only up to 1.17× with CUDA graphs, potentially lowering local document-ingestion costs.

state: seedheat: mediumuncertainty: mediumconvergesscott: mediumdocument-parsing local-inference rag inference-economicsJina AI

What is this?

Jina AI’s September 14, 2026 release describes jina-ocr-v1 as a DeepSeek-OCR-based, 3.4B-parameter document-to-Markdown parser with about 570M active decoder parameters per token, licensed CC BY-NC 4.0. Jina reports scores of 91.14 on OmniDocBench v1.6 and 83.4 on olmOCR-Bench, but the supplied snippets do not establish the claimed accuracy improvement over its backbone or independent validation. Its paper and release report lossless speculative decoding on an NVIDIA L4 at batch size 1: 1.95× acceleration in eager mode at K=3, versus a best gain of 1.17× with CUDA graphs at K=1; the social snippet’s claim of a CUDA-graph slowdown conflicts with the supplied table. These are decoding measurements, not demonstrated end-to-end ingestion cost savings.

Why it matters to Scott

Jina’s configuration-sensitive decoding results converge with Scott’s hardware-aware local-inference policy and offer a concrete parser candidate to evaluate on gamepc’s vision/OCR substrate: the reported gain falls from 1.95× in eager mode to at most 1.17× with CUDA graphs, making the serving baseline consequential. This warrants a workload-level benchmark, not an ingestion-savings claim or endorsement of his wiki-compilation thesis; hardware transferability and accuracy improvement remain unestablished, CC BY-NC limits commercial deployment, and the supplied radar pages track related parsers rather than this release.
dev:project.gamepcdev:concept.hardware-aware-local-inferenceip:concept.ai-unit-economicsradar:chandra-pdf-parser-validationradar:nemotron-parse-2-validationradar:concept.document-parsingradar:concept.speculative-decodingradar:concept.inference-economics
queries asked of Scott's wikis
  • RAG ingestion document parsing accuracy tables formulas Markdown
  • Local GPU inference economics end-to-end ingestion bottlenecks
  • Speculative decoding CUDA graphs vLLM benchmark baselines
  • Knowledge systems PDF ingestion local OCR pipelines
  • Noncommercial model licenses self-hosted product deployment

Measured heat

now 0 pts/hpeak 0 pts/hcomments 0/hpeers p14momentum: steady2 platformsage 571h
points/hour across evidence · reading as of 2026-10-12 02:59:37.977291+11:00 · deterministic, not a model opinion

How the heat travelled

09-17 21:35 (minted)⭐ origin echo-reconstructedJina AI releases a 3.4B-parameter document parser with approximately 570M active decoder parameters, reports 91.14 on OmniDocBench v1.6 and
Jina AI on blog (echo) · attributed from hn.story.49746139 · published time unknown
—
09-17 20:34first on hacker news · published · lag ?Jina-OCR-v1: Faster Document Parsing on Low-Budget GPU
torchenjoyer
—
09-17 20:34amplified on hacker news 👑hn.story.49746139
torchenjoyer
peak 4 · 0 comments · 98% of case engagement
09-17 21:20our radar first saw it · lag ?discovery anchor: hn.story.49746139—
pace: p32 vs 1032 stories at the 336h mark (now 571h old) — ahead of addom-local-coding-harness (1.5x), behind agentsec-static-config-auditing (0.8x)

Evidence (2) — ⭐ canonical anchor

sourceobjectauthorscorecomments
🟧 hnJina-OCR-v1: Faster Document Parsing on Low-Budget GPU
Retrieved article excerpt

Open article · Retrieved 2026-09-17T21:22:06.262838+00:00

[jinaai/jina-ocr-v1 · Hugging Face

We’re on a journey to advance and democratize artificial intelligence through open source and open science.](https://huggingface.co/jinaai/jina-ocr-v1)[jina-ocr-v1 - Search Foundation Models

Page-to-Markdown document parser in one pass at 570M active parameters

Search Foundation ModelsJina AI](https://jina.ai/models/jina-ocr-v1)[Jina-OCR-v1: Efficient Document Parsing with Speculative Decoding and Dense Verifiable Rewards

We present Jina-OCR-v1, an end-to-end document parsing model built to serve on low-budget GPUs. It combines the compressed-vision encoder and the 3B mixture-of-experts decoder of DeepSeek-OCR, which activates about 570M parameters per token, with a FastMTP speculative decoding head that shares a single draft block recursively across K=3 prediction steps. Greedy verification makes decoding lossless. Post-training combines instruction alignment, robustness fine-tuning on difficult documents, and GRPO under dense verifiable rewards: deterministic formula, table, and structural checks that award partial credit. The training data mixes cleaned public corpora with targeted synthetic pages. At the default dynamic-resolution setting, Jina-OCR-v1 scores 91.14 on OmniDocBench v1.6 and 83.4 on olmOCR-Bench, and reaches the highest page throughput in our comparison at 2.57 pages per second. On a low-budget GPU such as the NVIDIA L4, FastMTP doubles decoding speed over greedy autoregressive decoding. The model is publicly available at https://huggingface.co/jinaai/jina-ocr-v1.

arXiv.orgAlejandro Barón García](https://arxiv.org/abs/2609.03181)

We release **[jina-ocr-v1](https://jina.ai/models/jina-ocr-v1)**, a **3.4B-parameter** document parser with about **570M active decoder parameters** per token. It scores **91.14 on OmniDocBench v1.6** and **83.4 on olmOCR-Bench**, and at **2.57 pages per second** it has the highest page throughput of the fourteen systems we measured. On an NVIDIA L4 its speculative decoding head **nearly doubles decoding speed** while keeping decoding lossless.

The model builds on the compressed-vision encoder and mixture-of-experts decoder of DeepSeek-OCR and adds two things. A FastMTP draft head applies one block recursively for three prediction steps, so draft parameters do not grow with depth. Post-training runs under dense verifiable rewards, where every check is deterministic code against a reference and every check is graded. Against that backbone, post-training adds 7.4 points on olmOCR-Bench and improves every OmniDocBench column.

Three-panel overview of specialized OCR models

Three axes that determine deployment cost. (a) Pixels per visual token, log scale. DeepEncoder maps a 1024x1024 view from 4,096 patches to 256 tokens, giving 3,887 pixels per visual token against 783 to 1,022 for encoders with 28 to 32 px patches. (b) Page throughput on olmOCR-Bench, one A100, concurrency 32. (c) Benchmark overall against active parameters, log scale, with the solid line joining the Pareto-optimal systems. [jina-ocr-v1](https://jina.ai/models/jina-ocr-v1) lies on both frontiers at 570M active parameters.

Serving efficiency of fourteen OCR systems ranked three ways

The same fourteen systems on olmOCR-Bench, one A100 at concurrency 32, ranked by (a) output tokens per second, (b) output tokens per page, and (c) pages per second, which is the ratio of the first two. Surya OCR 2 leads on tokens per second at 3,760 but emits 3,568 tokens per page and completes 1.05 pages per second. [jina-ocr-v1](https://jina.ai/models/jina-ocr-v1) combines 2,792 tokens per second with 1,085 tokens per page and reaches 2.57.

## [*tag*](https://jina.ai/en-US/news/jina-ocr-v1-faster-document-parsing-on-low-budget-gpus/#model-and-training "Model and training")Model and training

Long outputs are what make document parsing expensive to decode. DeepSeek-OCR removed most of that cost with a compressed vision encoder and a compact mixture-of-experts decoder, and [jina-ocr-v1](https://jina.ai/models/jina-ocr-v1) inherits both and targets the autoregressive bottleneck that remains.

Architecture of jina-ocr-v1

Architecture. DeepEncoder and the MoE decoder follow DeepSeek-OCR, and a page yields a 1024x1024 global view of 256 visual tokens plus n local tiles of 100 tokens each. The FastMTP head, in orange, proposes K = 3 tokens from one shared draft block for the decoder to verify.

OCR output is near-deterministic and locally structured, which makes it a favorable workload for speculative decoding. The usual construction attaches one draft head per prediction depth, so draft parameters grow with how far ahead the model looks. FastMTP uses a single dense block applied recursively for K = 3 steps. The verifier checks each proposal greedily and accepts the longest prefix on which draft and verifier agree, so the committed sequence equals the greedy sequence of the verifier and speculation changes only how long the output takes.

| Component | Specification |
| --- | --- |
| Vision encoder | DeepEncoder (~380M): SAM (80M) → 16x conv → CLIP-L (300M) |
| Vision tokens | 256 @ 1024x1024 (Base); 256+100n, n ≤ 9 (Gundam, ≤ 1,156/page) |
| Decoder | DeepSeek-3B-MoE: 12 layers, d = 1280, 64 routed + 2 shared, top-6 |
| Active / total params | ~570M / ~3B (decoder); < 1B / ~3.4B (whole model) |
| Vocabulary | 129,280 |
| Position limit | 32,768 (RoPE, θ = 106) |
| MTP head | 1 shared dense block, recursive K = 3 steps (FastMTP) |

Model specification. The decoder emits Markdown, with tables in HTML and formulas in LaTeX.

Training data draws on public OCR corpora including olmOCR-mix, FinePDFs, LightOnOCR, MMTab and UniMER, plus deliberately hard sources such as Europeana newspapers, Library of Congress transcripts and NARA pension files. A rule-based filter drops degeneration loops and duplicates, and a vision-language pass relabels the hard sources. We also synthesize pages for one specific reason: on natural pages the formula and table reward terms apply to very few samples, so most rollouts carry no structural signal. JinaOCRSynth packs each page with scorable formulas and tables and ships unit tests with it.

Post-training runs supervised alignment, robustness fine-tuning on degraded pages, and GRPO, repeated across the rounds of an outer loop. The GRPO reward is a product of verifiable terms, each computed by deterministic code against a reference transcription.

| Component | Signal | Role |
| --- | --- | --- |
| Content | Normalized edit distance on mixed LaTeX/HTML | Textual fidelity |
| Formula | Formula string matching | Formula correctness |
| Table | TEDS, TEDS-S, table edit distance | Structure recovery |
| Structural validity | Brace balance, tag closure, table integrity | Well-formedness |
| Unit tests | Fraction of olmOCR-style presence, order, math and table tests passed | Dense feedback |
| Repetition and format | Repetition penalty, HTML conformance | Degeneration control |

Multiplicative reward composition. Most terms carry a floor, since under a product one failed check would remove the gradient from an otherwise correct page. The repetition term has none, because degenerate loops are the failure mode that most readily inflates the content score.

Each round leaves a pool of candidate checkpoints. An agent searches merge configurations under a fixed evaluation budget and scores them with unit-test and edit-distance checks, and errors in the selected merge drive the next round of collection. The draft head is fitted last, on the verifier the loop selects.

## [*tag*](https://jina.ai/en-US/news/jina-ocr-v1-faster-document-parsing-on-low-budget-gpus/#results "Results")Results

| Model | Params | ArXiv | OldScans-Math | Tables | OldScans | Multi-col | LongTiny | Hdr/Ftr | Base | Overall |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 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](https://jina.ai/models/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](https://jina.ai/models/jina-ocr-v1) reaches 83.4 overall, 7.4 points above the DeepSeek-OCR backbone it post-trains and ahead of the 8B olmOCR-2. The Hdr/Ftr column tests text absence and rewards omitting headers and footers, so faithful full-page transcription scores low there.

| Method | Params | Overall ↑ | 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](https://jina.ai/models/jina-ocr-v1)** | 3B/570M | 91.14 | 0.046 | 93.28 | 84.68 | 89.01 | 0.142 |

OmniDocBench v1.6. [jina-ocr-v1](https://jina.ai/models/jina-ocr-v1) reaches 91.14 at 570M active parameters, ahead of DeepSeek-OCR-2 on every column and ahead of the much larger Qwen3-VL-235B.

### [*tag*](https://jina.ai/en-US/news/jina-ocr-v1-faster-document-parsing-on-low-budget-gpus/#speculative-decoding-on-an-l4 "Speculative decoding on an L4")Speculative decoding on an L4

| Mode | k | Output tok/s ↑ | Speedup S ↑ | Acceptance rate | τ | 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 on olmOCR-Bench, NVIDIA L4, vLLM 0.20.1, batch size 1. τ is the mean number of tokens committed per speculative step including the bonus token, and c = τ/S is the cost of one speculative step in units of one autoregressive step. Measured on a different device from the figures above.

Draft quality does not depend on the execution mode, since τ is 2.73 in eager mode and 2.74 under CUDA graphs at k = 3. The baseline does. CUDA graphs raise autoregressive decoding from 42.7 to 158.3 tokens per second while the overhead of a speculative step stays near 9 ms, so its cost rises from 1.40 to 2.51 autoregressive steps. The gain tracks the cost of the verifier step it replaces, which puts the best depth at k = 3 in eager mode and k = 1 under graphs.

## [*tag*](https://jina.ai/en-US/news/jina-ocr-v1-faster-document-parsing-on-low-budget-gpus/#getting-started "Getting started")Getting started

The quickest way to run it is Jina Reader. Point r.jina.ai at a URL and add one header: Reader fetches the page or PDF, renders it, runs [jina-ocr-v1](https://jina.ai/models/jina-ocr-v1) over the result and hands back Markdown. Nothing to deploy, no image plumbing to write, and the same API key as the rest of the platform.

```
curl "https://r.jina.ai/https://example.com/document.pdf" \
  -H "Authorization: Bearer $JINA_API_KEY" \
  -H "X-Respond-With: jina-ocr-v1"

Copy
```

Add X-Page to transcribe one page of a multi-page document. Both parameters are in the Reader API editor, where the 
torchenjoyer40
🟧 echo.blog ⭐Jina AI releases a 3.4B-parameter document parser with approximately 570M active decoder parameters, reports 91.14 on OmniDocBench v1.6 and Jina AI——

Interpretation history

Decision trace