Learn

How to Extract Facts and Tables From PDFs With AI

A PDF extraction workflow moves from source pages to structured rows and page-level verification.

Quick answer: Define the rows and fields you need, extract text and table structure, ask AI to normalize rather than guess, preserve the source file and page for every important value, and manually verify a sample plus every exception. A fluent answer is not evidence that the PDF was parsed correctly.

PDF work contains two different problems:

  1. Extraction: recover text, reading order, cells, and page positions.
  2. Interpretation: decide what each value means and place it in the requested schema.

AI can help with both, but combining them into one invisible step makes errors hard to diagnose.

Start with an output schema

Suppose you have quarterly supplier reports. Do not begin with “extract the important information.” Define the artifact:

Field Rule
Source file Exact filename
Page Printed page or PDF page index; state which
Supplier Preserve source spelling
Period Normalize to YYYY-QN only when explicit
Revenue Number plus stated currency
Margin Preserve percentage and sign
Note Short source-linked qualification
Exception Unreadable, Not found, Conflicting, or blank

This makes missing data visible. Without an exception rule, a model may try to complete a neat table even when the source does not support it.

Determine what kind of PDF you have

  • Text PDF: you can select and search the text. Extraction is usually easier, though columns and tables can still be scrambled.
  • Scanned PDF: each page may be an image. Optical character recognition is required before reliable text work.
  • Hybrid PDF: some pages or regions contain text while others are images.
  • Complex layout: multi-column pages, nested tables, footnotes, and merged cells require layout-aware extraction.

Adobe's PDF Extract documentation illustrates why raw copy-and-paste is insufficient: structured extraction may need paragraph types, natural reading order, cell spans, and page positions. Adobe's service is one cloud implementation, not a required part of this workflow.

Write an extraction work order

Create supplier-metrics.csv from the selected PDF reports.

Use these columns:
source_file, page, supplier, period, revenue, currency,
margin_percent, note, exception.

Rules:
- Never infer a missing number.
- Preserve negative signs, units, and currency.
- Put ambiguous rows in exception.
- Do not combine rows from different reporting periods.
- Leave the PDFs unchanged.

For narrative facts, request a fact register instead of a CSV:

Claim | Exact source phrase | File | Page | Confidence note

Verify the table before analyzing it

Check structure first:

  • Did every visible row appear?
  • Did headers stay attached to the right columns?
  • Were multi-page tables joined correctly?
  • Did merged cells accidentally shift values?
  • Were parentheses interpreted as negative numbers?
  • Did footnote markers become digits?

Then check meaning:

  • Are units thousands, millions, or raw values?
  • Is the period calendar or fiscal?
  • Is a percentage a margin, growth rate, or share?
  • Is the table consolidated or segment-specific?

Only after those checks should you ask for trends, totals, or comparisons.

Use a risk-based sample

For low-stakes exploration, manually compare a small sample from the beginning, middle, and end of each document. For decisions involving money, contracts, employment, or compliance, define a stronger review rule appropriate to the consequence—potentially checking every material value.

Always inspect:

  • rows marked as exceptions;
  • negative or unusually large values;
  • totals used in later calculations;
  • cells affected by merged rows or columns;
  • facts that drive the final recommendation.

“95% accurate” is not useful when the unchecked 5% contains the number you act on.

Common failure patterns

Failure Likely cause Response
Missing row Page or table region skipped Re-extract that page and compare row count
Shifted columns Layout lost Use structure-aware extraction or handle the table separately
Invented value No missing-data rule Require Not found and source anchors
Wrong total Units or signs lost Preserve raw value and unit before calculation
Conflicting facts Several documents or periods Keep both rows and mark the conflict
Clean CSV, wrong meaning Interpretation error Review definitions and footnotes

For a broader multi-document summary, see how to summarize multiple PDFs with sources. For spreadsheet analysis after extraction, use the CSV and spreadsheet guide. To decide whether you need answers or file-producing work, compare document chat with agent work on documents.

Where Agenaxy fits

Agenaxy can treat the PDFs as selected sources and the CSV or fact register as a new editable Artifact. The useful boundary is simple: keep originals unchanged, expose the work performed, and make exceptions and sources part of the output.

A local model can keep model inference on the Mac. An authorized remote model still receives the context sent to it. Choose the path that fits the material.

Try a checked extraction

Describe the shape of a non-confidential PDF set and the fields you need in Try Agenaxy. Do not submit the actual documents through the form.

FAQ

Can AI extract a table from a scanned PDF?

It can, but the page first needs OCR or vision-based extraction. Image quality, handwriting, rotation, and table complexity affect the result.

Should I ask for JSON, CSV, or Markdown?

Use CSV for flat rows, JSON for nested structure, and Markdown for a human-readable brief. Preserve source and exception fields in any format.

Does source citation prevent hallucination?

No. It makes claims easier to check. Verify that the cited page actually supports the value.

Sources and Fact-Checking Notes

  • Adobe — PDF Extract API overview documents structured extraction of text, reading order, tables, figures, and page layout.
  • Adobe — Extract PDF content documents JSON output and table export to CSV or XLSX. Adobe PDF Extract is a cloud service; it is cited as an extraction example, not as an Agenaxy dependency.
Was this useful?