Extract tables from a PDF into CSV
Most "PDF to CSV" tools dump raw text and leave you to re-build the columns by hand. PDFjet finds the actual table structure — even in scanned invoices and multi-page reports — and returns clean, comma-separated rows with one API call. Here's how.
POST https://pdfjet.dev/extract/csv with your PDF as the file field. You get CSV back. Grab a free API key (100 pages/month, no card).
1. The one-line version (curl)
curl -X POST https://pdfjet.dev/extract/csv \
-H "Authorization: Bearer pj_live_..." \
-F [email protected] \
-o tables.csv
2. Python
import requests
with open("invoice.pdf", "rb") as f:
r = requests.post(
"https://pdfjet.dev/extract/csv",
headers={"Authorization": "Bearer pj_live_..."},
files={"file": f},
)
open("tables.csv", "wb").write(r.content)
3. Node.js
const fd = new FormData();
fd.append("file", new Blob([await fs.readFile("invoice.pdf")]), "invoice.pdf");
const res = await fetch("https://pdfjet.dev/extract/csv", {
method: "POST",
headers: { Authorization: "Bearer pj_live_..." },
body: fd,
});
await fs.writeFile("tables.csv", Buffer.from(await res.arrayBuffer()));
Scanned invoice? It still works.
If the PDF is a scan (image-only, no text layer), PDFjet detects that, runs OCR, and reconstructs the grid before returning CSV — so you don't need a separate OCR step. Multi-page tables are stitched into one CSV with a single header row.
Want to see it before writing any code? Drop a PDF into the free tool and preview the CSV instantly — no signup.
FAQ
Can I extract tables from a scanned PDF?
Yes. PDFjet detects scanned (image-only) pages, runs OCR, and reconstructs the table structure before returning CSV.
Does it handle multi-page tables?
Yes. Tables that span multiple pages are stitched into a single CSV with one header row.
Are my files stored?
No. Processing is stateless and files are never stored or used to train models.
Turn your PDFs into CSV in minutes
Free tier: 100 pages/month. No credit card.
Get your free API key →