Skip to content

sedemhaligah/expenseTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Expense Tracker

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.


Projektziele

  • 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

Projektstruktur

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

Voraussetzungen

  • Python 3.9 oder höher

Überprüfung der Python-Version:

python3 --version


Installation

Python-Abhängigkeiten installieren

Alle benötigten Python-Bibliotheken sind in der Datei requirements.txt definiert:

pip install -r requirements.txt

Verwendete Python-Bibliotheken

  • 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.


OCR Setup (optional, aber empfohlen)

Für die Texterkennung aus Belegfotos wird Tesseract OCR verwendet. Tesseract muss systemweit installiert sein.

macOS (Homebrew)

brew install tesseract

Linux (Debian / Ubuntu)

sudo apt install tesseract-ocr tesseract-ocr-deu

Windows

  1. Download: https://github.com/UB-Mannheim/tesseract/wiki
  2. Während der Installation Deutsch (deu) auswählen
  3. Sicherstellen, dass tesseract im PATH verfügbar ist

Installierte Sprachen prüfen

tesseract --list-langs

Erwartete Ausgabe enthält unter anderem:

deu eng


Projekt starten

CLI-Version (Terminal)

Die CLI-Version ermöglicht die manuelle Eingabe von Belegen:

python3 main.py

Beispiel-Eingabe:

Edeka Hamburg 12.12.2024 23,50€


Dashboard (empfohlen)

Start des Streamlit-Dashboards:

cd dashboard python3 -m streamlit run app.py

Im Browser öffnen:

http://localhost:8501


Dashboard-Funktionen

  • 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


Technische Umsetzung

Beleg-Parser

  • 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

Speicherung

  • CSV-basierte Speicherung (expenses.csv, incomes.csv)
  • Dateien werden automatisch beim ersten Eintrag erzeugt
  • Plattformunabhängige Pfadbehandlung mit pathlib

Visualisierung

  • Matplotlib für Diagramme
  • Streamlit für interaktive UI-Komponenten
  • Übersichtlich gestaltete Kreisdiagramme (Pie Charts) zur Kategorienübersicht

Lizenz

Dieses Projekt wurde im Rahmen eines Hochschulmoduls erstellt und dient ausschließlich Lehr- und Demonstrationszwecken.


Hinweise zur Nutzung externer Hilfsmittel

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.


Autoren

  • Karl Haligah
  • Darryl Joel
  • Mostafa Mousavi

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages