A Python library designed to parse bank operations from PDF statements
Project description
Welcome to the statement-reader
About
Welcome to the official documentation for statement-reader — a Python library designed to help you extract and structure data from bank PDF statements.
Banking operations are often provided in PDF format, which is great for human readability but not ideal for further processing by computers. This library solves that problem by parsing unstructured PDF text into structured Python objects that can be easily analyzed, stored, or visualized.
Basic usage
import psycopg2
from statement_reader.parsers import SberParser
from statement_reader.models import Operation
from pypdf import PdfReader
data: list[Operation] = []
reader = PdfReader("example.pdf")
for page in reader.pages:
raw_str = page.extract_text()
data.extend(SberParser.parse_lines(str_=raw_str))
conn = psycopg2.connect(dsn="postgres://postgres:secretpassword@localhost:15432/postgres")
with conn.cursor() as c:
c.execute("DELETE FROM public.stats")
for operation in data:
c.execute(
f"""
INSERT INTO public.stats (date_, time, category, income, remains, sum, weekday)
VALUES (%(date)s, %(time)s, %(category)s, %(is_income)s, %(remains)s, %(sum)s, %(weekday)s);
""", operation.model_dump()
)
conn.commit()
Why Use statement-reader?
- ✅ Extracts key operation fields: date, time, category, amount, balance, and more.
- ✅ Supports income/expense classification based on the transaction pattern.
- ✅ Automatically cleans up non-breaking spaces and commas for correct numeric parsing.
- ✅ Returns structured Python objects for easy integration with other tools and libraries.
- ✅ Designed for Sberbank statement lines, but extensible to other formats.
Getting Started
To get started, install the package:
pip install statement-reader
Usage
Use it to parse a line from a Sberbank statement:
from statement_reader.parsers import SberParser
line = "12.03.2024 14:22 456789 КАФЕ +100.00 12345.67"
operation = SberParser.parse_main_line(line)
print(operation.model_dump())
#> {
#> 'date': '2024-03-12',
#> 'time': '14:22',
#> 'category': 'КАФЕ',
#> 'sum': 100.0,
#> 'remains': 12345.67,
#> 'is_income': True,
#> 'weekday': 2
#> }
API Reference
For full details about classes, methods, and parameters, check out the API reference.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file statement_reader-0.2.4.tar.gz.
File metadata
- Download URL: statement_reader-0.2.4.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.25.4 CPython/3.13.5 Linux/6.14.0-24-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db32db5592a6bdc63e0e2e8606ef38732d18409b19e62f6c20b7f26930bc994f
|
|
| MD5 |
d902f4caba7b38a8c845c30da27e9e54
|
|
| BLAKE2b-256 |
1d475798d3e5005084dfcde9056f5591494b7ca3bf4782bf9cd4e97a7c52e093
|
File details
Details for the file statement_reader-0.2.4-py3-none-any.whl.
File metadata
- Download URL: statement_reader-0.2.4-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.25.4 CPython/3.13.5 Linux/6.14.0-24-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
392950b70742af56d0cd185697e51640861cff92b7048e263b2c4554e81aff10
|
|
| MD5 |
697ea453f0206ed3b9efc639dc8063b9
|
|
| BLAKE2b-256 |
e3f750f333e25a98ba601371e4ff98c46e1331c443cfe3a4dae66da55355a5bb
|