AI Data Extraction
AIPull structured fields from PDFs.
AI Data Extraction runs on our secure server
The model is told to answer null rather than guess. A null means the model gave no single value: it may not have found one, or the text may hold several different values for the field. A value that is not null may still be one of several different values, so to get every value, ask for a list: the array type in a field schema, or a list in your prompt.
- Encrypted upload
- Your file is uploaded directly to short-lived object storage over a pre-signed URL.
- Safety checks
- Each file is checked before any processor sees it: an empty file, a file whose type contradicts its name or this tool, or a PDF with no PDF header is refused. Whether a malware scan runs as well is reported by the live server, and shows here once this page has heard from it.
- AI processing
- A separate processing server extracts the PDF's selectable text and sends that text to a third-party AI provider to produce the result. The PDF file itself is not sent to the provider — section 3 of our privacy policy has the details.
- Download
- You get a signed, expiring link to the result — no account required.
- Auto-delete
- Inputs are wiped right after processing; outputs auto-delete within the retention window.
Checking our secure server…
About this tool
Extract fields from PDF invoices, receipts and contracts into clean JSON with AI — read from the PDF's selectable text.
Sends your PDF's selectable text — not the file — to a third-party AI provider, under terms that prohibit training on it.
More details
AI Data Extraction asks an AI model for just the values you name in a PDF, such as an invoice number, a due date or a list of product codes, and hands them back as JSON. In a field schema you list up to 50 named fields, each typed as string, number, boolean, date, or array, and the model is told to use each name, unchanged, as a key in its answer. Alternatively, write an instruction of up to 2,000 characters in your own words; the model is then asked for a flat JSON object and chooses descriptive key names itself.
Your browser sends the file over TLS to pdf.xyz's secure server. Our server reads out its text layer and passes that text, with your field list or instruction, to a third-party AI provider. The provider gets text only, never the PDF. When the job ends our server deletes the uploaded file; the extraction package stays downloadable for 60 minutes, and once that window closes a daily storage rule sweeps the stored copy away.
Per run the builder accepts one PDF, capped at 100 MB. Of its text, the model sees no more than 500,000 characters, and that count includes the spaces and line breaks our server's text reader keeps to mirror the page layout, so how many pages fit depends on how the pages are set; a long file's result states how far reading got. The model's instructions are to use only that text. pdf.xyz invents no values: with a field schema it lines the reply up with your field names, and the model's own reply is kept beside it, as returned. A requested field the model did not return at all is null in extraction.json too, and manifest.json lists it under extraction.missingKeys. Instructions are not guarantees, so check any figure you will act on.
When to use it
Key invoices into accounts payable
A schema of invoice_number (string), invoice_date (date), vendor (string) and total (number) asks every supplier's invoice for the same four keys, one PDF per run, so a script or an import can read the results side by side.
Pull a contract's commercial terms
Switch to Prompt and ask for the parties, the effective date, the notice period for termination and the governing law.
Check whether a clause is there at all
A boolean field such as auto_renewal puts a yes-or-no question to the text. A null means the model gave no single value: it may not have found one, or the text may hold several different values for the field. A false is not a confirmed no either: it is the model's reading of the pages it saw, so check the contract itself before you rely on it.
Collect a list from a long report
Give a field the array type to gather every part number or attendee name into one list. A field of any other type asks for one value. A value that is not null may still be one of several different values, so to get every value, ask for a list: the array type in a field schema, or a list in your prompt. For data that lives in rows and columns, Extract Tables is the better fit.
What this tool can do
- Free allowance
- 30,774 free characters of AI text a day for your connection. One run never counts more than 10,258 of them, however long the document is, and the allowance resets daily. However long the document, at least 3 extractions fit in a day if nothing else draws on it. The other AI tools draw on the same allowance.
How it works
1Add one PDF
Drop the file onto the box labelled Add your PDF, or click browse. It needs selectable text, and pressing Remove lets you pick a different file.
2Pick Field schema or Prompt
Field schema is selected at first. Under Fields to extract, type a name of up to 80 characters, set its type in the drop-down, and use Add field for more rows, up to 50. The bin icon deletes a row, except the last one left. Rows left blank are skipped. Two fields cannot share a name, even if only their capital letters differ: the page flags the repeat under the row and keeps Extract data inactive until you rename it. Choose Prompt to type into the What to extract box instead.
3Press Extract data
The button stays inactive until a file is added and the selected mode has something to ask: at least one named field under Field schema, with no two names the same, or some text under Prompt. Once pressed, its label follows the job: Uploading your file… while the PDF uploads, Waiting for our server… while it is queued, Extracting… while the text goes to the AI provider and the reply is packaged, and Downloading the result… at the end.
4Download the extraction package
For invoice.pdf the button reads Download invoice-extraction.zip. When only part of a long document was read, a warning above it says so, naming the last page read in full when that can be worked out. The page has already fetched the file by then; our server's own link to it lapses after 60 minutes.
Common questions
Can it extract data from a scanned PDF or an image?
Not by itself. Only characters stored as text in the PDF are read, so a scan or a photo with no text layer ends in an error that suggests OCR PDF. Make the file searchable with OCR PDF, then run the extraction on that output.
What is inside the ZIP I download, and can I get CSV or Excel?
The ZIP holds five files. model-output.json is the model's JSON reply as it was returned. extraction.json holds the same data. With a field schema, it lists every field you asked for, in your order and under your names, and a key the model respelled is mapped back to your name. A requested field the model did not return at all is null in extraction.json too, and manifest.json lists it under extraction.missingKeys. With a prompt, it is the reply as given. extraction.md lays the data out as a Field and Value table, or as a numbered list if the reply is a list. In extraction.md a null reads "not found, or several different values". It marks a requested field the model never returned as not returned by the model, and lists any keys you did not ask for in a separate table. manifest.json records the provider, the model, your prompt or schema, the page and character counts, any cut, and which fields were missing, respelled or extra. README.txt describes the package. There is no CSV or spreadsheet in it. For data laid out in rows and columns, Extract Tables writes one CSV per table plus an Excel workbook.
Is my document sent to an AI company, and is it used for training?
The provider receives the text our server read from your PDF plus your field names or instruction, not the file. On training, pdf.xyz can speak only to its contracts, and the agreements it uses its AI providers under prohibit training on data sent through the API. Anything a provider does outside those terms is out of pdf.xyz's hands, so keep documents that cannot bear that risk away from the AI tools.
How many extractions can I run a day?
Every AI tool on pdf.xyz spends from one pool per connection, 30,774 free characters of AI text a day. One extraction never costs more than 10,258 characters of that pool, whether the PDF is one page or hundreds, so at least 3 extractions fit in a day if no other AI job has used the pool. The charge is taken when the job is submitted, after the upload, and a job our server then refuses or that fails still uses it. A PDF this page can already tell has no selectable text is stopped before upload and costs nothing. And when pdf.xyz's own daily spending cap for AI is reached, every AI tool pauses until the next day, however much of the free allowance is left.
What happens with a very long PDF?
Text past the first 500,000 characters is dropped before the model sees it. The warning on the page, the manifest and extraction.md name the last page read in full whenever that can be worked out. A null was judged only on the text that was read, so the value may still appear later in the document. Extract Pages can cut the file down to the pages that matter before you start.
Why did my extraction fail, or come back null or wrong?
When the model's reply is not valid JSON, our server can put the job back in its queue for another attempt by itself. Once the attempts run out, the job fails with nothing to download and a message saying a retry may succeed. A wrong value comes from the model's reply or from the text it was given: an OCR layer with misread characters, or side-by-side columns read across as one line, can mislead it. Compare the value with the page, and when a page holds several similar figures, name the exact one you want in a prompt or in a descriptive field name. The model is told to answer null rather than guess. A null means the model gave no single value: it may not have found one, or the text may hold several different values for the field. A value that is not null may still be one of several different values, so to get every value, ask for a list: the array type in a field schema, or a list in your prompt. A single-value field asked of a column of figures is where this happens most, since every row holds a candidate.
How large can my file be?
Up to 100 MB per file.
Is AI Data Extraction free?
Yes. 30,774 free characters of AI text a day for your connection. One run never counts more than 10,258 of them, however long the document is, and the allowance resets daily. However long the document, at least 3 extractions fit in a day if nothing else draws on it. The other AI tools draw on the same allowance.
How much of my PDF does AI Data Extraction read?
Up to 500,000 characters of selectable text — roughly 81 pages of dense text, or about 291 of sparsely-set pages. Longer documents are read up to that point only, and the tool tells you which page it reached rather than treating the rest as absent.
What can AI Data Extraction pull out of my PDF?
What you ask for, in one of two ways: list the fields you want — up to 50, each a string, number, boolean, date or array — or describe it in a prompt. You download a ZIP with the extracted data as JSON, a readable Markdown version of it and a manifest recording how it was made.
Can AI Data Extraction get things wrong?
Yes. The result is written by an AI model from the PDF's selectable text, and a model can miss or misread details. Check anything you rely on against the document itself.
Related tools
All toolsNo sign-up required. Your files stay on your device until you run a tool.