Camelot: PDF Table Extraction for Humans#
Release v1.0.0. (Installation)
Camelot is a Python library that can help you extract tables from PDFs.
Note
You can also check out Excalibur, the web interface to Camelot.
Extract tables from PDFs in just a few lines of code:
Try it yourself in our interactive quickstart notebook.
Or check out a simple example using this pdf.
>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf')
>>> tables
<TableList n=1>
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, markdown, sqlite
>>> tables[0]
<Table shape=(7, 7)>
>>> tables[0].parsing_report
{
'accuracy': 99.02,
'whitespace': 12.24,
'order': 1,
'page': 1
}
>>> tables[0].to_csv('foo.csv') # to_json, to_excel, to_html, to_markdown, to_sqlite
>>> tables[0].df # get a pandas DataFrame!
Cycle Name |
KI (1/km) |
Distance (mi) |
Percent Fuel Savings |
|||
Improved Speed |
Decreased Accel |
Eliminate Stops |
Decreased Idle |
|||
2012_2 |
3.30 |
1.3 |
5.9% |
9.5% |
29.2% |
17.4% |
2145_1 |
0.68 |
11.2 |
2.4% |
0.1% |
9.5% |
2.7% |
4234_1 |
0.59 |
58.7 |
8.5% |
1.3% |
8.5% |
3.3% |
2032_2 |
0.17 |
57.8 |
21.7% |
0.3% |
2.7% |
1.2% |
4171_1 |
0.07 |
173.9 |
58.1% |
1.6% |
2.1% |
0.5% |
Camelot also comes packaged with a command-line interface!
Note
Camelot only works with text-based PDFs and not scanned documents. (As Tabula explains, “If you can click and drag to select text in your table in a PDF viewer, then your PDF is text-based”.)
You can check out some frequently asked questions here.
Why Camelot?#
Configurability: Camelot gives you control over the table extraction process with tweakable settings.
Metrics: You can discard bad tables based on metrics like accuracy and whitespace, without having to manually look at each table.
Output: Each table is extracted into a pandas DataFrame, which seamlessly integrates into ETL and data analysis workflows. You can also export tables to multiple formats, which include CSV, JSON, Excel, HTML, Markdown, and Sqlite.
The User Guide#
This part of the documentation begins with some background information about why Camelot was created, takes you through some implementation details, and then focuses on step-by-step instructions for getting the most out of Camelot.
- Introduction
- Installation of dependencies
- Installation
- How It Works
- Quickstart
- Advanced Usage
- Process background lines
- Visual debugging
- Specify table areas
- Specify table regions
- Specify column separators
- Split text along separators
- Flag superscripts and subscripts
- Strip characters from text
- Improve guessed table areas
- Improve guessed table rows
- Detect short lines
- Shift text in spanning cells
- Copy text in spanning cells
- Tweak layout generation
- Use alternative image conversion backends
- Frequently Asked Questions
- Command-Line Interface
The API Documentation/Guide#
If you are looking for information on a specific function, class, or method, this part of the documentation is for you.
The Contributor Guide#
If you want to contribute to the project, this part of the documentation is for you.