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.
Check merged cells, row alignment and numeric values separately.
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.
23 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 |
|---|---|---|---|
| DeepSeek-OCRDeepSeek | 3.336B Hub tensorsmit · Licence file ↗Pinned repo 9f30c71f441d | 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 | OmniDocBench | Project ↗ Reported observations |
| dots.ocrRedNote HILab | 3.039B Hub tensorsmitPinned repo c0111ce6bc07 | OmniDocBench | Project ↗ Reported observations |
| dots.ocr 3BRedNote HILab | 3.039B Hub tensorsmitPinned repo c0111ce6bc07 | OmniDocBench | Project ↗ Reported observations |
| Falcon-OCRTII | 0.270B Hub tensorsapache-2.0Pinned repo fe757d59ecd7 | OmniDocBench | Project ↗ Reported observations |
| FireRed-OCR-2BFireRedTeam | 2.128B Hub tensorsapache-2.0 · Licence file ↗Pinned repo 7bf5e9d91d3b | OmniDocBench | Project ↗ Reported observations |
| Kimi K2.5Moonshot AI | 1026.879B Hub tensorsother · Licence file ↗Pinned repo 4d01dfe0332d | OmniDocBench | Project ↗ Reported observations |
| MinerU 2.5OpenDataLab | 1.156B Hub tensorsagpl-3.0Pinned repo 1aa090b41282 | OmniDocBench | Project ↗ Reported observations |
| MiniCPM-o 4.5-InstructOpenBMB | 9.372B Hub tensorsapache-2.0Pinned repo d59117d19ddb | OmniDocBench | Project ↗ Reported observations |
| MonkeyOCR-3BResearch | Size not establishednot declared in Hub metadata · Licence file ↗Pinned repo eac54d4b0063 | OmniDocBench | Project ↗ Reported observations |
| MonkeyOCR-pro-1.2BResearch | Size not establishednot declared in Hub metadataPinned repo 2fb372630f00 | OmniDocBench | 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 |
|---|---|---|---|---|
| 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 |
| OCRVerse 4B | 88.56 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| olmOCR | 81.79 | Not recordedVersion not recorded | 2025-02-25Imported 2026-05-15 | Source ↗Reported; not reproduced |
| PaddleOCR-VL | 92.86 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| PaddleOCR-VL | 92.56 | Not recordedVersion not recorded | 2025-10-16Imported 2026-05-15 | Source ↗Reported; not reproduced |
| PaddleOCR-VL 0.9B | 92.56 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| PP-StructureV3 | 86.73 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Qianfan-OCR | 93.12 | Not recordedVersion not recorded | 2026-03-11Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen2.5-VL | 87.02 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Qwen3-VL-235B | 89.15 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Qwen3.5-397B-A17B | 90.8 | Not recordedVersion not recorded | 2026-02-16Imported 2026-05-18 | 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 |
| PP-StructureV3 | 0.145 | Not recordedVersion not recorded | 2025-07-08Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen2.5-VL-72B | 0.226 | Not recordedVersion not recorded | 2025-02-19Imported 2026-05-18 | 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 |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| PaddleOCR-VL | 93.52 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Qianfan-OCR | 91.02 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Qianfan-OCR | 92.43 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Qianfan-OCR | 0.041 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
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 →