Metadata-Version: 2.4
Name: pdf-table-extractor-cli
Version: 1.0.0
Summary: Extract structured tables from PDF files into editable Excel (XLSX) or CSV.
Home-page: https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter
Author: TheFreeConverter
Author-email: contact@thefreeconverter.com
Project-URL: Source, https://github.com/The-Free-Converter/pdf-table-extractor
Project-URL: Bug Tracker, https://github.com/The-Free-Converter/pdf-table-extractor/issues
Project-URL: Online Tool, https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter
Project-URL: Documentation, https://thefreeconverter.com
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Utilities
Classifier: Topic :: Text Processing :: General
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pdfplumber>=0.10.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: openpyxl>=3.1.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# PDF Table Extractor CLI

[![PyPI version](https://img.shields.io/badge/pypi-v1.0.0-blue.svg)](https://pypi.org/project/pdf-table-extractor-cli/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Web Tool](https://img.shields.io/badge/Online%20Tool-TheFreeConverter-emerald)](https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter)

A lightweight CLI utility and Python library to extract structured tables from PDF files directly into clean, editable Microsoft Excel (`.xlsx`) or `.csv` files.

An online browser-based version is available at [TheFreeConverter PDF to Excel Converter](https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter).

---

## Features

- **Multi-Table Detection**: Automatically detects table boundaries on each page.
- **Smart Sheet Naming**: Multi-table documents are organized with each table placed onto its own sheet (e.g. `Page1_T1`, `Page2_T1`).
- **Header Normalization**: Strips excessive whitespace, eliminates empty columns, and deduplicates column headers.
- **Flexible Formats**: Export to multi-sheet `.xlsx` workbooks or individual `.csv` files.
- **Local Execution**: Runs entirely on your local machine with no external network calls.

---

## Installation

```bash
pip install pdf-table-extractor-cli
```

Or install from source:

```bash
git clone https://github.com/The-Free-Converter/pdf-table-extractor.git
cd pdf-table-extractor
pip install -r requirements.txt
pip install -e .
```

---

## Quickstart & CLI Usage

### 1. Extract tables to an Excel (.xlsx) file
```bash
pdf-table-extractor statement.pdf
# Outputs: statement.xlsx with one sheet per detected table
```

### 2. Specify a custom output path
```bash
pdf-table-extractor invoice.pdf -o ./output/parsed_invoice.xlsx
```

### 3. Export tables as separate CSV files
```bash
pdf-table-extractor quarterly_report.pdf --csv
# Outputs: quarterly_report_Page1_T1.csv, quarterly_report_Page2_T1.csv, ...
```

---

## Python API Usage

You can also use `pdf-table-extractor` as a Python module in your scripts:

```python
from pdf_table_extractor import TableExtractor, extract_tables_to_excel

# Simple one-line conversion
tables_found = extract_tables_to_excel("financial_report.pdf", "output.xlsx")
print(f"Extracted {tables_found} tables into output.xlsx")

# Advanced: Access raw pandas DataFrames
extractor = TableExtractor("financial_report.pdf")
tables = extractor.extract_all_tables()

for table in tables:
    page_num = table["page"]
    sheet_name = table["sheet_name"]
    df = table["data"]
    print(f"--- Page {page_num} ({sheet_name}) ---")
    print(df.head())
```

---

## Troubleshooting & Best Practices

1. **Scanned Documents**:  
   This tool is designed for native digital PDFs with selectable text layers (such as invoices, bank statements, and software exports). Scanned PDFs containing only raster images require an OCR step beforehand.
2. **Merged Headers**:  
   Tables with multi-row merged headers may require manual column verification in Excel.
3. **Large Files**:  
   For very large documents, extract specific pages or use the web version.

---

## Web Version

The web version is hosted at:  
[https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter](https://thefreeconverter.com/converters/document-converters/pdf-to-excel-converter)

---

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
