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

Can Adobe PDF Extract API handle an ordinary digital text document accurately?

Adobe PDF Extract API did not keep the document text unchanged. Its Extract output joined the running header to the document title and to a sentence continuing onto page 2; no words were missing or invented.

1 of 1 test case failed

Every test case in this scenario has a result.

Pass rate0%0 of 1 gradable
Coverage1 of 1test case with a result
0PassNo test case passed.
1FailMissed at least one thing it was expected to do; the reason and proof are with each test case below.
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.

Ordinary digital text — complete and unchangedFailEvidence
What we sent
InputDocument (PDF)
Input PDF: seven-page briefing note with running headers and footers
Open the PDF ↗
What the tool returned
Markdown
# Braithe Estuary Partnership Sediment recharge at Kellow Sands: the 2025/26 placement

Markdown output: full document assembled from Adobe’s response

Copied from Output file (Markdown), line 1

Open the Markdown file ↗
JSON
{
  "Bounds": [70.86610412597656, 760.0906066894531, 496.98809814453125, 792.6679992675781],
  "Font": {
    "alt_family_name": "Calibri",
    "embedded": true,
    "encoding": "Custom",
    "family_name": "Calibri",
    "font_type": "TrueType",
    "italic": false,
    "monospaced": false,
    "name": "AAAAAA+Calibri-Bold",
    "subset": true,
    "weight": 700
  },
  "HasClip": false,
  "Lang": "en",
  "ObjectID": 204,
  "Page": 0,
  "Path": "//Document/Title",
  "Text": "Braithe Estuary Partnership Sediment recharge at Kellow Sands: the 2025/26 placement ",
  "TextSize": 17.0,
  "attributes": {
    "LineHeight": 16.875,
    "SpaceAfter": 10.75
  }
}

Extract response: Adobe’s structured document output

Copied from Output file (JSON), structuredData › elements 1

Open the whole JSON file ↗
JSON
{
  "Bounds": [70.86610412597656, 767.4553985595703, 178.05430603027344, 792.6679992675781],
  "Font": {
    "alt_family_name": "Calibri",
    "embedded": true,
    "encoding": "Custom",
    "family_name": "Calibri",
    "font_type": "TrueType",
    "italic": false,
    "monospaced": false,
    "name": "AAAAAA+Calibri",
    "subset": true,
    "weight": 400
  },
  "HasClip": false,
  "Lang": "en",
  "ObjectID": 177,
  "Page": 1,
  "Path": "//Document/P[9]",
  "Text": "Braithe Estuary Partnership have shown so far. ",
  "TextSize": 11.399993896484375,
  "attributes": {
    "LineHeight": 12
  }
}

Copied from Output file (JSON), structuredData › elements 14

Expected vs. Found
✗Expected: All text present and unchanged, with nothing missing, garbled or invented.Found: The running header was joined to the title and to a sentence continuation on page 2. No words were missing or invented.
Supporting proof
Proof 1Screenshot
Page 1 comparison: source and assembled Markdown
Open original ↗
Proof 2Screenshot
Page 2 close-up: source and output at the sentence continuation
Open original ↗
Proof 3Screenshot
Run card: result, timing, input and configuration
Open original ↗
Why this result

All text had to be present and unchanged. Both joins are already in Adobe's own structured output (the title element and the paragraph that continues onto page 2), so they were not introduced when we assembled the Markdown. Joined header text is garbled text, so the result fails.

Also observed in this test case

Heading levels. The assembled Markdown places the document title and all 24 section headings at the same heading level.

Page footers. No page footer lines appear in the assembled Markdown.

Tested by Chandresh Bisht · evidence dated 10 September 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
Adobe PDF Extract API
Build or version
PDF Services REST (Extract) json_export=233, page_segmentation=55, schema=1.1.0, structure=1.1218.0, table_structure=5
Plan or tier
free tier
Surface
API
Set up before the run
A short digital-text PDF of plain paragraphs was required. The complete PDF was converted in one pass using the default pipeline, without per-tool flag tuning. Markdown was assembled from Adobe’s structured JSON elements in reading order; Extract does not return Markdown.
Tested
10 September 2026 · Chandresh Bisht

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.

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
11 November 2026First publishedConverting a complex PDF into clean Markdown with a hosted API v1

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/adobe-pdf-extract-api/an-ordinary-digital-text-document · 0 pass · 1 fail · coverage 1/1 · graded 2026-11-07

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 · Document (PDF) ↗application/pdf · 103 KB
Proof 1 · Screenshot ↗image/png · 254 KB
Proof 2 · Screenshot ↗image/png · 118 KB
Output file (JSON) ↗application/json · 84 KB
Output file (Markdown) ↗text/markdown; charset=utf-8 · 18 KB
Proof 3 · Screenshot ↗image/png · 51 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Input · Document (PDF)291669466fefcdd19a890091f82c0fba09f8ddce2882ef5755c52d8abe28ffa1
Proof 1 · Screenshot608ac50229d609ca357ff6ed0129977df06f5544797b89af94b0fd9b7470e0a7
Proof 2 · Screenshot563341846165f07ccf4d3a1e2b8116099453ee45ae42ce2e329c8ca443a1dc40
Output file (JSON)f3a16e6a2ddf94561a660f299d8638b6242b2f7d7c84f77a9d7b69a63300f1d6
Output file (Markdown)3f8bb80f8fdb76cc78ff1b8ca6bb8963b53a2c72552534323bd99bfdf37ff72f
Proof 3 · Screenshotec5f45ff450829b637d28643b133442466f38c200cfcfcca0684c28cee3529a9