tuyenta / xTable

Table extraction, camelot-folked version but with a lot of fix and change in the structure and the algorithm behind.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

xTable: Table Extraction from Document

tests Documentation Status codecov.io image image image Gitter chat image

xTable is a Python library that can help you extract tables from documents in PDFs, both scanned nor native!

Note: You can also check out Excalibur, the web interface to xTable!


Here's how you can extract tables from PDFs. You can check out the PDF used in this example here.

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

xTable also comes packaged with a command-line interface!

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

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

Support the development

If xTable has helped you, please consider supporting its development with a one-time or monthly donation on OpenCollective.

Installation

Using conda

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

$ conda install -c conda-forge xtable

Using pip

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

$ pip install "xtable[base]"

From the source code

After installing the dependencies, clone the repo using:

$ git clone https://www.github.com/camelot-dev/camelot

and install xTable using pip:

$ cd xtable
$ pip install ".[base]"

Documentation

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

Contributing

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

Versioning

xTable uses Semantic Versioning. For the available versions, see the tags on this repository. For the changelog, you can check out HISTORY.md.

License

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

About

Table extraction, camelot-folked version but with a lot of fix and change in the structure and the algorithm behind.

License:MIT License


Languages

Language:Python 99.8%Language:Makefile 0.2%