Skip to main content

Camelot: PDF Table Extraction for Humans

Build Status codecov.io image image image

Camelot is a Python library which makes it easy for anyone to extract tables from PDF files!


Here's how you can extract tables from PDF files. Check out the PDF used in this example, here.

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf')
>>> tables
<TableList tables=1>
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html
>>> 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
>>> 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%

There's a command-line interface too!

Why Camelot?

  • You are in control: Unlike other libraries and tools which either give a nice output or fail miserably (with no in-between), Camelot gives you the power to tweak table extraction. (Since everything in the real world, including PDF table extraction, is fuzzy.)
  • Metrics: Bad tables can be discarded based on metrics like accuracy and whitespace, without ever having to manually look at each table.
  • Each table is a pandas DataFrame, which enables seamless integration into ETL and data analysis workflows.
  • Export to multiple formats, including json, excel and html.

See comparison with other PDF table extraction libraries and tools.

Installation

After installing the dependencies (tk and ghostscript), you can simply use pip to install Camelot:

$ pip install camelot-py

Alternatively

After installing the dependencies, clone the repo using:

$ git clone https://www.github.com/socialcopsdev/camelot

and install Camelot using pip:

$ cd camelot
$ pip install .

Note: Use a virtualenv if you don't want to affect your global Python installation.

Documentation

Great documentation is available at http://camelot-py.readthedocs.io/.

Development

The Contributor's Guide has detailed information about contributing code, documentation, tests and more. We've included some basic information in this README.

Source code

You can check the latest sources with:

$ git clone https://www.github.com/socialcopsdev/camelot

Setting up a development environment

You can install the development dependencies easily, using pip:

$ pip install camelot-py[dev]

Testing

After installation, you can run tests using:

$ python setup.py test

Versioning

Camelot uses Semantic Versioning. For the available versions, see the tags on this repository.

License

This project is licensed under the MIT License, see the LICENSE file for details.

Release files for camelot-py 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for camelot-py 0.1.2
File Size Uploaded
camelot-py-0.1.2.tar.gz 24.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for camelot-py 0.1.2
File Interpreter ABI Platform
camelot_py-0.1.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 55.0 kB

Release files / camelot-py-0.1.2.tar.gz

Download URL camelot-py-0.1.2.tar.gz
Size 24.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2b68aeeb0942aa5ccf960b5b2a36c5ab0cea059604f7a7b82e3803bebc39b7de
BLAKE2b-256 checksum
How to use checksums
f0af0937850b657637b479c272fe7ee0b29b6d442bf650e96c36d790c5410bf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15rc1

Release files / camelot_py-0.1.2-py2.py3-none-any.whl

Download URL camelot_py-0.1.2-py2.py3-none-any.whl
Size 31.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
557473c414d19360bf793c0783731de8c4efd38843a5f6205e4a21f046f3d5c0
BLAKE2b-256 checksum
How to use checksums
7c723655af159a7e07274cce5c54313ee74d67ab501af42ed8927fa61351bcc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15rc1

Release history Release notifications | RSS feed

2.0.0

2 release files

1.0.9

2 release files

1.0.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page