FlowParse
Guide August 2026 20 min read

How to benchmark document extraction tools

Every extraction vendor publishes an accuracy number, and almost none of them are comparable to each other. This is a method for testing accuracy yourself, on your own documents, using checks a vendor can't grade its own homework on.

FlowParse
flowparse.io
flowparse.iosound off is fine
0:00 / 0:00

Every vendor's number is unfalsifiable

Search for any document extraction tool and you'll find an accuracy percentage on the homepage, usually a confident one, and almost never with the test set, the ground truth, or the methodology attached. That's not necessarily dishonest — it's just a number you have no way to check, measured on documents you'll never see, under conditions nobody outside the vendor can verify.

This guide is the alternative: a method for testing accuracy yourself, on your own real documents, that produces a result you actually trust because you watched it happen. It doesn't require trusting anyone's claim — including ours.

None of what follows requires a data science background or special tooling. The method is deliberately simple enough to run with a spreadsheet and a stopwatch — the value comes from doing it consistently and on the right documents, not from anything sophisticated about the technique itself.

It also works regardless of which tools end up on your shortlist. Whether you're comparing purpose-built financial extraction tools, general-purpose document APIs, or a general AI chat model used casually, the same nine steps apply — real documents, a decision on what correct means made before testing, and a completeness check that doesn't depend on trusting anyone's claim.

Why a vendor's own benchmark can't be trusted blindly

It isn't that vendors lie about their numbers. It's that a benchmark run by the party being benchmarked has an unavoidable incentive problem — the test set gets chosen, tuned and reported by someone whose business depends on the result looking good. Even with entirely good intentions, that's a hard position to test objectively from.

Who runs the testWhat it tells you
The vendor, on their own test setHow the tool did on documents chosen and graded by the party selling it
A third-party benchmark siteHow it did on a fixed, shared set — better, but still not your documents
You, on your own documentsWhether it works on the actual thing you'd be running through it every day
FlowParse
flowparse.io

This isn't unique to document extraction — it's the same reason a car's advertised fuel economy and a phone's advertised battery life rarely match real-world use exactly. The manufacturer isn't lying; the test conditions were simply chosen by the party with the most reason to want a good result. Document extraction accuracy claims have the same structural shape, and deserve the same healthy skepticism.

Three decisions before you start

What documents actually represent your real workload

Not your cleanest examples — the ones with the layouts, scan quality and formats you'll genuinely feed the tool every week.

What 'correct' means for your test

Field-level accuracy against a known answer, completeness against the document's own arithmetic, or both — fixed in advance.

Who runs the test, and whether they'll see the result before it's final

A test designed and scored by someone with a stake in a specific outcome tends to find what it's looking for.

FlowParse
flowparse.io

The nine steps

1

Gather twenty to thirty real documents, including your worst ones

Actual documents from your own workflow — not clean demo PDFs — deliberately including your hardest scans and least standard layouts.

2

Decide what 'correct' means before you run anything

Field-level accuracy against a known answer, or completeness against the document's own arithmetic, or both — decided in advance so the test isn't graded after the fact to favour a result.

3

Run every tool on the exact same document set

The same documents, in the same order, with no cherry-picking a tool's easier subset after seeing how the others performed.

4

Test completeness using the document's own arithmetic

Where a document carries a self-contained proof — a bank statement's opening and closing balance, an invoice's line-item total — check the extracted output against it, no answer key required.

5

Deliberately break each tool's assumptions

A multi-account statement, a foreign currency, an unusual date format, a scanned photo taken at an angle — the cases that actually separate tools in practice.

6

Time the full workflow, not just the extraction call

Upload, extraction, review of anything flagged, and export — the real time cost includes all of it, not only the fastest-looking step.

7

Check how each tool reports a failure

A silent wrong answer is worse than a loud correct refusal — note whether a tool tells you when it's uncertain or simply guesses without saying so.

8

Test the export step against your real destination

Whatever your documents actually need to become — an accounting import, a spreadsheet, a downstream API — confirm the output actually works there, not just that a file was produced.

9

Run the whole test again on a second, independent document set

A single run can be a coincidence in either direction. A second set, ideally chosen by someone who didn't see the first result, confirms whether the difference is real.

FlowParse
flowparse.io

Scoring a run without a labelled answer key

Building a ground-truth answer key by hand for every field on thirty documents is real work, and most teams evaluating a tool don't have days to spend on it. The good news is that a large share of what actually matters can be tested without one, using arithmetic the document itself already provides.

A bank statement prints an opening balance and a closing balance. Sum the extracted transactions, add the opening balance, and check the result against the printed closing balance — if it matches, the extraction is provably complete on that document, no answer key required. An invoice's line items should sum to its printed total; the same principle applies.

FlowParse
flowparse.io

This doesn't replace field-level accuracy checking entirely — it won't catch a category that's simply wrong while the total still balances — but it catches a specific, dangerous class of failure (missing or duplicated rows) that field spot-checking routinely misses, and it does it for free.

Where a document doesn't carry this kind of built-in arithmetic — a card statement with no running balance, a contract with no numeric total — completeness has to be checked a different way: count the number of line items or transactions a careful manual read of the source finds, and compare it to how many the tool actually returned. It's slower than an arithmetic check, but it's the same underlying question, asked the only way that document allows.

A real proof of concept, run three ways

A finance team evaluating extraction tools for a switch away from manual entry ran the same thirty bank statements through three candidates: a general-purpose OCR API, a specialised financial extraction tool, and a general AI chat model given the same PDFs one at a time.

ToolBalanced (opening + txns = closing)Needed manual correction
General OCR API22 of 308 statements needed re-checking against source
General AI chat model, one PDF at a time24 of 30Longer statements truncated without warning
Specialised financial extraction tool29 of 301 statement flagged and correctly held for review

The most useful result wasn't the ranking itself — it was that the specialised tool's one failure came with a flag naming the exact problem, while the other two tools' failures were only discovered because the team happened to check the arithmetic afterward. Knowing you have a problem is worth almost as much as not having one.

FlowParse
flowparse.io

It's worth noting what this test didn't settle. The general OCR API and the chat model each had genuine strengths outside this specific scenario — broader document-type coverage in the first case, flexibility for one-off questions in the second. A narrow benchmark on one document family tells you which tool fits that family best, not which tool is best overall, and a good evaluation keeps that distinction explicit rather than letting one result stand in for a broader claim it was never designed to support.

Common mistakes

Testing with clean, easy demo documents

Every reasonable tool handles a clean, well-formatted PDF well. The differences that matter only show up on the hard, real documents you actually receive.

Only checking field accuracy, never completeness

A tool can be excellent at reading correctly and still silently drop rows — field accuracy alone has no way to notice absence.

Letting each vendor pick their own test documents

This measures each vendor's best case, not a comparable result across tools.

Stopping the test at extraction, never checking export

A tool that extracts beautifully but produces a file your accounting software can't import hasn't actually solved your problem.

Running the test only once

A single run can be a coincidence. Extraction quality can vary meaningfully across documents even for the same tool.

FlowParse
flowparse.io

Best practices

Test with your own documents, deliberately including the hardest ones you actually receive.

Decide what counts as correct before running any tool, not after seeing the results.

Use each document's own arithmetic as a free, objective completeness test wherever it's available.

Score how failures are reported, not just how rare they are.

Run the test at least twice, on independent document sets, before trusting the result.

Building a test set that won't flatter anyone

A good test set is boring to assemble and disproportionately valuable once it exists. Pull the last three months of whatever documents you actually process — not a curated highlight reel, the real inbox — and set aside twenty to thirty that cover your genuine range: your best-formatted statements, your worst scans, your most unusual layout, anything with more than one currency or account.

Resist the temptation to swap out a document because it seems “unfairly hard” for a tool — that document is exactly the reason you're testing. If it's part of your real workload, it belongs in the set regardless of which tool it happens to embarrass.

FlowParse
flowparse.io

A useful sanity check once the set is assembled: if you showed it to someone on your team who hasn't been involved in the evaluation and asked whether it looks like a normal month of documents, the honest answer should be yes. A set that looks unusually clean, or unusually hard, in either direction has drifted from representing your real workload — and a benchmark built on a set that isn't representative answers a question you didn't actually ask.

The edge cases that actually matter

Edge caseWhat it tests
A scanned or photographed documentWhether OCR quality holds up, not just clean-PDF text extraction
A statement with several accounts in one fileWhether the tool understands account boundaries or chains everything together incorrectly
An unusual date format or a foreign currencyWhether locale assumptions are hard-coded or genuinely handled
A document that prints a balance once per day, not per rowWhether completeness checks accumulate correctly across gaps
A genuinely long documentWhether length causes silent truncation, especially in a general chat-model workflow

None of these are exotic scenarios — they're the ordinary shape of a real document workload. A tool that only gets tested on the easy 80% will have its weaknesses discovered by your business, in production, instead of by you, during the trial.

A practical way to prioritise, if time is short: rank your own document set by how often each edge case actually appears in your real inbox, and test in that order. A layout you see once a year deserves a note, not necessarily a full test cycle. A layout you see every week deserves to be the very first thing you check, because that's where a weakness will cost the most time if it turns out to exist.

Testing completeness, not just correctness

Field-level accuracy and completeness are genuinely different properties, and conflating them is the single most common gap in an informal benchmark. A tool can return every field it did extract with total correctness while quietly failing to extract several rows — every returned field passes a spot-check, and the missing rows are simply invisible to that check.

FlowParse
flowparse.io

Testing completeness doesn't require sophisticated tooling — it requires picking documents that carry their own arithmetic and actually running the check, which most informal evaluations skip simply because nobody thought to ask the question.

It also changes how you should read a vendor's own accuracy claim once you understand the distinction. A claim like “99% field accuracy” is a real, checkable statement about individual fields, and it is silent, entirely, on completeness — a vendor reporting that number in good faith may simply never have measured the other question at all, not because they're hiding something, but because most published benchmarks in this space were never built to ask it.

Timing the whole workflow, not just the call

A tool's API response time is one number; the time your team actually spends per document is a different and more important one. It includes uploading, waiting for the result, reviewing anything flagged, correcting what needs correcting, and exporting — and a tool that's fast on the extraction call but produces output nobody trusts without a full manual re-check hasn't actually saved time.

FlowParse
flowparse.io

Don't stop testing at extraction

Extraction is the step every vendor demos. The export is the step that determines whether the tool actually fits your workflow, and it's tested far less often — try exporting into whatever your real destination is, an accounting import format, a downstream API, a specific spreadsheet template, and confirm it actually works there rather than assuming a structured output is automatically compatible.

FlowParse
flowparse.io

How failures are reported matters as much as how often

Two tools with an identical failure rate are not equivalent if one names the failure and the other doesn't. A tool that flags “this row is uncertain, please check it” hands you a short, specific review task. A tool that silently returns a plausible-looking wrong answer hands you nothing — you find out only when something downstream doesn't add up, usually much later and at a worse time to fix it.

FlowParse
flowparse.io

When comparing tools, deliberately note not just whether each one failed on a given document, but whether it told you it had.

A scorecard template you can reuse

A scorecard doesn't need to be complicated to be useful. A handful of columns, filled in per tool per document, makes the comparison legible instead of a vague impression everyone remembers slightly differently a week later.

ColumnWhat it captures
Document and edge case testedWhich of your real documents, and which specific challenge it represents
Balanced against its own arithmeticPass or fail on the completeness test, where applicable
Flagged its own uncertaintyWhether the tool told you about a problem, or you had to find it yourself
Manual correction neededWhat, specifically, had to be fixed by hand before the output was usable
Time from upload to usable exportThe real workflow cost, not just the extraction call's response time

Five columns, filled in consistently across every tool and every document, usually make the real difference between candidates obvious well before the last document in the set.

Keep the completed scorecard even after the decision is made. Six months in, when someone asks why a particular tool was chosen — or when the same evaluation needs repeating at renewal time — the raw scorecard answers the question directly, without anyone having to reconstruct the reasoning from memory or a slide deck that's since been lost.

Red flags in how a vendor talks about accuracy

A single percentage with no methodology attached

Accurate compared to what, measured how, on what documents — a number with none of those answered is closer to marketing than to evidence.

Reluctance to run a trial on your own documents

A tool confident in its own accuracy should welcome a test on real, hard cases rather than steering you toward its own demo set.

No distinction between confidence and correctness

A vendor that presents a model's self-reported confidence as if it were a measured accuracy figure is presenting an opinion as a fact.

No mention of what happens when extraction fails

Every extraction tool fails on some documents. One that doesn't discuss what a failure looks like hasn't been asked the harder question yet.

Why one test run is never enough

A single run, even a careful one, can be misleading in either direction — a tool might have an unusually good or unusually bad day on your particular thirty documents for reasons that have nothing to do with its typical performance. Running the same method again on a second, independent set of your real documents is what turns a promising first impression into a result you can actually act on.

FlowParse
flowparse.io

This doesn't need to mean doubling the entire evaluation effort. A second run of ten to fifteen documents, assembled independently rather than reused from the first set, is usually enough to confirm or complicate a first impression without turning the evaluation into a second full project.

If a second run tells a materially different story than the first, that disagreement is itself useful information — it usually means the difference between the tools is smaller than either run alone suggested, which changes how much weight accuracy alone should carry in the final decision.

What to do with the result

A completed benchmark rarely produces a single obvious winner across every dimension — more often it produces a clear picture of trade-offs: one tool is more accurate on your hardest documents, another is meaningfully cheaper at your real volume, a third has an export format that fits your accounting system perfectly. Deciding which trade-off matters most is a business call the benchmark informs; it doesn't make the call for you.

For a structured way to weigh those trade-offs alongside accuracy — pricing, support, compliance, integration effort — see vendor evaluation for procurement teams. And if part of your test included a general AI chat model as a candidate, the specific gaps that tend to show up are detailed in FlowParse vs ChatGPT, Claude and Gemini for bank statements.

FlowParse
flowparse.io

Whatever the outcome, resist the pressure to compress the whole result into a single winner for a slide. The trade-offs the benchmark surfaced are real information, and flattening them into one recommendation loses exactly the nuance that made running a careful test worth the effort in the first place.

Frequently asked questions

Include FlowParse in your test

Upload your hardest real statement and see the balance-gate result for yourself — no signup required.

Keep reading