Skip to main content

pypdf_table_extraction (Camelot): PDF Table Extraction for Humans

tests Documentation Status codecov.io image image image

pypdf_table_extraction Formerly known as Camelot is a Python library that can help you extract tables from PDFs!


Here's how you can extract tables from PDFs. You can check out the quickstart notebook. image

Or follow the example below. You can check out the PDF used in this example here.

>>> import pypdf_table_extraction
>>> tables = pypdf_table_extraction.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%

pypdf_table_extraction also comes packaged with a command-line interface!

Refer to the QuickStart Guide to quickly get started with pypdf_table_extraction, extract tables from PDFs and explore some basic options.

Tip: Visit the parser-comparison-notebook to get an overview of all the packed parsers and their features. image

Note: pypdf_table_extraction 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 pypdf_table_extraction?

  • Configurability: pypdf_table_extraction 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.

Installation

Using conda

The easiest way to install pypdf_table_extraction is with conda, which is a package manager and environment management system for the Anaconda distribution.

conda install -c conda-forge pypdf-table-extraction

Using pip

After installing the dependencies (tk and ghostscript), you can also just use pip to install pypdf_table_extraction:

pip install pypdf-table-extraction

From the source code

After installing the dependencies, clone the repo using:

git clone https://github.com/py-pdf/pypdf_table_extraction.git

and install using pip:

cd pypdf_table_extraction
pip install "."

Documentation

The documentation is available at http://pypdf-table-extraction.readthedocs.io/.

Wrappers

Related projects

  • camelot-sharp provides a C sharp implementation of pypdf_table_extraction (Camelot).

Contributing

The Contributor's Guide has detailed information about contributing issues, documentation, code, and tests.

Versioning

pypdf_table_extraction uses Semantic Versioning. For the available versions, see the tags on this repository. For the changelog, you can check out the releases page.

License

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

Metadata

Release files for pypdf-table-extraction 1.0.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 pypdf-table-extraction 1.0.2
File Size Uploaded
pypdf_table_extraction-1.0.2.tar.gz 59.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pypdf-table-extraction 1.0.2
File Interpreter ABI Platform
pypdf_table_extraction-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 131.0 kB

Release files / pypdf_table_extraction-1.0.2.tar.gz

Download URL pypdf_table_extraction-1.0.2.tar.gz
Size 59.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d4d2d2b5f3f478c3be2cfa2f148cb7dc6c3ccb28e53c2b2086d00e7d2bc4c8ec
BLAKE2b-256 checksum
How to use checksums
18543bb96623fe35036978729226518681df167f4736d5ddd656fea480b9bfab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release files / pypdf_table_extraction-1.0.2-py3-none-any.whl

Download URL pypdf_table_extraction-1.0.2-py3-none-any.whl
Size 71.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00957089c283a5c43c09fecd17099c5b07df45eb28193447b0ef0d81c09fee39
BLAKE2b-256 checksum
How to use checksums
ae9a56efc7d6f78f8078eca8080e1c00e0ceadd67816f6a3c0d415a5575426a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.2

2 release files

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