Choose theme
AI Resources
Camelot
Camelot is a Python library for turning tables in PDFs into rows and columns you can inspect or export as CSV. It gives you a way to work with a table that came in a report instead of a spreadsheet.
The library has several ways to find the cells. An optional machine-learning mode detects table structure and can use OCR to read text from scans. Use this as a first read, not a recommendation. Open the original project before trusting details like terms, limits, privacy, cost, setup, or safety.
What it is
From PDF table to CSV
Camelot returns each detected table separately. You can inspect it as a pandas DataFrame, a table you can work with in Python, or export it for a spreadsheet or data pipeline.
Why it stands out
Use grid lines or gaps
Lattice uses the lines drawn between cells. Stream uses the spacing between words. That gives you a different starting point for a table with a printed grid and one whose columns are separated by blank space.
Availability
A Python package with a CLI
The package is published as camelot-py for Python 3.10 or later. It includes a Python interface and a command-line tool. The main repository lists the MIT license.
Why it matters
What makes it useful
A PDF may show this year and last year side by side. If extraction merges those columns, a search or AI system can pick up the right number and attach it to the wrong year. Seeing the extracted cells gives you a chance to catch that before you use the data.
What to know
Where it fits
The quickstart shows one table going from a PDF to a CSV. You can start with the page that has the table you need, then use the same check on a few pages with different layouts before processing the rest of the report.
Notable points
What stands out
If the parser picks up a sidebar along with the table, Camelot lets you specify the rectangle to analyze. The advanced guide shows how to get those coordinates from a plot of the page text. Plotting requires the optional plot dependency.
Before using
What to review
The standard parsers need a PDF with selectable text. For image-only pages, the documented route uses the optional ML and OCR dependencies together.
The optional ML mode uses Table Transformer to detect rows, columns and spanning cells. It fills those cells from the PDF text layer when available. For a scan, the OCR step supplies the text.
The installation guide flags a conflict between two OpenCV packages when setting up OCR. Check its notes for your package manager before adding the OCR dependency.
Compare the extracted cells with the PDF. Check headers that span several columns and any row where a blank cell could make a value look like it belongs under a different heading.
Reader fit
Who may find it relevant
Camelot is useful when the table is the part you want to carry forward, such as a set of figures for comparing reports or adding to a searchable collection. Start with a table whose source values you can check.
Editorial note
Why LifeHubber lists it
LifeHubber lists Camelot because Stream lets you set the column boundaries yourself. The advanced guide shows what to try if two headings still land in the same cell after you mark the divider. Stream has a text-splitting option that can separate text at that boundary, so you can check the headings again before exporting.
Source links
Source materials
Reader note
Before relying on this entry
LifeHubber lists entries to help readers inspect AI projects, not to endorse them or prove they are safe, suitable, accurate, maintained, or right for a specific use. We do not verify every entry in depth. Before relying on anything listed, review the original materials, terms, privacy practices, limits, and risks that matter for your situation.
More in Ecosystem
Keep browsing this category
Explore more AI ecosystem resources.
Docling
docling-project/docling
A document conversion toolkit with structured text, tables and layout, native chunking for retrieval, Markdown and JSON exports, and local model configuration.
DocETL
ucbepic/docetl
A Python framework for extracting fields, classifying records and summarizing groups across collections of text, with a browser workspace for inspecting sample and intermediate outputs.
SwarmLLM (enapt)
enapt/SwarmLLM
An installed Rust node for local and peer-to-peer LLM inference, with model sharding, public or private discovery paths, a web dashboard, OpenAI- and Anthropic-compatible APIs, MCP tools, and optional provider routing.
For project maintainers
Listed here? You can use the badge.
If you maintain a project with a current LifeHubber listing, you may add the optional “Listed on LifeHubber AI Resources” badge to its README, docs, or website. No introduction or permission request is needed.