pdftojson.dev
Tabula, Camelot & pdfplumber alternative

Extracting tables from PDFs in Python, when the libraries stall.

Tabula, Camelot and pdfplumber are free and fine for clean, ruled tables. When the layouts get messy or the PDF is scanned, here's a hosted API that just returns the data.

If you're extracting tables from PDFs in Python, you've probably reached for tabula-py, Camelot or pdfplumber. For clean, ruled tables they work well and they're free, and for a one-off script that's often all you need.

Where they get painful is the long tail: borderless tables, shifting layouts, multi-column pages, and scanned PDFs with no text layer at all. pdftojson is a hosted API for exactly those cases: POST the PDF, get structured data back as JSON, CSV or XML, with OCR for scans and nothing to install or maintain.

What the Python table libraries does well

Free and local

tabula-py, Camelot and pdfplumber are open-source and run on your own machine, so there's no per-page cost and nothing leaves your environment. For clean tables that's hard to beat.

Precise control

pdfplumber in particular gives you pixel-level control over table detection, which is great when you want to tune extraction yourself.

pdftojson vs the Python table libraries

pdftojsonthe Python table libraries
SetupOne API callpip install, then tune per PDF
Clean ruled tablesYesYes — and free
Messy / borderless tablesHandledOften needs manual tuning
Scanned PDFs (no text layer)Yes, with OCRNo — needs a separate OCR step
Output formatsJSON, CSV, XML, Markdown, TextDataFrame, CSV, JSON
MaintenanceNone — hostedYou own the dependencies and edge cases
Bank-statement reconciliationYesNo
CostFlat $29/mo (free tier)Free (your compute and time)

Where pdftojson is different

The honest version: if your tables are clean and ruled, Camelot or pdfplumber will do the job for free, and you should use them. The reason to reach for an API is the time you'd otherwise spend on the awkward 20% — the borderless layouts, the scans, the one bank that formats everything differently — plus not owning that maintenance forever.

pdftojson also does something the libraries don't: for bank statements it reconciles the extracted transactions against the opening and closing balances and flags any that don't add up, so you're not silently importing a dropped row.

Should I use pdftojson or just Camelot / pdfplumber?+

If your tables are clean and ruled and you're happy maintaining a script, the free libraries are a good choice. Reach for pdftojson when layouts are messy, PDFs are scanned, or you'd rather not own the edge cases.

Does pdftojson handle scanned PDFs?+

Yes, with OCR through the API. The Python table libraries only read a text layer, so scans need a separate OCR step first.

What output formats can I get?+

JSON, CSV, XML, Markdown or plain text.

Is there a free option?+

Yes — a free in-browser converter for text-based PDFs, and a free API tier to test on real files.