Metadata-Version: 2.4
Name: bankstatements-core
Version: 0.1.1
Summary: Core PDF bank statement parsing library
Author-email: longieirl <noreply@github.com>
License: Apache-2.0
Keywords: pdf,banking,statement,processor,automation
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: pdfplumber>=0.11.9
Requires-Dist: pypdf>=6.7.5
Requires-Dist: pandas>=2.2.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: tabulate>=0.9.0
Requires-Dist: openpyxl>=3.1.0
Requires-Dist: cryptography>=46.0.5
Provides-Extra: dev
Requires-Dist: black<27.0.0,>=23.0.0; extra == "dev"
Requires-Dist: isort<9.0.0,>=5.12.0; extra == "dev"
Requires-Dist: flake8<8.0.0,>=6.0.0; extra == "dev"
Requires-Dist: mypy<2.0.0,>=1.8.0; extra == "dev"
Requires-Dist: pyright>=1.1.350; extra == "dev"
Requires-Dist: types-python-dateutil>=2.8.0.0; extra == "dev"
Requires-Dist: types-openpyxl>=3.1.0.0; extra == "dev"
Requires-Dist: types-tabulate>=0.9.0.0; extra == "dev"
Requires-Dist: ipython<10.0.0,>=8.0.0; extra == "dev"
Requires-Dist: ipdb>=0.13.0; extra == "dev"
Requires-Dist: pre-commit<5.0.0,>=3.0.0; extra == "dev"
Requires-Dist: ruff<1.0.0,>=0.0.265; extra == "dev"
Requires-Dist: bandit[toml]<2.0.0,>=1.7.0; extra == "dev"
Requires-Dist: safety<4.0.0,>=2.0.0; extra == "dev"
Requires-Dist: detect-secrets<2.0.0,>=1.4.0; extra == "dev"
Requires-Dist: yamllint<2.0.0,>=1.33.0; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest>=7.0.0; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
Requires-Dist: pytest-xdist>=3.0.0; extra == "test"
Requires-Dist: pytest-benchmark>=4.0.0; extra == "test"
Requires-Dist: pytest-html>=4.0.0; extra == "test"
Requires-Dist: pytest-metadata>=3.0.0; extra == "test"
Requires-Dist: Faker>=21.0.0; extra == "test"

# bankstatements-core

[![CI](https://github.com/longieirl/bankstatementprocessor/actions/workflows/ci.yml/badge.svg)](https://github.com/longieirl/bankstatementprocessor/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/bankstatements-core)](https://pypi.org/project/bankstatements-core/)
[![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Core PDF bank statement parsing library — PDF extraction, services, and templates.

Used as the foundation for [`bankstatements-free`](https://pypi.org/project/bankstatements-free/) and the premium distribution.

---

## Installation

```bash
pip install bankstatements-core
```

## Features

- PDF extraction with configurable table boundaries
- Template-based statement detection (AIB Ireland, Revolut, and more)
- CSV, JSON, and Excel export
- Batch processing with recursive directory scanning
- SHA-256 duplicate detection
- Transaction type classification (purchase, payment, refund, fee, transfer)
- Monthly summaries and expense analysis
- IBAN extraction and grouping
- GDPR-compliant local processing — no data leaves your machine

## Supported Banks

| Bank | Template |
|---|---|
| AIB Ireland | `aib_ireland.json` |
| Revolut | `revolut.json` |
| Generic fallback | `default.json` |

## Quick Start

```python
from bankstatements_core.services.processor import StatementProcessor

processor = StatementProcessor(input_dir="./input", output_dir="./output")
results = processor.process()
```

## Documentation

Full documentation and source: [github.com/longieirl/bankstatementprocessor](https://github.com/longieirl/bankstatementprocessor)
