Der Smart Expense Tracker ist eine Python-basierte Anwendung zur Erfassung, Analyse und Visualisierung persönlicher Ausgaben. Belege können manuell, als Text oder per Foto (OCR) erfasst werden. Die Daten werden in CSV-Dateien gespeichert und über ein interaktives Streamlit-Dashboard visualisiert.
Das Projekt wurde im Rahmen eines Hochschulmoduls entwickelt und legt besonderen Wert auf saubere Architektur, Praxisnähe und nachvollziehbare Dokumentation.
- Automatische Erfassung von Ausgaben aus Kassenbelegen
- Unterstützung von OCR (Belegfoto → Text → strukturierte Daten)
- Persistente Speicherung der Daten in CSV-Dateien
- Interaktive Visualisierung von Ausgaben und Einkommen
- Modularer und wartbarer Python-Code
- Klare Trennung von Backend-Logik und Frontend-Dashboard
python-projekt/ ├── backend/ │ ├── data_loader.py – Laden von Belegtexten (Datei & Tastatur) │ ├── expense_manager.py – Verwaltung und Speicherung der Ausgaben │ ├── receipt_parser.py – Regex-basierter Beleg-Parser │ ├── utils.py – Hilfsfunktionen (Logging) │ └── visualizer.py – Matplotlib-Visualisierungen │ ├── dashboard/ │ └── app.py – Streamlit Dashboard (Frontend) │ ├── expenses.csv – Ausgaben (automatisch erzeugt) ├── incomes.csv – Einkommen (automatisch erzeugt) │ ├── main.py – CLI-Version zur Belegerfassung ├── requirements.txt – Python-Abhängigkeiten └── README.md – Projektdokumentation
- Python 3.9 oder höher
Überprüfung der Python-Version:
python3 --version
Alle benötigten Python-Bibliotheken sind in der Datei requirements.txt definiert:
pip install -r requirements.txt
- streamlit – Web-Dashboard und Benutzeroberfläche
- pandas – Datenverarbeitung und Aggregationen
- matplotlib – Diagramme und Visualisierungen
- numpy – numerische Berechnungen
- pillow – Bildverarbeitung
- opencv-python – Bildvorverarbeitung für OCR
- pytesseract – Python-Wrapper für Tesseract OCR
Hinweis: Tesseract OCR selbst ist ein Systemprogramm und wird nicht über pip installiert.
Für die Texterkennung aus Belegfotos wird Tesseract OCR verwendet. Tesseract muss systemweit installiert sein.
brew install tesseract
sudo apt install tesseract-ocr tesseract-ocr-deu
- Download: https://github.com/UB-Mannheim/tesseract/wiki
- Während der Installation Deutsch (deu) auswählen
- Sicherstellen, dass
tesseractim PATH verfügbar ist
tesseract --list-langs
Erwartete Ausgabe enthält unter anderem:
deu eng
Die CLI-Version ermöglicht die manuelle Eingabe von Belegen:
python3 main.py
Beispiel-Eingabe:
Edeka Hamburg 12.12.2024 23,50€
Start des Streamlit-Dashboards:
cd dashboard python3 -m streamlit run app.py
Im Browser öffnen:
-
Hinzufügen von Belegen
- manuell
- per Texteingabe
- per Foto (OCR)
-
Automatische Extraktion von
- Gesamtbetrag (bevorzugt aus der „SUMME“-Zeile)
- Datum
- Händler
- Kategorie
-
Anzeige von
- Gesamtausgaben
- Einkommen
- Ersparnissen
-
Ausgaben nach Kategorie (Kreisdiagramm / Pie Chart)
-
Cashflow-Analyse (Einnahmen vs. Ausgaben)
-
Zeitfilter (Woche / Monat / Jahr)
-
Bearbeiten und Löschen bestehender Einträge
-
Regex-basierte Extraktion von Belegdaten
-
Betrag wird bevorzugt aus der „SUMME“-, „ENDSUMME“- oder „GESAMT“-Zeile extrahiert
-
Unterstützte Datumsformate
- dd.mm.yy
- dd.mm.yyyy
-
Robuste Fallback-Logik bei unvollständigen OCR-Ergebnissen
- CSV-basierte Speicherung (
expenses.csv,incomes.csv) - Dateien werden automatisch beim ersten Eintrag erzeugt
- Plattformunabhängige Pfadbehandlung mit
pathlib
- Matplotlib für Diagramme
- Streamlit für interaktive UI-Komponenten
- Übersichtlich gestaltete Kreisdiagramme (Pie Charts) zur Kategorienübersicht
Dieses Projekt wurde im Rahmen eines Hochschulmoduls erstellt und dient ausschließlich Lehr- und Demonstrationszwecken.
Bei der Entwicklung dieses Projekts wurden unterstützende Hilfsmittel eingesetzt:
- **Vorlesungsfolien ** des Moduls dienten als fachliche Grundlage für Architekturentscheidungen, Programmierkonzepte und Best Practices.
- ChatGPT (OpenAI) wurde unterstützend genutzt:
- zur Strukturierung der Projektdokumentation (README)
- zur Diskussion von Code-Architektur und Designentscheidungen
- zur Fehlersuche und Verbesserung der Lesbarkeit einzelner Codeabschnitte
Die Konzeption, Implementierung, Integration und finale Ausarbeitung des Codes sowie das fachliche Verständnis der eingesetzten Technologien lagen vollständig bei den Projektmitgliedern.
ChatGPT wurde nicht zur automatischen Generierung vollständiger Lösungen verwendet, sondern ausschließlich als unterstützendes Werkzeug im Entwicklungsprozess.
- Karl Haligah
- Darryl Joel
- Mostafa Mousavi