CodeSOTA / The document desk

Find OCR that fits
your documents.

Compare open-weight models, inspect benchmark evidence, and choose the output your workflow needs.

Start with your output

Six jobs. Different evidence.

01

Read text →

Page or photograph → text

CER / WER; page-level omissions

01 / Measured by CodeSOTA

Scores with execution evidence.

Handwriting transcription and visual-text question answering use separate metrics and scopes. Full-split runs and historical subsets remain separate.

IAM lines / full 2,915-line test

full · cer · Every nonempty transcription in the pinned test split; expected exactly 2,915 lines

Model / revisionCER ↓LinesGPU-slot timeEvidence
trocr-large-handwrittene68501f437cd3.41%2915288.4sInspect examples →
trocr-base-handwritteneaacaf452b064.72%2915200.1sInspect examples →
trocr-small-handwrittenb4648cfa17196.33%291547.4sInspect examples →
Compatible model scores versus measured model size
Same pinned protocol · PNG · SVG
Experimental batch-sensitive run — not a reference ranking

Matched singleton checks changed answers materially. Retained for diagnosis; use the full serial reference instead. This run also used a smaller image budget.

OCRBench v1 / full 1,000 questions — experimental batch-4

full · accuracy · All 1,000 questions; question, category, dataset and answer metadata matched against the pinned upstream list

Model / revisionAccuracy ↑QuestionsGPU-slot timeEvidence
Qwen2.5-VL-3B-Instruct66285546d2b860.70%1000372.2sInspect examples →
Qwen2-VL-2B-Instruct895c3a49bc3f49.00%1000268.3sInspect examples →
Results by OCRBench task component
ComponentModelCorrect / questionsAccuracy
Artistic Text RecognitionQwen2.5-VL-3B-Instruct42 / 5084.0%
Digit String RecognitionQwen2.5-VL-3B-Instruct27 / 5054.0%
Doc-oriented VQAQwen2.5-VL-3B-Instruct109 / 20054.5%
Handwriting RecognitionQwen2.5-VL-3B-Instruct28 / 5056.0%
Handwritten Mathematical Expression RecognitionQwen2.5-VL-3B-Instruct25 / 10025.0%
Irregular Text RecognitionQwen2.5-VL-3B-Instruct39 / 5078.0%
Key Information ExtractionQwen2.5-VL-3B-Instruct119 / 20059.5%
Non-Semantic Text RecognitionQwen2.5-VL-3B-Instruct40 / 5080.0%
Regular Text RecognitionQwen2.5-VL-3B-Instruct43 / 5086.0%
Scene Text-centric VQAQwen2.5-VL-3B-Instruct135 / 20067.5%
Artistic Text RecognitionQwen2-VL-2B-Instruct31 / 5062.0%
Digit String RecognitionQwen2-VL-2B-Instruct17 / 5034.0%
Doc-oriented VQAQwen2-VL-2B-Instruct89 / 20044.5%
Handwriting RecognitionQwen2-VL-2B-Instruct27 / 5054.0%
Handwritten Mathematical Expression RecognitionQwen2-VL-2B-Instruct13 / 10013.0%
Irregular Text RecognitionQwen2-VL-2B-Instruct35 / 5070.0%
Key Information ExtractionQwen2-VL-2B-Instruct90 / 20045.0%
Non-Semantic Text RecognitionQwen2-VL-2B-Instruct26 / 5052.0%
Regular Text RecognitionQwen2-VL-2B-Instruct41 / 5082.0%
Scene Text-centric VQAQwen2-VL-2B-Instruct121 / 20060.5%
Compatible model scores versus measured model size
Same pinned protocol · PNG · SVG

OCRBench v1 / full serial reference

full · accuracy · All 1,000 questions; question, category, dataset and answer metadata matched against the pinned upstream list

Model / revisionAccuracy ↑QuestionsGPU-slot timeEvidence
Qwen2.5-VL-3B-Instruct66285546d2b881.30%1000683.3sInspect examples →
Qwen2-VL-2B-Instruct895c3a49bc3f78.50%1000770.9sInspect examples →
Results by OCRBench task component
ComponentModelCorrect / questionsAccuracy
Artistic Text RecognitionQwen2.5-VL-3B-Instruct45 / 5090.0%
Digit String RecognitionQwen2.5-VL-3B-Instruct39 / 5078.0%
Doc-oriented VQAQwen2.5-VL-3B-Instruct162 / 20081.0%
Handwriting RecognitionQwen2.5-VL-3B-Instruct37 / 5074.0%
Handwritten Mathematical Expression RecognitionQwen2.5-VL-3B-Instruct46 / 10046.0%
Irregular Text RecognitionQwen2.5-VL-3B-Instruct46 / 5092.0%
Key Information ExtractionQwen2.5-VL-3B-Instruct176 / 20088.0%
Non-Semantic Text RecognitionQwen2.5-VL-3B-Instruct44 / 5088.0%
Regular Text RecognitionQwen2.5-VL-3B-Instruct48 / 5096.0%
Scene Text-centric VQAQwen2.5-VL-3B-Instruct170 / 20085.0%
Artistic Text RecognitionQwen2-VL-2B-Instruct48 / 5096.0%
Digit String RecognitionQwen2-VL-2B-Instruct30 / 5060.0%
Doc-oriented VQAQwen2-VL-2B-Instruct139 / 20069.5%
Handwriting RecognitionQwen2-VL-2B-Instruct41 / 5082.0%
Handwritten Mathematical Expression RecognitionQwen2-VL-2B-Instruct36 / 10036.0%
Irregular Text RecognitionQwen2-VL-2B-Instruct48 / 5096.0%
Key Information ExtractionQwen2-VL-2B-Instruct173 / 20086.5%
Non-Semantic Text RecognitionQwen2-VL-2B-Instruct45 / 5090.0%
Regular Text RecognitionQwen2-VL-2B-Instruct48 / 5096.0%
Scene Text-centric VQAQwen2-VL-2B-Instruct177 / 20088.5%
Compatible model scores versus measured model size
Same pinned protocol · PNG · SVG
Historical subset: IAM lines

IAM lines

subset · cer · First valid examples from the pinned split

Model / revisionCER ↓LinesGPU-slot timeEvidence
trocr-small-handwrittenb4648cfa17195.86%32Not recordedInspect examples →
Historical subset: IAM lines / 256-line subset

IAM lines / 256-line subset

subset-256 · cer · First 256 nonempty transcriptions in pinned test split order (2,915 total test lines)

Model / revisionCER ↓LinesGPU-slot timeEvidence
trocr-large-handwrittene68501f437cd3.97%25686.1sInspect examples →
trocr-base-handwritteneaacaf452b064.93%25642.2sInspect examples →
trocr-small-handwrittenb4648cfa17196.20%25614.0sInspect 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

Open weights first. Evidence alongside.

The legacy snapshot contains 71 models labelled open-weight and 317 reported observations. Use these to build a test shortlist.

Reset
Answer + supporting evidence

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.

CandidateSource metadata / current snapshotRecorded benchmark coverageInspect
dots.mocrRedNote HILab3.039B Hub tensorsmitPinned repo e539fbb52280OCRBenchProject ↗
Reported observations
HunyuanOCR (1B)Tencent1.120B Hub tensorsother · Licence file ↗Pinned repo 47644ecc4fc8OCRBenchProject ↗
Reported observations
Infinity-Parser2-ProInfly35.107B Hub tensorsapache-2.0Pinned repo b27d47010051OCRBenchProject ↗
Reported observations
InternVL3-78BShanghai AI Lab78.408B Hub tensorsotherPinned repo 4a42b163cc0eOCRBenchProject ↗
Reported observations
Kimi K2.5Moonshot AI1026.879B Hub tensorsother · Licence file ↗Pinned repo 4d01dfe0332dOCRBenchProject ↗
Reported observations
Kimi-VL-A3B-InstructMoonshot AI16.408B Hub tensorsmitPinned repo 398eede0903cOCRBenchProject ↗
Reported observations
Kimi-VL-A3B-Thinking-2506Moonshot AI16.408B Hub tensorsmitPinned repo aa1730989e75OCRBenchProject ↗
Reported observations
MiniCPM-Llama3-V 2.5OpenBMB8.537B Hub tensorsnot declared in Hub metadataPinned repo fd7f352fac0eOCRBenchProject ↗
Reported observations
MiniCPM-o 4.5-InstructOpenBMB9.372B Hub tensorsapache-2.0Pinned repo d59117d19ddbOCRBenchProject ↗
Reported observations
MiniCPM-V 4.6-Thinking (16x)OpenBMB1.300B Hub tensorsapache-2.0Pinned repo 36f34a661a4bOCRBenchProject ↗
Reported observations
MiniMax-VL-01MiniMax456.437B Hub tensorsnot declared in Hub metadataPinned repo 308b79934be1OCRBenchProject ↗
Reported observations
Ovis2.5-9BAIDC9.175B Hub tensorsapache-2.0 · Licence file ↗Pinned repo d73b2283ae2aOCRBenchProject ↗
Reported observations
Source-reported observations · 31 in selected slice

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.

OCRBench · score

ModelReported valueProtocol / versionResult / import dateEvidence
dots.mocr860.0Not recordedVersion not recorded2026-03-13Imported 2026-05-18Source ↗Reported; not reproduced
HunyuanOCR (1B)860.0Not recordedVersion not recorded2025-11-24Imported 2026-05-18Source ↗Reported; not reproduced
Infinity-Parser2-Pro862.0Not recordedVersion not recorded2026-05-11Imported 2026-05-18Source ↗Reported; not reproduced
InternVL3-78B906.0Not recordedVersion not recorded2025-04-14Imported 2026-05-14Source ↗Reported; not reproduced
Kimi K2.5923.0Not recordedVersion not recorded2026-02-02Imported 2026-05-13Source ↗Reported; not reproduced
Kimi-VL-A3B-Instruct867.0Not recordedVersion not recorded2025-04-10Imported 2026-05-15Source ↗Reported; not reproduced
Kimi-VL-A3B-Thinking-2506869.0Not recordedVersion not recorded2025-04-10Imported 2026-05-15Source ↗Reported; not reproduced
MiniCPM-Llama3-V 2.5725.0Not recordedVersion not recorded2024-08-03Imported 2026-05-18Source ↗Reported; not reproduced
MiniCPM-o 4.5-Instruct876.0Not recordedVersion not recorded2026-04-30Imported 2026-05-15Source ↗Reported; not reproduced
MiniCPM-V 4.6-Thinking (16x)831.0Not recordedVersion not recorded2026-05-13Imported 2026-05-18Source ↗Reported; not reproduced
MiniMax-VL-01865.0Not recordedVersion not recorded2025-01-14Imported 2026-05-15Source ↗Reported; not reproduced
Ovis2.5-9B879.0Not recordedVersion not recorded2025-08-15Imported 2026-05-18Source ↗Reported; not reproduced
Qianfan-OCR880.0Not recordedVersion not recorded2026-03-11Imported 2026-05-15Source ↗Reported; not reproduced
Qwen2-VL-2B809.0Not recordedVersion not recorded2024-09-18Imported 2026-05-18Source ↗Reported; not reproduced
Qwen2-VL-72B877.0Not recordedVersion not recorded2024-09-18Imported 2026-05-15Source ↗Reported; not reproduced
Qwen2-VL-7B866.0Not recordedVersion not recorded2024-09-18Imported 2026-05-15Source ↗Reported; not reproduced
Qwen2.5-VL-3B797.0Not recordedVersion not recorded2025-02-19Imported 2026-05-18Source ↗Reported; not reproduced
Qwen2.5-VL-72B885.0Not recordedVersion not recorded2025-02-19Imported 2026-05-15Source ↗Reported; not reproduced
Qwen2.5-VL-7B864.0Not recordedVersion not recorded2025-02-19Imported 2026-05-18Source ↗Reported; not reproduced
Qwen3-VL-235B-A22B-Instruct920.0Not recordedVersion not recorded2025-11-26Imported 2026-05-14Source ↗Reported; not reproduced
Qwen3-VL-235B-A22B-Thinking875.0Not recordedVersion not recorded2025-11-26Imported 2026-05-15Source ↗Reported; not reproduced
Qwen3-VL-8B-Instruct896.0Not recordedVersion not recorded2025-11-26Imported 2026-05-14Source ↗Reported; not reproduced
Qwen3.5-397B-A17B931.0Not recordedVersion not recorded2026-02-16Imported 2026-05-18Source ↗Reported; not reproduced
Qwen3.6-27B894.0Not recordedVersion not recorded2026-04-21Imported 2026-05-18Source ↗Reported; not reproduced
Qwen3.6-35B-A3B900.0Not recordedVersion not recorded2026-04-21Imported 2026-05-18Source ↗Reported; not reproduced
SenseNova-U1-A3B-MoT919.0Not recordedVersion not recorded2026-05-12Imported 2026-05-18Source ↗Reported; not reproduced
VideoLLaMA3 2B779.0Not recordedVersion not recorded2025-01-22Imported 2026-05-18Source ↗Reported; not reproduced
VideoLLaMA3 7B828.0Not recordedVersion not recorded2025-01-22Imported 2026-05-18Source ↗Reported; not reproduced
ZAYA1-VL-8B798.0Not recordedVersion not recorded2026-05-08Imported 2026-05-18Source ↗Reported; not reproduced

textvqa · accuracy

ModelReported valueProtocol / versionResult / import dateEvidence
Qwen2-VL-72B84.9Not recordedVersion not recordedNot recordedImported 2026-04-20Source not resolvedReported; not reproduced
Qwen2.5-VL-72B85.5Not recordedVersion not recordedNot recordedImported 2026-04-20Source 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

Make the choice practical.

Choose OCR for Python →

Start with the output your application consumes, then test complete pipelines on representative files.

Original OCR archive ↗ · PaddleOCR vs Tesseract · PaddleOCR vs EasyOCR

04 / Coverage, honestly

What we can prove. What comes next.

Document parsing / ParseBench

Evaluator and dataset revisions pinned. Local pipeline adapter and validation still required; no CodeSOTA scores.

Integration plan →

Broader OCR & document tasks

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 →

Test your real workload

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 →

Inspectable by people and agents.

OCR catalogue API · Task ontology · OpenAPI

Feedback about this page

Saved privately with this page URL. Do not include passwords or personal data. Network identities used for spam limits are hashed; raw IP addresses are not stored with feedback.