PDF to Excel: extract data from any PDF, scanned or not

Drop a PDF and download its tables as an .xlsx file: the original column headers, one row per row, amounts as numbers, and a sheet for each table.

Drop a PDF or image here, or browse
PDF up to 50 MB · images up to 20 MB
Processed in-flight — temporary uploads are deleted after processing.

What should we pull from this PDF?

Or pick specific fields

Or describe it yourself

PDFs exported from software and image-only scans both work, and a table that runs over several pages comes back as one.

By ExtractFox team · Updated · How we test

Your document is processed, not collected

ExtractFox processes the file with its secure AI extraction engine, does not persist the document on its servers, and does not use your document or result to train AI models. Data is encrypted in transit with TLS.

Read the privacy policy →

Two real PDFs, start to finish

We made two PDFs of the kind that end up in Excel: a quarterly report with two tables on one page, exported from a word processor with a text layer, and an expense report that is only a picture of a page, with no text to select. Each went through this page with "All tables", and we downloaded the .xlsx it produced. Every cell was compared with the table we typed. Nothing below was edited; the PDFs and workbooks are downloadable after the results.

1. A report with two tables and negatives in parentheses

PDF page of a quarterly summary with a condensed income statement for Q1 to Q3 2026, costs in parentheses, and a headcount table by department
Input: two tables, thousands separators, costs written as (168,040.00).
ExtractFox result with the income statement rows and the headcount rows, each labelled with its table caption
What this page showed: 48 of 48 cells right.

The workbook has one sheet per table, named after the heading above it: "Condensed income statement" and "Headcount at quarter end". All 36 figures are number cells; the row labels stay text. (168,040.00) became -168040, so =SUM over the quarter's Revenue, Cost of goods sold, Operating expenses and Interest expense gives the Net income printed on the page.

2. A scanned expense report

Image-only PDF of an expense report with date, merchant, category, amount and reimbursable columns and a hotel refund in parentheses
Input: an image-only PDF we made from a rendered page (0 characters of selectable text).
ExtractFox result table with eight expense rows and the refund as a negative amount
40 of 40 cells right.

Amount is a number column with the refund as -114.9, so the column sums to 1,229.38, the "Total claimed" line under the table. That line stayed out of the rows because it is a summary, not an expense. Dates came back as 2026-09-02, which Excel reads as a date.

Results side by side

Cells right = the value in the right row and column, compared with the table we typed. pdftotext and Tesseract return lines of text with no columns, so for them we counted how many of the true values appear anywhere in their output, which flatters them.

PDFCellsExtractFox: cells rightNumber cells in the .xlsxSecondsText tool: values found
Quarterly report (text layer)484836 (every figure), on 2 sheets4.4pdftotext: 48
Expense report (image only)40408 (Amount)4.7Tesseract: 40

Two PDFs is a demonstration, not a benchmark. Both were legible, one page, and laid out as plain grids. Where it gets harder: scans at low resolution where 8 and 3 look alike, tables with merged header cells spanning two levels, and very long statements. A cell that can't be read comes back empty rather than guessed, so check for blanks before you trust a total.

Why copy and paste from a PDF doesn't give you columns

When a PDF has a text layer, its text can be read (this is what pdftotext does, and roughly what you get when you select and copy). It found every value of the quarterly report. What it returns is lines, with columns lined up by spaces (below). Paste that into Excel and each line lands in one cell of column A. Text to Columns can split it, but the item names have spaces in them, and the figures stay text until you strip the commas and turn the parentheses into minus signs. The scanned expense report has no text layer at all, so there is nothing to copy.

Condensed income statement
 Line item                                                 Q1 2026                Q2 2026            Q3 2026
 Revenue                                                412,300.00              438,950.00         471,120.00
 Cost of goods sold                                    (168,040.00)            (176,210.00)       (189,440.00)
 Gross profit                                           244,260.00              262,740.00         281,680.00
pdftotext -layout on the quarterly report, first rows of the income statement (blank lines removed).

On the scan, Tesseract found all 40 values as text, plus stray characters where the page had marks ("2026-09-02 = Hilton Chicago"). It, too, returns lines, not cells.

Excel's own Get Data From PDF

Excel can import PDF tables itself: Data > Get Data > From File > From PDF, pick the file, and the Navigator lists the tables it found so you can load one or several. Microsoft lists it for Microsoft 365, Excel 2024, 2021, 2019 and 2016, and it needs the .NET Framework 4.5 or later. It reads the text inside the PDF; Microsoft's page says nothing about scans, and an image-only PDF has no text for it to find. If your PDF has a text layer and you already have Excel, try it first, it costs nothing extra. This page also reads image-only scans and phone photos saved as PDF, works in any browser, turns (1,234.00) into -1234 as a number, and takes a plain-English filter such as "only rows where Amount is over 500".

Getting a clean result

  • Keep "Everything" when you want the tables exactly as printed. Use "Line items" or a description in the box when you want your own columns, for example "date, vendor and total for every invoice line".
  • A table that continues on the next page comes back as one table, with the repeated header dropped.
  • Part numbers and codes that start with 0 stay text, so 004512 doesn't become 4512.
  • For many PDFs, select them together (up to 25 per batch with a plan or a credit pack). They come back as one sheet with a source_file column.
  • Need the same thing for a program? PDF to CSV gives a UTF-8 CSV and PDF to JSON the raw structure.

Sources

  • pdftotext 26.10.0 (Poppler) run as pdftotext -layout file.pdf -, October 14, 2026
  • Tesseract 5.5.3 run as tesseract page.png - --psm 6 on the scanned page, October 14, 2026
  • Microsoft Support, "Import data from data sources (Power Query)", section From PDF (support.microsoft.com), checked October 14, 2026
  • ExtractFox runs on the same PDFs, October 14, 2026; script in the repo at scripts/samples/pdf-tables.mjs, method on how we test

Frequently asked questions

How do I extract a table from a PDF to Excel?+

Upload the PDF on this page, keep "Everything" selected, check the result on screen, then click Excel. You get an .xlsx file with the table's own headers and one row per row.

Can't I just copy the table from the PDF and paste it into Excel?+

You can try, but a pasted table usually lands as one line per cell in column A, because a PDF stores text positions, not cells. Text to Columns can split it only when no column has spaces inside it, and numbers with thousands separators or parentheses stay text. A scanned PDF has no text to copy at all.

Does it work on scanned PDFs?+

Yes. OCR is built in: an image-only PDF is read the same way as one with a text layer. In our test an image-only expense report came back with 40 of 40 cells right. Faint, low-resolution scans are where digits go wrong, and an unreadable cell comes back empty, not guessed.

What happens to a table that continues on the next page?+

It comes back as one table: the rows are joined in order and the header repeated at the top of each page is dropped.

What if the PDF has more than one table?+

Each table gets its own sheet in the .xlsx, named after the heading above it. On screen and in CSV they are listed together, with each row labelled by its table's caption and page.

Will the numbers work in formulas?+

Yes. Amounts, quantities and percentages are written as number cells without currency symbols or thousands separators, and a value in parentheses becomes negative. Part numbers and codes that start with 0 stay text so Excel doesn't drop the zero.

How is this different from Excel's Get Data From PDF?+

Excel 2016 and later can import PDF tables with Data > Get Data > From File > From PDF. It reads the PDF's text, so it suits PDFs exported from software. This page also reads image-only scans, works in any browser without Excel, turns (1,234.00) into -1234, and can return only the rows or columns you ask for.

Can I pull only some columns or rows?+

Yes. Type it in the box instead of keeping "Everything", for example "only rows where Amount is over 500" or "just date, vendor and total".

Can I convert many PDFs at once?+

Yes, up to 25 per batch with a plan or a one-time credit pack. They come back as one sheet with a source_file column. From code, use the API (see Developers).

Is my PDF stored?+

No. The file is processed and discarded; it isn't kept on our servers or used to train models.

Compare to alternatives

Related extractors