Read text →
Page or photograph → text
CER / WER; page-level omissionsCodeSOTA / The document desk
Compare open-weight models, inspect benchmark evidence, and choose the output your workflow needs.
Start with your output
Page or photograph → text
CER / WER; page-level omissionsPDF pages → structured document
Structure, faithfulness and groundingTable image → cells and structure
TEDS / cell accuracyForm or invoice → named fields
Field precision / recall; exact matchHandwritten line → transcription
CER / WERDocument + question → grounded answer
ANLS / exact match; abstention01 / Measured by CodeSOTA
Handwriting transcription and visual-text question answering use separate metrics and scopes. Full-split runs and historical subsets remain separate.
full · cer · Every nonempty transcription in the pinned test split; expected exactly 2,915 lines
| Model / revision | CER ↓ | Lines | GPU-slot time | Evidence |
|---|---|---|---|---|
| trocr-large-handwrittene68501f437cd | 3.41% | 2915 | 288.4s | Inspect examples → |
| trocr-base-handwritteneaacaf452b06 | 4.72% | 2915 | 200.1s | Inspect examples → |
| trocr-small-handwrittenb4648cfa1719 | 6.33% | 2915 | 47.4s | Inspect examples → |

Matched singleton checks changed answers materially. Retained for diagnosis; use the full serial reference instead. This run also used a smaller image budget.
full · accuracy · All 1,000 questions; question, category, dataset and answer metadata matched against the pinned upstream list
| Model / revision | Accuracy ↑ | Questions | GPU-slot time | Evidence |
|---|---|---|---|---|
| Qwen2.5-VL-3B-Instruct66285546d2b8 | 60.70% | 1000 | 372.2s | Inspect examples → |
| Qwen2-VL-2B-Instruct895c3a49bc3f | 49.00% | 1000 | 268.3s | Inspect examples → |
| Component | Model | Correct / questions | Accuracy |
|---|---|---|---|
| Artistic Text Recognition | Qwen2.5-VL-3B-Instruct | 42 / 50 | 84.0% |
| Digit String Recognition | Qwen2.5-VL-3B-Instruct | 27 / 50 | 54.0% |
| Doc-oriented VQA | Qwen2.5-VL-3B-Instruct | 109 / 200 | 54.5% |
| Handwriting Recognition | Qwen2.5-VL-3B-Instruct | 28 / 50 | 56.0% |
| Handwritten Mathematical Expression Recognition | Qwen2.5-VL-3B-Instruct | 25 / 100 | 25.0% |
| Irregular Text Recognition | Qwen2.5-VL-3B-Instruct | 39 / 50 | 78.0% |
| Key Information Extraction | Qwen2.5-VL-3B-Instruct | 119 / 200 | 59.5% |
| Non-Semantic Text Recognition | Qwen2.5-VL-3B-Instruct | 40 / 50 | 80.0% |
| Regular Text Recognition | Qwen2.5-VL-3B-Instruct | 43 / 50 | 86.0% |
| Scene Text-centric VQA | Qwen2.5-VL-3B-Instruct | 135 / 200 | 67.5% |
| Artistic Text Recognition | Qwen2-VL-2B-Instruct | 31 / 50 | 62.0% |
| Digit String Recognition | Qwen2-VL-2B-Instruct | 17 / 50 | 34.0% |
| Doc-oriented VQA | Qwen2-VL-2B-Instruct | 89 / 200 | 44.5% |
| Handwriting Recognition | Qwen2-VL-2B-Instruct | 27 / 50 | 54.0% |
| Handwritten Mathematical Expression Recognition | Qwen2-VL-2B-Instruct | 13 / 100 | 13.0% |
| Irregular Text Recognition | Qwen2-VL-2B-Instruct | 35 / 50 | 70.0% |
| Key Information Extraction | Qwen2-VL-2B-Instruct | 90 / 200 | 45.0% |
| Non-Semantic Text Recognition | Qwen2-VL-2B-Instruct | 26 / 50 | 52.0% |
| Regular Text Recognition | Qwen2-VL-2B-Instruct | 41 / 50 | 82.0% |
| Scene Text-centric VQA | Qwen2-VL-2B-Instruct | 121 / 200 | 60.5% |

full · accuracy · All 1,000 questions; question, category, dataset and answer metadata matched against the pinned upstream list
| Model / revision | Accuracy ↑ | Questions | GPU-slot time | Evidence |
|---|---|---|---|---|
| Qwen2.5-VL-3B-Instruct66285546d2b8 | 81.30% | 1000 | 683.3s | Inspect examples → |
| Qwen2-VL-2B-Instruct895c3a49bc3f | 78.50% | 1000 | 770.9s | Inspect examples → |
| Component | Model | Correct / questions | Accuracy |
|---|---|---|---|
| Artistic Text Recognition | Qwen2.5-VL-3B-Instruct | 45 / 50 | 90.0% |
| Digit String Recognition | Qwen2.5-VL-3B-Instruct | 39 / 50 | 78.0% |
| Doc-oriented VQA | Qwen2.5-VL-3B-Instruct | 162 / 200 | 81.0% |
| Handwriting Recognition | Qwen2.5-VL-3B-Instruct | 37 / 50 | 74.0% |
| Handwritten Mathematical Expression Recognition | Qwen2.5-VL-3B-Instruct | 46 / 100 | 46.0% |
| Irregular Text Recognition | Qwen2.5-VL-3B-Instruct | 46 / 50 | 92.0% |
| Key Information Extraction | Qwen2.5-VL-3B-Instruct | 176 / 200 | 88.0% |
| Non-Semantic Text Recognition | Qwen2.5-VL-3B-Instruct | 44 / 50 | 88.0% |
| Regular Text Recognition | Qwen2.5-VL-3B-Instruct | 48 / 50 | 96.0% |
| Scene Text-centric VQA | Qwen2.5-VL-3B-Instruct | 170 / 200 | 85.0% |
| Artistic Text Recognition | Qwen2-VL-2B-Instruct | 48 / 50 | 96.0% |
| Digit String Recognition | Qwen2-VL-2B-Instruct | 30 / 50 | 60.0% |
| Doc-oriented VQA | Qwen2-VL-2B-Instruct | 139 / 200 | 69.5% |
| Handwriting Recognition | Qwen2-VL-2B-Instruct | 41 / 50 | 82.0% |
| Handwritten Mathematical Expression Recognition | Qwen2-VL-2B-Instruct | 36 / 100 | 36.0% |
| Irregular Text Recognition | Qwen2-VL-2B-Instruct | 48 / 50 | 96.0% |
| Key Information Extraction | Qwen2-VL-2B-Instruct | 173 / 200 | 86.5% |
| Non-Semantic Text Recognition | Qwen2-VL-2B-Instruct | 45 / 50 | 90.0% |
| Regular Text Recognition | Qwen2-VL-2B-Instruct | 48 / 50 | 96.0% |
| Scene Text-centric VQA | Qwen2-VL-2B-Instruct | 177 / 200 | 88.5% |

subset · cer · First valid examples from the pinned split
| Model / revision | CER ↓ | Lines | GPU-slot time | Evidence |
|---|---|---|---|---|
| trocr-small-handwrittenb4648cfa1719 | 5.86% | 32 | Not recorded | Inspect examples → |
subset-256 · cer · First 256 nonempty transcriptions in pinned test split order (2,915 total test lines)
| Model / revision | CER ↓ | Lines | GPU-slot time | Evidence |
|---|---|---|---|---|
| trocr-large-handwrittene68501f437cd | 3.97% | 256 | 86.1s | Inspect examples → |
| trocr-base-handwritteneaacaf452b06 | 4.93% | 256 | 42.2s | Inspect examples → |
| trocr-small-handwrittenb4648cfa1719 | 6.20% | 256 | 14.0s | Inspect examples → |
GPU-slot time includes model/data loading and CPU scoring. IAM CER is a character-edit ratio. OCRBench accuracy uses upstream answer-in-response matching; it is not document-layout or table quality. Each task page records decoding and image budgets.
02 / Candidate discovery
The legacy snapshot contains 71 models labelled open-weight and 317 reported observations. Use these to build a test shortlist.
Pin the complete pipeline: rendering, OCR, layout and export all affect the result.
Read the selection guide →Primary metadata refreshed 2026-10-18: 65 repository mappings, 6 software pipelines, 0 unresolved identities. Current repository metadata does not identify the checkpoints used by historical reports. Hub tensor counts may include tied weights.
36 matching model labels · alphabetical, not ranked. Changing the reported-score slice changes observations below; models match the output, deployment and search filters.
| Candidate | Source metadata / current snapshot | Recorded benchmark coverage | Inspect |
|---|---|---|---|
| Chandradatalab-to | 8.767B Hub tensorsopenrail · Licence file ↗Pinned repo bd40c2157656 | olmOCR-Bench | Project ↗ Reported observations |
| Chandra 2datalab-to | 5.296B Hub tensorsopenrail · Licence file ↗Pinned repo af93b47dba1b | olmOCR-Bench | Project ↗ Reported observations |
| Chandra v0.1.0datalab-to | 8.767B Hub tensorsopenrail · Licence file ↗Pinned repo bd40c2157656 | olmOCR-Bench | Project ↗ Reported observations |
| DeepSeek OCRDeepSeek | 3.336B Hub tensorsmit · Licence file ↗Pinned repo 9f30c71f441d | olmOCR-Bench | Project ↗ Reported observations |
| DeepSeek-OCRDeepSeek | 3.336B Hub tensorsmit · Licence file ↗Pinned repo 9f30c71f441d | olmOCR-Bench · OmniDocBench | Project ↗ Reported observations |
| DeepSeek-OCR (Gundam-M)DeepSeek | 3.336B Hub tensorsmit · Licence file ↗Pinned repo 9f30c71f441d | OmniDocBench | Project ↗ Reported observations |
| DeepSeek-OCR-2DeepSeek | 3.389B Hub tensorsapache-2.0 · Licence file ↗Pinned repo aaa02f381194 | olmOCR-Bench · OmniDocBench | Project ↗ Reported observations |
| dots.mocrRedNote HILab | 3.039B Hub tensorsmitPinned repo e539fbb52280 | olmOCR-Bench | Project ↗ Reported observations |
| dots.ocrRedNote HILab | 3.039B Hub tensorsmitPinned repo c0111ce6bc07 | olmOCR-Bench · OmniDocBench | Project ↗ Reported observations |
| dots.ocr 3BRedNote HILab | 3.039B Hub tensorsmitPinned repo c0111ce6bc07 | olmOCR-Bench · OmniDocBench | Project ↗ Reported observations |
| Falcon-OCRTII | 0.270B Hub tensorsapache-2.0Pinned repo fe757d59ecd7 | olmOCR-Bench · OmniDocBench | Project ↗ Reported observations |
| FireRed-OCRFireRedTeam | 2.128B Hub tensorsapache-2.0 · Licence file ↗Pinned repo 7bf5e9d91d3b | olmOCR-Bench | Project ↗ Reported observations |
Registry labels do not establish current availability, licences, pinned model identity or compatible protocols. Imported observations never enter measured leaderboards or aggregates. Alphabetical within metric; no shared rank.
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra | 83.1 | Not recordedVersion not recorded | 2025-10-21Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Chandra 2 | 85.9 | Not recordedVersion not recorded | 2026-03-16Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Chandra v0.1.0 | 83.1 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| DeepSeek OCR | 75.7 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| DeepSeek-OCR | 75.7 | Not recordedVersion not recorded | 2025-10-21Imported 2026-05-15 | Source ↗Reported; not reproduced |
| DeepSeek-OCR-2 | 76.3 | Not recordedVersion not recorded | 2026-01-28Imported 2026-05-15 | Source ↗Reported; not reproduced |
| dots.mocr | 83.9 | Not recordedVersion not recorded | 2026-03-13Imported 2026-05-15 | Source ↗Reported; not reproduced |
| dots.ocr | 79.1 | Not recordedVersion not recorded | 2025-12-02Imported 2026-05-15 | Source ↗Reported; not reproduced |
| dots.ocr 3B | 79.1 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Falcon-OCR | 80.3 | Not recordedVersion not recorded | 2026-03-28Imported 2026-05-15 | Source ↗Reported; not reproduced |
| FireRed-OCR | 70.2 | Not recordedVersion not recorded | 2026-03-02Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Infinity-Parser 7B | 82.5 | Not recordedVersion not recorded | 2025-06-01Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Infinity-Parser2-Pro | 87.6 | Not recordedVersion not recorded | 2026-05-11Imported 2026-05-15 | Source ↗Reported; not reproduced |
| LightOnOCR-2-1B | 83.2 | Not recordedVersion not recorded | 2026-01-20Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Marker 1.10.0 | 76.5 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Marker 1.10.1 | 76.1 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| MinerU 2.5 | 75.2 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| MinerU 2.5 | 77.5 | Not recordedVersion not recorded | 2025-09-26Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MonkeyOCR-pro-3B | 75.8 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 82.2 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 89.6 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Marker 1.10.0 | 83.8 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 99.9 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 99.6 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 90.8 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 92.3 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 91.4 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 81.2 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 84.8 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 50.4 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 42.2 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 80.3 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 85.6 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Chandra v0.1.0 | 88.0 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| dots.ocr 3B | 88.3 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| LightOnOCR-2-1B | 89.0 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| DeepSeek-OCR | 86.46 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| DeepSeek-OCR-2 | 91.09 | Not recordedVersion not recorded | 2026-01-28Imported 2026-05-15 | Source ↗Reported; not reproduced |
| dots.ocr 3B | 88.41 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Falcon-OCR | 88.64 | Not recordedVersion not recorded | 2026-03-28Imported 2026-05-15 | Source ↗Reported; not reproduced |
| FireRed-OCR-2B | 92.94 | Not recordedVersion not recorded | 2026-03-02Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Kimi K2.5 | 88.8 | Not recordedVersion not recorded | 2026-02-02Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MinerU 2.5 | 90.67 | Not recordedVersion not recorded | 2025-09-26Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MonkeyOCR-3B | 87.13 | Not recordedVersion not recorded | 2025-06-05Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MonkeyOCR-pro-1.2B | 86.96 | Not recordedVersion not recorded | 2025-06-05Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MonkeyOCR-pro-3B | 88.85 | Not recordedVersion not recorded | 2025-06-05Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| DeepSeek-OCR (Gundam-M) | 0.123 | Not recordedVersion not recorded | 2025-10-21Imported 2026-05-13 | Source ↗Reported; not reproduced |
| dots.ocr | 0.125 | Not recordedVersion not recorded | 2025-12-02Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MiniCPM-o 4.5-Instruct | 0.109 | Not recordedVersion not recorded | 2026-04-30Imported 2026-05-13 | Source ↗Reported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| MinerU 2.5 | 97.5 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
Showing the first 50 observations. Read all pages through the JSON API →
Snapshot retrieved 2026-10-18. 93 legacy model labels lack matched model metadata; they appear only when unresolved entries are included. Source dates and import dates remain distinct.
03 / From shortlist to working pipeline
Start with the output your application consumes, then test complete pipelines on representative files.
Separate line recognition from detecting handwriting on a whole page. Our current measurements cover the first task.
The target can be searchable text, reading-order Markdown, tables or a structured document. Choose and evaluate that contract explicitly.
The useful outcome is correct fields with evidence: supplier, invoice number, dates, currency, totals and line items.
Original OCR archive ↗ · PaddleOCR vs Tesseract · PaddleOCR vs EasyOCR
04 / Coverage, honestly
Executable adapter and current measurements. Inspect each protocol’s subset size and normalization above.
Inspect the full IAM comparison →Evaluator and dataset revisions pinned. Local pipeline adapter and validation still required; no CodeSOTA scores.
Integration plan →Full OCRBench visual-text QA runs appear above when registered. OmniDocBench, table reconstruction and form-field scoring still require separate adapters; legacy observations do not become execution jobs.
Adapter backlog →Measure omissions, structure errors, latency, failure rate and human review on held-out documents. Current public data cannot establish a universal best OCR model.
How benchmark fit works →