pypdf_table_extraction (Camelot):#

PDF Table Extraction for Humans#

Release v1.0.2. (Installation)

Documentation Status https://codecov.io/github/py-pdf/pypdf_table_extraction/badge.svg?branch=main&service=github https://img.shields.io/pypi/v/pypdf-table-extraction.svg https://img.shields.io/pypi/l/pypdf-table-extraction.svg https://img.shields.io/pypi/pyversions/pypdf-table-extraction.svg

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

Note

pypdf_table_extraction is the continuation of Camelot and inteded to be a compatible replacement. You can use the old ‘camelot’ name as well as ‘pypdf_table_extraction’ for the library and the command-line interface.


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

https://colab.research.google.com/assets/colab-badge.svg

Or follow the example below. You can find 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!

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.

The User Guide#

This part of the documentation begins with some background information about why pypdf_table_extraction was created, takes you through some implementation details, and then focuses on step-by-step instructions for getting the most out of pypdf_table_extraction.

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.