Benchmax

Benchmark · 10 documents · gold v3

PDF extraction

Schema-guided extraction on an attributed ExtractBench subset: ten documents, gold adjudicated in the open.

Measures Value F1 per document: every gold cell matched or not after date normalization, repeated records aligned by content, extra rows penalized. 0 to 1, no partial credit per cell.
Cases 10 documents finance 2 · energy 1 · government 2 · real estate 1 · automotive 1 · healthcare 1 · supply chain 1 · legal 1 7 short · 2 medium · 1 long · 8 real, 2 synthetic
Gold v3 · adjudicated 4 disputes accepted, 9 cells changed · 2026-09-07
Systems 4 on the board Coding agents as extractors · restricted document reader
How sure Top system ranges 0.964 to 1.000 across documents. With 10 documents, one document moves a mean by up to 0.10. Read the matrix, not just the mean.
Last change 2026-09-07

Results · value f1 on gold v3

Mean over the documents that have gold. A timeout or error counts as 0; a document without gold is coverage, never a score. Light dot: gold v1. Dark dot: gold v3 after every accepted dispute.

0.00 0.25 0.50 0.75 1.00 Codex · GPT-5.6 Sol · medium effort gold v1: 0.958 gold v3: 0.989 0.989 Codex · GPT-6 Astra · medium effort gold v1: 0.863 gold v3: 0.894 0.894 1 timeout Claude Code · Claude Opus 5 · medium effort gold v1: 0.871 gold v3: 0.887 0.887 Claude Code · Claude Sonnet 5 · medium effort gold v1: 0.852 gold v3: 0.881 0.881 1 timeout
gold v1 gold v3
System Mean · v3 · v1 Graded Complete Timeouts Median time Cost
Codex · GPT-5.6 Sol · medium effort
codex-cli 0.153.4 · code execution on
0.989 0.958 10 / 10 9 / 10 0 59s unknown
Codex · GPT-6 Astra · medium effort
codex-cli 0.153.4 · code execution on
0.894 0.863 9 / 10 9 / 9 1 43s unknown
Claude Code · Claude Opus 5 · medium effort
2.1.263 (Claude Code) · reader only
0.887 0.871 10 / 10 9 / 10 0 30s unknown
Claude Code · Claude Sonnet 5 · medium effort
2.1.263 (Claude Code) · reader only
0.881 0.852 9 / 10 9 / 9 1 38s unknown

What was fixed in the gold

4 disputes accepted, 9 gold cells changed. Earlier labels stay as earlier versions; every saved output was regraded against each. Nothing was rerun.

Every document, every system

Click a cell to see the field-by-field comparison against the page. Striped cells are timeouts; the ⚠ marks a submission with fewer rows than gold.

Changes

Run it on your documents

Fork this benchmark, add your PDFs, run any system, confirm gold from the page. Nothing leaves your machine.

pip install benchmax
benchmax init my-pdf-extraction --from pdf-extraction
cd my-pdf-extraction && benchmax add ./my-pdfs
benchmax run --target extract.py:extract
benchmax serve

Fix this benchmark

Think a label is wrong? Open the document, click the field, and file a dispute with the page evidence. Accepted disputes become a new gold version and every saved output is regraded, never rerun.

Dispute a label Add a document or a system