AI Demos Research — the structured-intelligence platform. Every verdict on these pages opens to the execution behind it.
superseded result

This is the result as it was published on 6 October 2026. A newer result replaced it on 6 October 2026; this page is kept so that anything that cited it still resolves. Read the current result →

Tools/Extend AI/A cleanly scanned document·Structured Document Extraction benchmark·Graded 5 October 2026

Can Extend AI extract text accurately from a cleanly scanned document?

Extend AI passed this scenario. It returned the same three values from the digital invoice and the scanned twin, and the twin file was image-only. The digital run and the scanned run are shown separately, with different file IDs and matching invoice details: total due £1,754.40, invoice date 10 March 2026, and invoice number TPH-3301.

1 of 1 test case passed

Every test case in this scenario has a result.

Pass rate100%1 of 1 with a result
Coverage1 of 1test cases 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 counts this row.

Image-only twin, same schemaPassEvidence
What we sent
Input 1Document (PDF)
Image-only twin PDF with two pages, no extractable text, two embedded images, and a folded corner on page 1.
Open the PDF ↗
Input 2Document (PDF)
Digital invoice PDF with a real text layer, two pages, and the invoice totals on page 2.
Open the PDF ↗
What the tool returned
Proof 1Output file (JSON)
Digital run JSON showing the three extracted values and citations tied to one file ID.
JSON99 lines
{
  "value": {
    "total_due": "£1,754.40",
    "invoice_date": "10 March 2026",
    "invoice_number": "TPH-3301"
  },
  "metadata": {
    "total_due": {
      "citations": [
        {
          "page": 2,
          "fileId": "file_Zj5mK2IV6kri5CM8OwJn5",
          "polygon": [
            {
              "x": 482.6448000000001,
              "y": 143.4528
            },
            {
              "x": 533.3976,
              "y": 143.4528
            },
            {
              "x": 533.3976,
              "y": 154.40399999999997
            },
            {
              "x": 482.6448000000001,
              "y": 154.40399999999997
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "£1,754.40"
        }
      ],
      "ocrConfidence": 0.977
    },
    "invoice_date": {
      "citations": [
        {
          "page": 1,
          "fileId": "file_Zj5mK2IV6kri5CM8OwJn5",
          "polygon": [
            {
              "x": 485.2008,
              "y": 165.35520000000002
            },
            {
              "x": 543.9816,
              "y": 164.988
            },
            {
              "x": 543.9816,
              "y": 174.4776
            },
            {
              "x": 485.2008,
              "y": 174.4776
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "10 March 2026"
        }
      ],
      "ocrConfidence": 0.985
    },
    "invoice_number": {
      "citations": [
        {
          "page": 1,
          "fileId": "file_Zj5mK2IV6kri5CM8OwJn5",
          "polygon": [
            {
              "x": 484.1064,
              "y": 148.9248
            },
            {
              "x": 524.9952,
              "y": 148.9248
            },
            {
              "x": 524.9952,
              "y": 161.3376
            },
            {
              "x": 484.1064,
              "y": 161.3376
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "TPH-3301"
        }
      ],
      "ocrConfidence": 0.994
    }
  }
}
Open the JSON file ↗
Proof 2Output file (JSON)
Scanned-twin JSON showing the same three values with citations tied to a different file ID.
JSON99 lines
{
  "value": {
    "total_due": "£1,754.40",
    "invoice_date": "10 March 2026",
    "invoice_number": "TPH-3301"
  },
  "metadata": {
    "total_due": {
      "citations": [
        {
          "page": 2,
          "fileId": "file_1tciVugAPO7moc8RcxlrE",
          "polygon": [
            {
              "x": 483.37919999999997,
              "y": 144.17999999999998
            },
            {
              "x": 535.5864,
              "y": 144.17999999999998
            },
            {
              "x": 535.5864,
              "y": 155.86559999999997
            },
            {
              "x": 483.37919999999997,
              "y": 155.86559999999997
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "£1,754.40"
        }
      ],
      "ocrConfidence": 0.985
    },
    "invoice_date": {
      "citations": [
        {
          "page": 1,
          "fileId": "file_1tciVugAPO7moc8RcxlrE",
          "polygon": [
            {
              "x": 488.8512,
              "y": 167.9112
            },
            {
              "x": 546.1704,
              "y": 168.2712
            },
            {
              "x": 546.1704,
              "y": 175.9392
            },
            {
              "x": 488.8512,
              "y": 175.572
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "10 March 2026"
        }
      ],
      "ocrConfidence": 0.989
    },
    "invoice_number": {
      "citations": [
        {
          "page": 1,
          "fileId": "file_1tciVugAPO7moc8RcxlrE",
          "polygon": [
            {
              "x": 488.12399999999997,
              "y": 153.6696
            },
            {
              "x": 526.4567999999999,
              "y": 153.30960000000002
            },
            {
              "x": 526.4567999999999,
              "y": 161.3376
            },
            {
              "x": 488.12399999999997,
              "y": 161.3376
            }
          ],
          "pageWidth": 594,
          "pageHeight": 841.0032,
          "referenceText": "TPH-3301"
        }
      ],
      "ocrConfidence": 0.993
    }
  }
}
Open the JSON file ↗
Expected vs. Found
✓Expected: The same values from both runs, with both results shown.Found: Both runs returned total due £1,754.40, invoice date 10 March 2026, and invoice number TPH-3301; the twin was image-only.
Supporting proof
Proof 3Screenshot
Screenshot of the scanned-twin run with the folded-corner scan artefact and the selected file strip item.
Open original ↗
Proof 4Screenshot
Screenshot of the digital run with a clean white page and the selected file strip item.
Open original ↗
Why this result

Both runs were captured and both returned the same values. The twin was verified as image-only from the file itself, and the two runs were distinct files with matching invoice details.

Also observed on this row

OCR confidence on digital. The digital run also returned OCR confidence scores, so it was processed through OCR too.

Tested by Rugved nichite

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
Extend AI
Build or version
not_exposed
Surface
Web app
Set up before the run
A baseline document and a scanned twin with the same schema were required, with the twin containing no text layer. One document was run twice: first digital, then as the scanned twin.
Digital multifile
OFF
Scanned multifile
OFF
Tested
By 18 September 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 row says which 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 row says what's missing.

Other tools on this scenario

How the 10 tools in this benchmark did on this scenario. A tool with a published result links to it.

Open the scenario page →
DatalabNot tested yetNo result page yet
Docsumo0 of 1 passedNo result page yet
Extend AI1 of 1 passedThis result
FutureSmart Document Intelligence →1 of 1 passedLanding AI →1 of 1 passed
LlamaParseNot tested yetNo result page yet
Nanonets1 of 1 passedNo result page yet
ReductoNot tested yetNo result page yet
RetabNot tested yetNo result page yet
UnstractNot tested yetNo result page yet

Extend AI on the other scenarios

19 scenarios in this benchmark. A scenario with a published result links to it.

Open the tool page →
A cleanly scanned document1 of 1 passedThis result
A document mixing digital and scanned pages →1 of 1 passed
A field the tool can only get right from examples1 not gradableNo result page yet
Aggregate across documents0 of 1 passedNo result page yet
A repeated set of records1 of 1 passedNo result page yet
Correct a field value1 of 1 passedNo result page yet
Corrected data goes downstream0 of 1 passedNo result page yet
Filter records across documents0 of 1 passedNo result page yet
Repair a record0 of 1 passedNo result page yet
The answer was never in the schema0 of 1 passedNo result page yet
The field is absent1 of 1 passedNo result page yet
The same field across layouts1 of 1 passedNo result page yet
The set contains a non-record1 of 1 passedNo result page yet
The set continues across a page break1 of 1 passedNo result page yet
The set is legitimately empty →1 of 1 passed
The value is directly available1 of 1 passedNo result page yet
The value must be derived1 of 1 passedNo result page yet
The value needs a supplied definition1 of 1 passedNo result page yet
Trace a value to its location →1 of 1 passed

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 Extraction19 scenarios · 10 tools
CapabilityOCR
ScenarioA cleanly scanned document
ToolExtend 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
6 October 2026First publishedStructured Document Extraction v1
6 October 2026Updated — retested on x-extend-api-version 2026-02-09; engine parse_performance 2.0.0now under Converting a complex PDF into clean Markdown with a hosted API v1
The result is unchanged: 1 pass · 0 fail. The earlier result stays readable. Read the earlier result →

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/pdf-to-markdown-apis/results/extend-ai/a-cleanly-scanned-document · 1 pass · 0 fail · coverage 1/1 · graded 2026-10-05

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 · Document (PDF) ↗application/pdf · 232 KB
Input 2 · Document (PDF) ↗application/pdf · 78 KB
Proof 1 · Output file (JSON) ↗application/json · 2 KB
Proof 2 · Output file (JSON) ↗application/json · 2 KB
Proof 3 · Screenshot ↗image/png · 338 KB
Proof 4 · Screenshot ↗image/png · 214 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Input 1 · Document (PDF)6f1cc2a5f5e5e57494671341557d7a53d318b0f62bb8f8536165e1dac1b7a805
Input 2 · Document (PDF)fdcf03ac5ee53b083da58166f17fd41e7c72de79a9f3a3f6b67daa1360ddbca9
Proof 1 · Output file (JSON)ac8892454b51d38f06f97e55570903bb525333834cf84554a7d519e653da1d9b
Proof 2 · Output file (JSON)fcc9c18c253450dc949284311a5eb2128149fb35d2d2c664cb9059fa64e205f2
Proof 3 · Screenshot49dc07a701e43db3fff85ae288a861d846f46d6cc135d0bb98e474f2a254d7b5
Proof 4 · Screenshot9c7654253f30a3ad2d024080d9f8c2bbecd8c8ae5d729c84cdc06f8be038fd40