13 October 202612 min readModel landscape

How to benchmark OCR models on your own documents: a 200-page gold set, a fair harness, and the metrics that map to money

TL;DR

  • The only benchmark that predicts your extraction accuracy is one run on your own pages. Public leaderboards tell you which models are worth testing; they do not tell you how many of your invoices will need a human.
  • Build a 200-page gold set stratified by document family, difficulty and language. Below about a hundred pages, the differences you see between models are mostly noise.
  • Label from the page image, never from the ERP. Double-label one page in five and record the agreement rate — it is the ceiling any model can reach, and it belongs in the report.
  • Report per-field accuracy and the document-level straight-through rate per family, not one blended number. Straight-through rate sets the size of the human review queue and therefore the real cost per page.
  • Resolution mismatch is the single most common reason a local model “loses” to an API in an internal test. Same image, same prompt, same normalizer, same retry policy, for every model.

Questions people ask

How do I benchmark OCR models on my own documents?
Write a schema per document family with fields, types and match tolerances. Assemble 200 stratified pages from at least three months, split into a tuning half and a held-out half, and label them from the image. Shortlist three to five models including a Tesseract baseline. Build a harness that gives every model the same input and scores every output the same way, then decide by straight-through rate per family.
How many pages do I need to benchmark a document model?
Two hundred, stratified by family, difficulty and language, is the floor. It is the smallest set that gives a usable per-family read and can still be labeled by one person in a few days. Below about a hundred pages the differences between models are mostly noise, and twenty pages cannot separate two models at all — the gap between 17 and 18 correct is one page. Larger is better once the harness works.
What is straight-through rate in document processing?
The straight-through rate is the share of documents where every required field is correct within its tolerance, so the document can be posted without a person touching it. It is the most useful number in a document AI benchmark because it sets the size of the human review queue. Report it per family; a blended figure is dominated by your easiest template. Pair it with the human-touch rate at your confidence threshold.
Why do public OCR leaderboards not predict accuracy on my documents?
Four reasons. Your pages are dominated by a handful of supplier templates plus a long tail, while public sets are deliberately diverse. Latvian diacritics, Norwegian ø, German ß and mixed-language pages are thinly represented. Faxed, stamped and phone-photographed pages are the failure mass in real queues and a minority in public sets. And popular public datasets end up in training data, so a score on them is not a prediction.
How do I compare a local model with OpenAI or Anthropic fairly?
Send the same rasterized page at the same resolution to every model, with the same prompt and schema byte for byte, the same normalizer and the same retry policy. Run each model at least twice and report the mean. Record the model identifier and date, because API models drift between quarters. Price API cost from tokens at list price and local cost from measured GPU-hours, and record whether the pages left the EU.
What mistakes invalidate an OCR benchmark?
Tuning the prompt while looking at held-out scores, which turns the test set into a training set. Reporting the best of five runs or only the family where your preferred model won. Feeding models different image resolutions. Penalizing “01.10.2026” against “2026-10-01”, which is a normalizer bug reported as a model error. Taking ground truth from the ERP instead of the page. Sets under 200 pages. A benchmark you cannot re-run in an hour.

Want this worked out on your documents?

We will price a real sample against OpenAI or Anthropic and tell you whether Local document models or a local model on your hardware is the cheaper first step.