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.
A document-answering score is not a transcription-accuracy score.
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.
29 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 |
|---|---|---|---|
| dots.mocrRedNote HILab | 3.039B Hub tensorsmitPinned repo e539fbb52280 | OCRBench | Project ↗ Reported observations |
| HunyuanOCR (1B)Tencent | 1.120B Hub tensorsother · Licence file ↗Pinned repo 47644ecc4fc8 | OCRBench | Project ↗ Reported observations |
| Infinity-Parser2-ProInfly | 35.107B Hub tensorsapache-2.0Pinned repo b27d47010051 | OCRBench | Project ↗ Reported observations |
| InternVL3-78BShanghai AI Lab | 78.408B Hub tensorsotherPinned repo 4a42b163cc0e | OCRBench | Project ↗ Reported observations |
| Kimi K2.5Moonshot AI | 1026.879B Hub tensorsother · Licence file ↗Pinned repo 4d01dfe0332d | OCRBench | Project ↗ Reported observations |
| Kimi-VL-A3B-InstructMoonshot AI | 16.408B Hub tensorsmitPinned repo 398eede0903c | OCRBench | Project ↗ Reported observations |
| Kimi-VL-A3B-Thinking-2506Moonshot AI | 16.408B Hub tensorsmitPinned repo aa1730989e75 | OCRBench | Project ↗ Reported observations |
| MiniCPM-Llama3-V 2.5OpenBMB | 8.537B Hub tensorsnot declared in Hub metadataPinned repo fd7f352fac0e | OCRBench | Project ↗ Reported observations |
| MiniCPM-o 4.5-InstructOpenBMB | 9.372B Hub tensorsapache-2.0Pinned repo d59117d19ddb | OCRBench | Project ↗ Reported observations |
| MiniCPM-V 4.6-Thinking (16x)OpenBMB | 1.300B Hub tensorsapache-2.0Pinned repo 36f34a661a4b | OCRBench | Project ↗ Reported observations |
| MiniMax-VL-01MiniMax | 456.437B Hub tensorsnot declared in Hub metadataPinned repo 308b79934be1 | OCRBench | Project ↗ Reported observations |
| Ovis2.5-9BAIDC | 9.175B Hub tensorsapache-2.0 · Licence file ↗Pinned repo d73b2283ae2a | OCRBench | 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 |
|---|---|---|---|---|
| dots.mocr | 860.0 | Not recordedVersion not recorded | 2026-03-13Imported 2026-05-18 | Source ↗Reported; not reproduced |
| HunyuanOCR (1B) | 860.0 | Not recordedVersion not recorded | 2025-11-24Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Infinity-Parser2-Pro | 862.0 | Not recordedVersion not recorded | 2026-05-11Imported 2026-05-18 | Source ↗Reported; not reproduced |
| InternVL3-78B | 906.0 | Not recordedVersion not recorded | 2025-04-14Imported 2026-05-14 | Source ↗Reported; not reproduced |
| Kimi K2.5 | 923.0 | Not recordedVersion not recorded | 2026-02-02Imported 2026-05-13 | Source ↗Reported; not reproduced |
| Kimi-VL-A3B-Instruct | 867.0 | Not recordedVersion not recorded | 2025-04-10Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Kimi-VL-A3B-Thinking-2506 | 869.0 | Not recordedVersion not recorded | 2025-04-10Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MiniCPM-Llama3-V 2.5 | 725.0 | Not recordedVersion not recorded | 2024-08-03Imported 2026-05-18 | Source ↗Reported; not reproduced |
| MiniCPM-o 4.5-Instruct | 876.0 | Not recordedVersion not recorded | 2026-04-30Imported 2026-05-15 | Source ↗Reported; not reproduced |
| MiniCPM-V 4.6-Thinking (16x) | 831.0 | Not recordedVersion not recorded | 2026-05-13Imported 2026-05-18 | Source ↗Reported; not reproduced |
| MiniMax-VL-01 | 865.0 | Not recordedVersion not recorded | 2025-01-14Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Ovis2.5-9B | 879.0 | Not recordedVersion not recorded | 2025-08-15Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qianfan-OCR | 880.0 | Not recordedVersion not recorded | 2026-03-11Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen2-VL-2B | 809.0 | Not recordedVersion not recorded | 2024-09-18Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen2-VL-72B | 877.0 | Not recordedVersion not recorded | 2024-09-18Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen2-VL-7B | 866.0 | Not recordedVersion not recorded | 2024-09-18Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen2.5-VL-3B | 797.0 | Not recordedVersion not recorded | 2025-02-19Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen2.5-VL-72B | 885.0 | Not recordedVersion not recorded | 2025-02-19Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen2.5-VL-7B | 864.0 | Not recordedVersion not recorded | 2025-02-19Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen3-VL-235B-A22B-Instruct | 920.0 | Not recordedVersion not recorded | 2025-11-26Imported 2026-05-14 | Source ↗Reported; not reproduced |
| Qwen3-VL-235B-A22B-Thinking | 875.0 | Not recordedVersion not recorded | 2025-11-26Imported 2026-05-15 | Source ↗Reported; not reproduced |
| Qwen3-VL-8B-Instruct | 896.0 | Not recordedVersion not recorded | 2025-11-26Imported 2026-05-14 | Source ↗Reported; not reproduced |
| Qwen3.5-397B-A17B | 931.0 | Not recordedVersion not recorded | 2026-02-16Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen3.6-27B | 894.0 | Not recordedVersion not recorded | 2026-04-21Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Qwen3.6-35B-A3B | 900.0 | Not recordedVersion not recorded | 2026-04-21Imported 2026-05-18 | Source ↗Reported; not reproduced |
| SenseNova-U1-A3B-MoT | 919.0 | Not recordedVersion not recorded | 2026-05-12Imported 2026-05-18 | Source ↗Reported; not reproduced |
| VideoLLaMA3 2B | 779.0 | Not recordedVersion not recorded | 2025-01-22Imported 2026-05-18 | Source ↗Reported; not reproduced |
| VideoLLaMA3 7B | 828.0 | Not recordedVersion not recorded | 2025-01-22Imported 2026-05-18 | Source ↗Reported; not reproduced |
| ZAYA1-VL-8B | 798.0 | Not recordedVersion not recorded | 2026-05-08Imported 2026-05-18 | Source ↗Reported; not reproduced |
| Model | Reported value | Protocol / version | Result / import date | Evidence |
|---|---|---|---|---|
| Qwen2-VL-72B | 84.9 | Not recordedVersion not recorded | Not recordedImported 2026-04-20 | Source not resolvedReported; not reproduced |
| Qwen2.5-VL-72B | 85.5 | 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 →