Camelot: PDF Table Extraction for Humans

Camelot: PDF Table Extraction for Humans#

Release v1.0.0. (Installation)

Documentation Status https://codecov.io/github/camelot-dev/camelot/badge.svg?branch=main&service=github https://img.shields.io/pypi/v/camelot-py.svg https://img.shields.io/pypi/l/camelot-py.svg https://img.shields.io/pypi/pyversions/camelot-py.svg

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. colab

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.

See comparison with similar libraries and tools.

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.

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.