Extract Tables from PDF to CSV & Excel: Camelot Extractor avatar

Extract Tables from PDF to CSV & Excel: Camelot Extractor

Pricing

$20.00 / 1,000 tables

Go to Apify Store
Extract Tables from PDF to CSV & Excel: Camelot Extractor

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

Raion Al

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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:

flavorBest forHow it works
auto (default)Mixed or unknown PDFsDetects the style per page automatically
latticeTables with visible grid lines/borders (invoices, bank statements, financial reports)Detects the ruled lines that box in each cell
streamTables with no visible lines, columns aligned by whitespace onlyDetects 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:

FieldDescription
documentUrlThe source PDF
statusok, no_tables_found, or error
pageNumberPage the table was found on
tableIndexPosition of this table within the document (1, 2, 3, …)
rowCount / columnCountSize of the table
accuracyCamelot's own parsing accuracy score (0–100)
flavorWhich detection method was actually used for this table
dataThe table's contents as an array of rows, each row an array of cell values
errorPresent 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.