Skip to content

Extract Tables

New

Detected tables into CSV/Excel.

On a secure serverTakes PDF; makes CSV, XLSX.
Table detectionChecking…

Extract Tables runs on our secure server

Checking our secure server…

About this tool

Detect aligned tables inside a PDF's selectable text and export them to clean CSV files plus a combined Excel workbook. Scanned PDFs need OCR first.

Files are processed on a secure server, which deletes the upload when the job ends and serves the result for a limited time.

More details

Copying a table out of a PDF usually pastes as one long column, or as rows glued together with spaces. Extract Tables reads the position of every word on a page, puts words on the same line into one row, joins words set a normal space apart into one cell, and finds columns from the white-space gutters that run down the rows. It keeps a block as a table only when at least two columns each hold something in two or more rows, one column holds short values of fewer than 4 words each (and is not mostly bullet items), and no sentence wraps from one row into the next.

Titles, captions, paragraph lines and footnotes end a table rather than joining it, so a page can yield several tables, each saved as its own CSV and sheet. A one-line subheading set in a table's first column also ends it, so a sectioned table can come back as several. Three layouts still trip it up: two tables side by side on the same rows come out as one wide table, a cell that wraps in the first column ends its table, and a centred one-line note directly under a table can be taken as its last row.

Word positions come from the native pdftotext engine, so your PDF is uploaded over TLS to pdf.xyz's secure server rather than read in the browser. The input is deleted when the job finishes, the link the ZIP is served from expires after 60 minutes, and a daily storage rule erases the stored copy once that link has lapsed. A PDF above 100 MB is refused before any of it is uploaded, and each run takes one PDF.

When to use it

  • Grids of figures exported from software

    Results tables, timetables and lab logs exported by software put one number or code in each cell at fixed positions, which is the layout the detector handles most cleanly.

  • Getting a table into pandas, R or a database

    Each detected grid is saved as its own RFC-4180 CSV file, so a script can read table-1.csv directly instead of parsing an Excel workbook.

  • Long reports with one table per page

    A multi-page appendix yields one numbered CSV and one sheet per table found, and each sheet name carries the page number, so every result can be traced back to where it came from.

How it works

  1. 1Add the PDF

    Drop one PDF onto the area that reads Add your PDF, or browse, or click browse to pick it. As its Selectable PDF hint says, the file needs real text rather than a scanned image. The area takes a file at once, Extract tables works only while the status badge reads Secure server, and a Remove button beside the chosen file's name clears a wrong pick.

  2. 2Press Extract tables

    Table detection takes no options, so this button is the only control. A file over 100 MB is refused as soon as you pick it, before anything is read or sent. While the job runs, the button reads Uploading your file…, Waiting for our server…, Extracting tables… and Downloading the result… in turn, and it stays busy until the ZIP has come back to your browser. A scan with no text, or a file in which no table is detected, shows an error beneath the button in place of a result.

  3. 3Download the ZIP

    The button under the ready message reads Download followed by the output name, so report.pdf comes back as report-tables.zip. That button appears only once your browser has fetched the ZIP, so clicking it writes the file to disk without another trip to the server. Inside are table-1.csv, table-2.csv and so on, plus tables.xlsx with sheets named like Table 1 (p3).

  4. 4Check each sheet against its page

    Compare each sheet with the page named in its tab. Check that a note printed directly under a table was not taken as its last row, that a cell wrapping in the first column did not end its table early, and that two tables side by side were not read as one wide table.

Common questions

How is this different from PDF to Excel?

PDF to Excel returns a single XLSX with every line of the PDF's text in one sheet, each value placed in the column its position puts it in, so it suits getting all of the text into a grid. Extract Tables looks only for table-shaped blocks, leaves out the titles, captions and prose around them, and gives each table it finds its own sheet and CSV file. Both keep 1,250.00 whole and leave an empty cell empty.

What if only some pages of my PDF are scans?

The pages with text are read as usual, and the scanned pages simply produce nothing. A file with no text on any page stops with a message telling you to run OCR PDF first; add a text layer there, then bring the searchable PDF back.

Why did two columns come out as one?

Columns are found from the white space that runs down the rows. When a long cell in some row fills the gap between two columns, there is no gap left and those two columns are read as one for that table. A heading spanning two columns over the rows beneath it is allowed for. Two tables side by side on the same rows also read as one wide table. Multi-word cells such as North America or 12 March 2024 stay in one cell, right-aligned amounts stay in one column, and merged header cells are not reconstructed.

Why did a page with an obvious table return nothing?

A block counts as a table only when at least two columns each hold something in two or more rows, one column holds short values of fewer than 4 words each (and is not mostly bullet items), and no sentence wraps from one row into the next. Two columns of prose, side-by-side bulleted lists and letterhead lines fail those tests on purpose. A table in which every column holds longer text can fail them too, as can one cut into single rows by one-line subheadings. If nothing in the file passes, the job ends with the message that no table-like structure was detected.

What happens to a table that runs over several pages?

Each page is analysed on its own, so a table spanning three pages comes out as separate CSV files and sheets, at least one for each page whose part of it is detected as a table, and a header row the PDF repeats on each page is repeated in each sheet too. Stack the sheets and delete the repeats to rebuild it.

Does Excel see my numbers as numbers?

Yes, when a cell holds exactly one number. Values such as 1,250.00, $4.20, 15% or -4 are stored in tables.xlsx as numbers with a matching format, so they can be summed straight away. A code with a leading zero such as 00123, a number of more than 15 significant digits, a European 1.250,00, a date or a bracketed negative stays text exactly as printed. The CSV files have no byte-order mark, so if accented characters look wrong after a double-click, open them through Excel's text import.

How large can my file be?

Up to 100 MB per file.

What does Extract Tables download?

A ZIP with one CSV file per table it found (table-1.csv, table-2.csv and so on) and tables.xlsx, an Excel workbook holding every table on its own sheet, named after the table's number and page.

How does Extract Tables find a table?

By where the text sits: words set a normal space apart are joined into one cell, columns come from the white-space gutters that run down the rows, and a block is kept only where at least two columns hold values in two or more rows and one column holds short values rather than sentences. Ruled lines and cell borders are not read, so a table is found by its alignment alone.

Can Extract Tables read a scanned PDF?

No. A scanned page is a picture with no selectable text, so the job stops and says so rather than guessing. Run the scan through OCR PDF first, then extract from the result.

No sign-up required. Your files stay on your device until you run a tool.