Extracting tables from PDFs with free, open-source tools
2026-09-06 · 7 min read
You can get tables out of PDFs without paying anyone. This is the honest guide to doing exactly that — which free tool fits which PDF, where each one breaks, and the two problems none of them solve. We build a commercial extractor, so read the disclosure into everything below; the tools here are genuinely good and we recommend them for the jobs they fit.
First, one question that decides everything
Open your PDF and try to select the text with your cursor. If you can, it's a text-based PDF and every tool below works. If you can't — it's a photograph of a page — none of them do: Tabula, Camelot and pdfplumber all read the PDF's text layer, and a scan doesn't have one. Scanned documents need OCR first, which is a different problem with different (and mostly non-free) answers.
Tabula — the one with a GUI
Tabula is a small desktop app: load a PDF, drag a box around the table, export CSV. No code, runs locally, free. It's the right first stop for a one-off table on a page. Its limits show at volume — every page is a manual selection — and on messy layouts: merged cells, wrapped rows that spill a description over two lines, and multi-line headers come out scrambled and need hand-tidying in a spreadsheet afterwards.
Camelot — the precise one, in Python
Camelot gives you two extraction modes that map to how tables are actually drawn: lattice follows ruled cell borders, stream infers columns from whitespace when there are no lines. It reports an accuracy score per table, returns pandas DataFrames, and is scriptable across a folder of files. The catch is that the mode choice matters and neither handles a table whose borders are drawn as filled rectangles rather than lines — the trick HTML-to-PDF generators pull — which we've written about breaking our own parser.
pdfplumber — the flexible one
pdfplumber sits a level lower: it exposes every character, line and rectangle with coordinates, plus a table extractor you can tune. When Camelot's two modes both fail, pdfplumber is what you drop down to — at the price of writing real extraction logic yourself. It's what many commercial tools (ours included) build on internally.
The spreadsheet-app tricks
Worth knowing before installing anything: Excel can import from PDF directly (Data → Get Data → From File → From PDF) and lists each table it finds; Word opens many PDFs and converts tables to editable ones you can paste into Sheets. Both work surprisingly often on simple tables and mangle complex ones the same way Tabula does. Free, already installed, two minutes to try.
The two problems none of these solve
- Wrapped rows. A long description that spills onto a second line becomes a phantom row with empty cells. Every tool above produces it; you fix it by hand, row by row.
- Silent misses. A dropped row looks exactly like a complete extraction — nothing tells you 38 of 40 rows arrived. On a price list that's an annoyance; on a bank statement or invoice it's a wrong number in your books, discovered much later.
The second one is why we built our extractor the way we did: for financial documents it checks the extraction against the document's own arithmetic — statement balances, invoice totals — and tells you plainly whether everything reconciled. For a clean one-off table, use Tabula and keep your money. For numbers that have to be right, use something that can prove it got them all.