Extract Tables from PDF to CSV & Excel: Camelot Extractor
Pricing
$20.00 / 1,000 tables
Extract Tables from PDF to CSV & Excel: Camelot Extractor
Extract tables from any PDF into clean structured rows ready for CSV or Excel. Auto-detects ruled and borderless tables, with page number, row/column counts, and an accuracy score per table. Powered by Camelot, the open-source PDF table extraction library.
Pricing
$20.00 / 1,000 tables
Rating
0.0
(0)
Developer
Raion Al
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract Tables from PDF to CSV & Excel: Camelot Table Extractor
Extract tables from PDF files into clean, structured rows and columns, ready to drop straight into CSV or Excel. Point it at a PDF URL (or upload a file) and get back every table it finds: page number, row/column counts, an accuracy score, and the table's data as a row-and-column grid.
Powered by Camelot (MIT licensed, 3,700+ GitHub stars), the open-source PDF table extraction library used across data-engineering and RAG pipelines.
Great for: extract tables from PDF, PDF table extractor, PDF table to CSV, PDF table to Excel, PDF to CSV API, financial statement and invoice line-item extraction, scientific/research paper tables, government and statistical report tables, and any pipeline that needs structured data out of PDF reports.
What it does
Give it a list of PDF URLs, or upload a file directly. For every PDF, it scans every page, finds every table, and returns one dataset row per table: the source document, the page it was found on, its position in the document, its size, a quality/accuracy score, and its full contents as a row-by-row grid of cell values, ready to export as CSV, Excel, or JSON straight from the Apify dataset (use the Export dataset button on the run's Storage tab).
Table type: lattice vs. stream
PDF tables come in two visual styles, and Camelot uses a different detection strategy for each:
flavor | Best for | How it works |
|---|---|---|
auto (default) | Mixed or unknown PDFs | Detects the style per page automatically |
lattice | Tables with visible grid lines/borders (invoices, bank statements, financial reports) | Detects the ruled lines that box in each cell |
stream | Tables with no visible lines, columns aligned by whitespace only | Detects columns from text alignment and spacing |
Auto-detection is convenient but not perfect: on some documents it can misjudge which style to use and return a degenerate result (e.g. one column instead of eight). If a table comes back looking wrong, re-run with flavor set explicitly to lattice or stream based on how the table actually looks in the PDF.
Example input
{"documents": ["https://raw.githubusercontent.com/camelot-dev/camelot/master/docs/_static/pdf/foo.pdf"],"flavor": "auto"}
Output
One row per table found:
| Field | Description |
|---|---|
documentUrl | The source PDF |
status | ok, no_tables_found, or error |
pageNumber | Page the table was found on |
tableIndex | Position of this table within the document (1, 2, 3, …) |
rowCount / columnCount | Size of the table |
accuracy | Camelot's own parsing accuracy score (0–100) |
flavor | Which detection method was actually used for this table |
data | The table's contents as an array of rows, each row an array of cell values |
error | Present only when status is error |
A document with no tables produces a single no_tables_found row rather than an error, so you can tell "processed, nothing there" apart from "failed to process."
Pricing
Billed per table successfully extracted: fair for a one-table invoice vs. a ten-table financial report. Documents that fail to process, and documents where no tables are found, are not charged.
FAQ
How do I extract tables from a PDF?
Paste the PDF's URL into documents (or upload the file) and run. Each table found comes back as its own row in the output, with the data in the data field.
How do I convert a PDF table to CSV or Excel? Run the actor, then use Apify's own Export dataset button (Storage tab) to download the results as CSV, Excel (XLSX), or JSON. No extra conversion step needed.
What's the difference between lattice and stream?
Lattice looks for tables with visible grid lines (like a bank statement or invoice). Stream looks for tables with no visible lines, where columns just line up with consistent spacing. auto picks per page, but isn't foolproof; see above.
Does this work on scanned PDFs (images with no real text)? Not this actor. Camelot's lattice/stream/auto parsers read the PDF's embedded text layer; a scanned page that's really just a photo of a document has no text layer to read. It works great on regular digital PDFs, including ones exported from Word/Excel/accounting software, or scanned PDFs that have already been OCR'd elsewhere so they have a text layer.
Can it handle a PDF with multiple tables, or tables on different pages? Yes. Every table on every page is detected and returned as its own row, in document order.
How is this different from just using Camelot myself? Camelot is a Python library: using it yourself means installing Python, OpenCV, and managing compute. This runs it as a hosted API: no setup, pay only for tables actually extracted.
Please note
Only process documents you have the right to. PDFs are processed transiently for the run and not retained afterward.
Built with the Apify Python SDK + Camelot.