Benchmarks¶
Every score, document by document
Per-page and per-table scores for all three systems are in results/, and the scripts that ran them in research/benchmarks/.
Three systems on the same documents with the same requests (November 2026):
- Reducto r-1: Reducto's hosted API, default settings.
- Model only (Haiku 5.5): ReadAnyDoc's
model-onlyprofile: one Claude Haiku 5.5 read per page, nothing else. - Engine (Haiku 5.5): ReadAnyDoc's
engineprofile, the default. A test intests/test_pipeline.pychecks that the shipped profiles are exactly the configurations measured here.
Every score comes from the benchmark's own grader or a deterministic script; no model judges the output. 95% confidence intervals are bootstrap intervals over documents; "paired" differences resample the same documents for both systems. Pages used while developing ReadAnyDoc are reported separately as "the sample"; the headline numbers hold on the pages never seen during development.
Results¶
| Benchmark | Measure | Reducto r-1 | Model only | Engine |
|---|---|---|---|---|
| olmOCR-bench, 1,403 pages | official score, % | 80.9 | 82.2 | 84.2 |
| multi-column | 65.6 | 79.8 | 81.0 | |
| long tiny text | 84.2 | 93.2 | 93.9 | |
| headers and footers | 90.1 | 70.4 | 81.2 | |
| old scans | 49.0 | 47.5 | 50.4 | |
| tables | 92.7 | 91.7 | 92.2 | |
| OmniDocBench, 1,651 pages | text edit distance (lower is better) | 0.095 | 0.081 | 0.081 |
| table TEDS, % | 87.9 | 85.4 | 87.0 | |
| reading-order edit distance (lower) | 0.161 | 0.167 | 0.170 | |
| formula edit distance (lower) | 0.133 | 0.158 | 0.156 | |
| layout: block type right, % | 84.6 | 55.6 | 78.3 | |
| layout: block found at IoU >= 0.5, % | 67.2 | 26.5 | 61.1 | |
| RD-TableBench, 1,000 tables | Reducto's own table score | 88.85 | 88.20 | 88.17 |
| FUNSD, 199 forms | question/answer links found, % | 78.6 | 71.6 | 77.4 |
| LongExtract, 10 long documents | table rows extracted, % | 53.9 | 75.4 | 75.9 |
What the differences mean, using the paired intervals:
- The engine against one model read: clearly better on layout (+23 points block types, +35 boxes found), forms (+5.8), headers and footers (+11) and the olmOCR overall score (+2.0); level on tables, plain text and long extraction. The engine costs about 2-3x as much per page.
- The engine against Reducto: ahead on olmOCR (+3.3; multi-column and small print), on OmniDocBench text and on long extraction; level on RD-TableBench and FUNSD (differences inside the intervals); behind on layout (-6), formulas, header and footer removal, and speed.
Cost and speed¶
| Reducto r-1 | Model only | Engine | |
|---|---|---|---|
| Cost per page | $0.010 (list price) | $0.001-0.002 | $0.003-0.005 |
| Seconds per page (median, tables) | 4 | 8 | 20-50 |
ReadAnyDoc costs are Anthropic API charges measured on these runs. Scanned pages with tables and handwritten pages cost more (up to about $0.03 a page on handwriting, which goes to Sonnet 5.5).
Method and caveats¶
- Same input files and same request to every system. Reducto was called through its public API in November 2026.
- olmOCR-bench is scored with its official
benchmark.py; RD-TableBench with Reducto's published grading code; OmniDocBench and FUNSD with scripts that apply the benchmark's definitions to each system's blocks; LongExtract counts expected table rows found in the extraction result. - LongExtract ran on the 10 shortest documents of the set for all three systems; Reducto alone ran on 32.
- Between 1.5% and 3% of pages in these sets came back empty from Claude because the provider declined to return
their text (content filtering). They are scored as empty, which lowers both ReadAnyDoc columns; the response
reports them in
warnings. - Only Claude Haiku 5.5 (with Sonnet 5.5 for handwriting) was measured. Other models work with ReadAnyDoc; their accuracy is unknown until measured.
- Other parsers (Mistral OCR, LlamaParse and so on) were not run.
- Benchmark data is not redistributed here; each benchmark's own license applies. The scripts that ran these
numbers are in
research/(see research/README.md).