Every PDF element, scored honestly.
OmniDocBench is the Shanghai AI Laboratory benchmark for end-to-end PDF document parsing. It grades text extraction, table structure, formula recognition and layout on the same page — which is why it decides who ships into an accounts-payable pipeline and who does not.
Composite score, ranked.
The headline OmniDocBench score: ((1 − TextEditDist)·100 + TableTEDS + FormulaCDM) / 3. (higher is better)
| # | Model | Composite score | Verified | Source |
|---|---|---|---|---|
| 01 | GLM-OCR Fetched from CodeSOTA API on 2026-04-20 | 94.62 | — | codesota-api |
| 02 | PaddleOCR-VL-1.5 Fetched from CodeSOTA API on 2026-04-20 | 94.50 | — | codesota-api |
| 03 | Qianfan-OCR Fetched from CodeSOTA API on 2026-04-20 | 93.12 | — | codesota-api |
| 04 | paddleocr-vl Fetched from CodeSOTA API on 2026-04-20 | 92.86 | — | codesota-api |
| 05 | paddleocr-vl-0.9b Fetched from CodeSOTA API on 2026-04-20 | 92.56 | — | codesota-api |
| 06 | mineru-2.5 Fetched from CodeSOTA API on 2026-04-20 | 90.67 | — | codesota-api |
| 07 | Gemini 3 Pro Fetched from CodeSOTA API on 2026-04-20 | 90.33 | — | codesota-api |
| 08 | Dolphin-v2 Fetched from CodeSOTA API on 2026-04-20 | 89.78 | — | codesota-api |
| 09 | qwen3-vl-235b Fetched from CodeSOTA API on 2026-04-20 | 89.15 | — | codesota-api |
| 10 | monkeyocr-pro-3b Fetched from CodeSOTA API on 2026-04-20 | 88.85 | — | codesota-api |
| 11 | ocrverse-4b Fetched from CodeSOTA API on 2026-04-20 | 88.56 | — | codesota-api |
| 12 | dots-ocr-3b Fetched from CodeSOTA API on 2026-04-20 | 88.41 | — | codesota-api |
| 13 | gemini-25-pro Fetched from CodeSOTA API on 2026-04-20 | 88.03 | — | codesota-api |
| 14 | MonkeyOCR-3B Fetched from CodeSOTA API on 2026-04-20 | 87.13 | — | codesota-api |
| 15 | qwen25-vl Fetched from CodeSOTA API on 2026-04-20 | 87.02 | — | codesota-api |
| 16 | MonkeyOCR-pro-1.2B Fetched from CodeSOTA API on 2026-04-20 | 86.96 | — | codesota-api |
| 17 | PP-StructureV3 Fetched from CodeSOTA API on 2026-04-20 | 86.73 | — | codesota-api |
| 18 | DeepSeek-OCR Fetched from CodeSOTA API on 2026-04-20 | 86.46 | — | codesota-api |
| 19 | Nanonets-OCR-s Fetched from CodeSOTA API on 2026-04-20 | 85.59 | — | codesota-api |
| 20 | MinerU2-VLM Fetched from CodeSOTA API on 2026-04-20 | 85.56 | — | codesota-api |
| 21 | Dolphin-1.5 Fetched from CodeSOTA API on 2026-04-20 | 85.06 | — | codesota-api |
| 22 | InternVL3.5-241B Fetched from CodeSOTA API on 2026-04-20 | 82.67 | — | codesota-api |
| 23 | olmOCR-7B Fetched from CodeSOTA API on 2026-04-20 | 81.79 | — | codesota-api |
| 24 | POINTS-Reader Fetched from CodeSOTA API on 2026-04-20 | 80.98 | — | codesota-api |
| 25 | InternVL3-76B Fetched from CodeSOTA API on 2026-04-20 | 80.33 | — | codesota-api |
| 26 | mistral-ocr-3 Fetched from CodeSOTA API on 2026-04-20 | 79.75 | yes | codesota-api |
| 27 | mistral-ocr-2512 Fetched from CodeSOTA API on 2026-04-20 | 79.75 | yes | codesota-api |
| 28 | MinerU2-pipeline Fetched from CodeSOTA API on 2026-04-20 | 75.51 | — | codesota-api |
| 29 | GPT-4o Fetched from CodeSOTA API on 2026-04-20 | 75.02 | — | codesota-api |
| 30 | OCRFlux-3B Fetched from CodeSOTA API on 2026-04-20 | 74.82 | — | codesota-api |
| 31 | Dolphin Fetched from CodeSOTA API on 2026-04-20 | 74.67 | — | codesota-api |
| 32 | Marker 1.8.2 Fetched from CodeSOTA API on 2026-04-20 | 71.30 | — | codesota-api |
| 33 | clearocr-teamquest Fetched from CodeSOTA API on 2026-04-20 | 31.70 | yes | codesota-api |
Table TEDS, ranked.
Tree Edit Distance score on table structure recognition. (higher is better)
| # | Model | Table TEDS | Verified | Source |
|---|---|---|---|---|
| 01 | paddleocr-vl Fetched from CodeSOTA API on 2026-04-20 | 93.52 | — | codesota-api |
| 02 | Qianfan-OCR Fetched from CodeSOTA API on 2026-04-20 | 91.02 | — | codesota-api |
| 03 | mistral-ocr-3 Fetched from CodeSOTA API on 2026-04-20 | 70.88 | yes | codesota-api |
| 04 | clearocr-teamquest Fetched from CodeSOTA API on 2026-04-20 | 0.800 | yes | codesota-api |
Formula CDM, ranked.
Character-level match score on formula recognition. (higher is better)
| # | Model | Formula CDM | Verified | Source |
|---|---|---|---|---|
| 01 | Qianfan-OCR Fetched from CodeSOTA API on 2026-04-20 | 92.43 | — | codesota-api |
Layout mAP, ranked.
Mean Average Precision on layout detection. (higher is better)
| # | Model | Layout mAP | Verified | Source |
|---|---|---|---|---|
| 01 | mineru-2.5 Fetched from CodeSOTA API on 2026-04-20 | 97.50 | — | codesota-api |
Reading-order score, ranked.
Agreement with ground-truth reading order of page regions. (higher is better)
| # | Model | Reading-order score | Verified | Source |
|---|---|---|---|---|
| 01 | mistral-ocr-3 Fetched from CodeSOTA API on 2026-04-20 | 91.63 | yes | codesota-api |
| 02 | clearocr-teamquest Fetched from CodeSOTA API on 2026-04-20 | 86.04 | yes | codesota-api |
Text edit distance, ranked.
Normalised edit distance on full-page text extraction. (lower is better)
| # | Model | Text edit distance | Verified | Source |
|---|---|---|---|---|
| 01 | mistral-ocr-3 Fetched from CodeSOTA API on 2026-04-20 | 0.099 | yes | codesota-api |
| 02 | clearocr-teamquest Fetched from CodeSOTA API on 2026-04-20 | 0.154 | yes | codesota-api |
OCR edit distance, ranked.
Character-level edit distance for raw OCR. (lower is better)
| # | Model | OCR edit distance | Verified | Source |
|---|---|---|---|---|
| 01 | gpt-4o Fetched from CodeSOTA API on 2026-04-20 | 0.020 | — | codesota-api |
Formula edit distance, ranked.
Edit distance on formula recognition. (lower is better)
| # | Model | Formula edit distance | Verified | Source |
|---|---|---|---|---|
| 01 | mistral-ocr-3 Fetched from CodeSOTA API on 2026-04-20 | 0.218 | yes | codesota-api |
| 02 | clearocr-teamquest Fetched from CodeSOTA API on 2026-04-20 | 0.902 | yes | codesota-api |
Text edit (vendor variant), ranked.
Edit-distance variant reported by some vendor submissions. (lower is better)
| # | Model | Text edit (vendor variant) | Verified | Source |
|---|---|---|---|---|
| 01 | Qianfan-OCR Fetched from CodeSOTA API on 2026-04-20 | 0.041 | — | codesota-api |
Composite = text + table + formula.
The headline OmniDocBench score is a composite defined by its authors as ((1 − TextEditDist) · 100 + TableTEDS + FormulaCDM) / 3. Each component tracks a different axis of parsing accuracy, so a model that aces tables but mangles formulas cannot win on the headline.
Secondary metrics tracked here: table-teds (tree edit distance on table recognition), formula-cdm (formula character-level match), layout-map (mean average precision on layout detection), and text-edit-distance / ocr-edit-distance (lower is better for edit distances). Every reported score is preserved verbatim from the submission.
A cross-section of real document wild-type.
OmniDocBench was released by Shanghai AI Laboratory as a comprehensive benchmark for evaluating PDF document parsing across diverse document types with multi-level annotations. It is the reference bench most open-source document parsers and vendor OCR APIs now report on.
The upstream leaderboard and test split live on alphaXiv. Per-row sources on the tables above link back to the submitting paper or vendor statement.
Reported, then reproduced.
Every row above is imported from the canonical benchmarks.json. Open-weight models are re-executed against the OmniDocBench test split through the CodeSOTA harness; closed APIs are run through the vendor endpoint with the model version and access date recorded. Rows marked “verified” have been independently reproduced, not taken from press release.
For the full reproduction policy, see the Codesota methodology.