
PDF Layout-Preserved Text — Tables & Forms
Extracts PDF text with column alignment kept intact — between plain text (scrambles forms) and structured tables (not every layout has one). Verified on IRS Form 1040: plain extraction garbled two columns together; this keeps them separate. Flags scanned pages instead of nonsense.
PDF Layout-Preserved Text — Tables & Forms returns 9 documented output fields, including sourceUrl, page, chunkIndex, chunksOnPage and text. Every field carries a declared type, a written description and an example value. 22 runs are recorded on Apify.
- 9
- Output fields
- 6
- Inputs
- 22
- Runs
- 2026-10-15
- Last run
01 — output
What it returns
Every field the extractor writes to its dataset, with its type, a written description and an example value.
| Field | Type | What it holds | Example |
|---|---|---|---|
| sourceUrl | stringnull | The page or endpoint this row was read from. | https://api.example.com/v1/items |
| page | integernull | Page number this record came from. 1-based. | 1 |
| chunkIndex | integernull | Zero-based position of this chunk within its document. | 0 |
| chunksOnPage | integernull | How many chunks this page was split into. | 0 |
| text | stringnull | Plain text content of this record. | <text> |
| charCount | integernull | Number of characters in this record's text. | 4821 |
| tokensEstimate | integernull | Estimated token count of the text, for sizing against a model context window. | 1180 |
| status | stringnull | Outcome recorded for this row. | ok |
| recommendation | stringnull | The recommended action for this row. | Review the price change before it propagates. |
02 — sample
One record
Assembled from the example values declared on the schema above, not invented at render time.
{
"sourceUrl": "https://api.example.com/v1/items",
"page": 1,
"chunkIndex": 0,
"chunksOnPage": 0,
"text": "<text>",
"charCount": 4821,
"tokensEstimate": 1180,
"status": "ok"
}03 — input
What you give it
| Input | Type | Description |
|---|---|---|
| pdfUrls | arrayoptional | Public URLs of the PDFs to extract layout-preserved text from. |
| pages | stringoptional | Which pages to read, e.g. 1-5,8. Leave empty for every page. |
| maxPagesPerPdf | integeroptional | Upper bound on pages read from each document. |
| maxChunkChars | integeroptional | A page's text is split into chunks no larger than this, always at a line boundary so column alignment is never cut mid-row. |
| oneItemPerPage | booleanoptional | Return one dataset item per page instead of chunking by character count. Off by default because a dense page can exceed typical LLM context limits. |
| maxItems | integeroptional | Hard cap on items returned. You are never charged beyond this. |
04 — run
Run PDF Layout-Preserved Text on your own input
It runs in the cloud on Apify. Nothing to install, and you are billed per result returned rather than per attempt.
05 — questions
Asked before running it
9 of 9 fields described
- What does PDF Layout-Preserved Text — Tables & Forms return?
- It returns 9 documented output fields: sourceUrl, page, chunkIndex, chunksOnPage, text, charCount, tokensEstimate, status and recommendation. Each field declares its type, a description of what it holds, and an example value.
- What input does PDF Layout-Preserved Text — Tables & Forms take?
- All 6 inputs are optional and ship with usable defaults, so it runs as-is. They are listed with their types below.
- Does PDF Layout-Preserved Text — Tables & Forms need an API key or login?
- No. None of its inputs is a credential, and it reads only public data. Nothing to sign up for before the first run.
- How do I run PDF Layout-Preserved Text — Tables & Forms?
- It runs on Apify. Start it from its listing with the inputs above, or call the Apify API with the Actor's ID. Results land in a dataset you can export as JSON, CSV or Excel, or read through the Apify API into your own pipeline.