AI Demos Research — the structured-intelligence platform. Every verdict on these pages opens to the execution behind it.
Graded 3 November 2026

Can Landing AI turn a clean scan into accurate text?

Landing AI extracted the same values from a scanned invoice as from its digital original. Eight of nine fields were identical, including three line items; the currency was expressed differently but meant pounds sterling in both.

1 of 1 test case passed

Every test case in this scenario has a result.

Pass rate100%1 of 1 gradable
Coverage1 of 1test case with a result
1PassDid everything it was expected to do.
0FailNo test case failed.
0Not gradableEvery result here could be graded.
0UntestedEvery test case in this scenario has a result.
The pass rate is a summary. The evidence is the test case below: what we sent, what we checked, what the tool returned, and the proof.

The test case

Each test case is judged on its own: Pass, Fail, Not gradable, or Untested. The scenario result above is based on this test case.

Image-only twin, same schemaPassEvidence
What we sent
Input 1File (JSON)
Schema for both invoice runs
JSON
{
  "type": "object",
  "properties": {
    "invoice_number": { "type": "string", "description": "The invoice number" },
    "bill_to": { "type": "string", "description": "Who the invoice is billed to" },
    "site": { "type": "string", "description": "The site the hire is for" },
    "hire_period": { "type": "string", "description": "The hire period" },
    "currency": { "type": "string", "description": "The currency of the amounts" },
    "subtotal": { "type": "string", "description": "The subtotal amount before tax" },
    "tax": { "type": "string", "description": "The tax amount" },
    "total_due": { "type": "string", "description": "The total amount due on the invoice" },
    "line_items": {
      "type": "array",
      "description": "Every line item in the invoice table",
      "items": {
        "type": "object",
        "properties": {
          "description": { "type": "string", "description": "The description of the line item" },
          "quantity": { "type": "string", "description": "The quantity of the line item" },
          "unit_price": { "type": "string", "description": "The unit price of the line item" },
          "amount": { "type": "string", "description": "The amount of the line item" }
        }
      }
    }
  }
}
Open the JSON file ↗
Input 2Document (PDF)
Digital invoice with readable text layer
Open the PDF ↗
Input 3Document (PDF)
Scanned twin with no text layer
Open the PDF ↗
What the tool returned
JSON
"invoice_number": "TPH-3301",
"bill_to": "Oakbridge Construction Ltd",
"site": "Oakbridge Depot Extension",
"hire_period": "03 Mar - 10 Mar 2026",
"currency": "£",
"subtotal": "£1,462.00",
"tax": "£292.40",
"total_due": "£1,754.40",

Digital output for the same invoice

Copied from Output file 1 (JSON), lines 2–9

Open the JSON file ↗
Key momentsline 6
JSON
"invoice_number": "TPH-3301",
"bill_to": "Oakbridge Construction Ltd",
"site": "Oakbridge Depot Extension",
"hire_period": "03 Mar - 10 Mar 2026",
"currency": "GBP",
"subtotal": "£1,462.00",
"tax": "£292.40",
"total_due": "£1,754.40",

Twin output with the currency notation gap

Copied from Output file 2 (JSON), lines 2–9

Open the JSON file ↗
Key momentsline 6
Expected vs. Found
✓Expected: The scanned and digital documents should produce the same values.Found: Eight of nine fields were identical, including all three line items. The digital result used £ for currency; the scanned result used GBP.
Supporting proof
Proof 1Screenshot
Digital results screenshot and schema
Open original ↗
Proof 2Screenshot
Twin results screenshot and schema
Open original ↗
Why this result

The scan needed to yield the same values as the digital invoice. It did: the only difference was currency notation, with both forms meaning pounds sterling. The schema did not prescribe a currency format, so that difference does not prevent a pass.

Tested by Rugved Nichite · evidence dated 27 October 2026

Configuration and setup

How this tool was set up for the run and what the test needed in place. Each row is a fact from the run's records; a fact the records do not hold is left out, not guessed.

Software that produced the output
Landing AI
Build or version
DPT-3 Pro (parse model; app version not exposed)
Surface
Web app
Set up before the run
A digital invoice and its scanned twin were each run through the same nine-field schema, with the twin required to have no extractable text layer and the digital file processed first.
Schema field descriptions
The invoice number · Who the invoice is billed to · The site the hire is for · The hire period · The currency of the amounts · The subtotal amount before tax · The tax amount · The total amount due on the invoice · Every line item in the invoice table · The description of the line item · The quantity of the line item · The unit price of the line item · The amount of the line item
Schema configuration
one JSON schema, version v1, nine fields, uploaded unchanged for both runs
Tested
27 October 2026 · Rugved Nichite

How this scenario is graded

How we decide Pass, Fail and Not gradable. The same rules apply to every tool tested on this scenario.

How results are decided

Each test case gets one result per tool: Pass, Fail or Not gradable. A test case we haven't run yet shows Untested. There are no partial results.

The rules
  • Pass: the tool did everything the test expected, and nothing it said contradicts the correct answer.
  • Fail: at least one expected behaviour clearly didn't happen; the test case's result says which one and quotes the tool.
  • Not gradable: our evidence couldn't settle the outcome (for example a record we needed is missing). It is never counted as a fail, and the test case's result says what's missing.

Where this sits in the benchmark

This page is one cell of a larger study: one tool, one scenario. Only this benchmark's frame appears here.

LevelNameScope
BenchmarkStructured Document Extraction →19 scenarios · 10 tools
CapabilityOCR →
ScenarioA cleanly scanned document →
ToolLanding AI →

History of this result

What has happened to this result since it was first published. Runs and grades are never overwritten: a retest or a re-grade publishes a new result and keeps the earlier one readable.

from the publication record
9 October 2026First publishedStructured Document Extraction v1
17 October 2026Taken down
The page left the site; nothing was deleted.
10 November 2026Republished

Act on this result

Nothing filed here edits the run or the grade. A challenge opens a review, and a review can produce a new run or a re-grade — which becomes the current result and leaves this one in the history.

This matches what I see

You run the same kind of test against your own setup and get the same behaviour.

Agree →
This does not match

Yours behaves differently. Tell us what you got, with a screenshot if you have one.

Disagree →
Point out an issue

Something here is wrong — a reference value, a transcription, a grade.

Report an issue →
Request a retest

On a newer build, a larger dataset, or your own setup.

Request a retest →
We have fixed this

Tell us what changed and we schedule a rerun of the failing test case. The old result stays as history.

Vendor notice →
Filed against this evidenceNothing yet. Challenges, counter-evidence and fix notices appear here with their outcome, and stay on the page after they are resolved.
Cite this result
aidemos.com/benchmarks/structured-document-extraction/results/landing-ai/a-cleanly-scanned-document · 1 pass · 0 fail · coverage 1/1 · graded 2026-11-03

The same record is available as structured data through the AI Demos MCP server, with the counts, the coverage and every per-test-case reason carried as fields.

Verify the proof files

These files support this result. Open a file to inspect the original evidence.

Input 1 · File (JSON) ↗application/json · 1 KB
Input 2 · Document (PDF) ↗application/pdf · 78 KB
Input 3 · Document (PDF) ↗application/pdf · 232 KB
Proof 1 · Screenshot ↗image/png · 96 KB
Proof 2 · Screenshot ↗image/png · 97 KB
Output file 1 (JSON) ↗text/plain; charset=utf-8 · 1 KB
Output file 2 (JSON) ↗text/plain; charset=utf-8 · 1 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Input 1 · File (JSON)0372f999ad944a416a0ceb17a145071805eea7b41aa15f7431aa879d0872538f
Input 2 · Document (PDF)fdcf03ac5ee53b083da58166f17fd41e7c72de79a9f3a3f6b67daa1360ddbca9
Input 3 · Document (PDF)6f1cc2a5f5e5e57494671341557d7a53d318b0f62bb8f8536165e1dac1b7a805
Proof 1 · Screenshot9829fe038feb0b31039fd3753cf364f33e883964d9ea6f8cbf93df316b57cd38
Proof 2 · Screenshot13f09d841b304a3709ad956d263c1b5491e74b885686d3a6446882123e347dd6
Output file 1 (JSON)cc1a264ee1aebc46ba45ea3d644ce4f1e19c25eade871789acbee75cee13aba7
Output file 2 (JSON)bbdd4d4cfa971a94e0e47edf7e204f9ad449fef796f109fd9a75c2dc748aa51e