Der Smart Document Analyzer erkennt und extrahiert strukturierte Daten aus Rechnungen (OCR → Parsing) und stellt diese in einem Streamlit‑Dashboard dar. Der Code wurde überwiegend mit Unterstützung von KI-Tools erstellt. Um die Qualität sicherzustellen, habe ich die Ergebnisse überprüft, angepasst und eigene Logik ergänzt. So entstand ein hybrider Ansatz: KI-gestützte Generierung kombiniert mit menschlicher Kontrolle und Optimierung.
Funktionen:
- Einzel- und Batch‑Upload von PDFs
- EasyOCR für einfache und efffektiven Verarbeitung von Rechnungen
- Parser für relevante Informationen, wie Rechnungsnummern oder Datum
- Speicherung in SQLite
- Interaktive Visualisierungen mit Streamlit, um z. B. Rechnungssummen pro Firma zu zeigen
- Zeigt praktische Anwendung von OCR, Regex‑Parsing und Datenbankintegration.
- Demonstriert einen End‑to‑end‑Workflow: Datei → Texterkennung → Datenextraktion → Persistenz → Dashboard.
- Repository klonen
git clone <repo-url>
cd Smart-Document-Analyzer- Virtuelle Umgebung und Abhängigkeiten
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt- App starten
streamlit run dashboard/app.pydashboard/app.py– Streamlit UI (Upload, Anzeige, Batch‑Upload, Löschfunktion)extractor/ocr.py– OCR‑Wrapper (EasyOCR, PDF→Bild‑Konvertierung)extractor/parser.py– Extraktion von Informationen, wie Rechnungendb/– SQLite‑Schnittstelle (SQLAlchemy), Einfügen/Abrufen/Löschen, Datenbankdatei (SQLite)data/– temporäre Dateien
- Stelle sicher, dass das Verzeichnis
data/Schreibrechte hat. - Empfohlene Python‑Version: 3.10–3.13
- Dieses Projekt dient zur Demonstrationszwecke und ist für den produktiven Einsatz nicht vorgesehen.
- Genaugikeit bei bestimmten Rechnungsformate können nicht garantiert werden
- Starte die App (
streamlit run dashboard/app.py). - Einzel-Upload: Lade eine Beispielrechnung hoch, klicke „Analysieren“, zeige erkannte Felder und die Tabelle.
- Batch‑Upload: Mehrere PDFs hochladen, beobachte Fortschrittsbalken und Ergebnisse.
- Löschen: Wähle eine Rechnung in der Dropdown‑Liste und lösche sie; zeige die Aktualisierung.
- Statistik: Zeige Summen pro Firma und Zeitverlauf.
- Integration von EasyOCR in
extractor/ocr.py - Parsing‑Strategien (Regex + heuristische Zeilenverarbeitung) in
extractor/parser.py - DB‑Manager mit SQLAlchemy (
db/db_manager.py) und Streamlit‑UI (dashboard/app.py) - Batch‑Upload, Fortschrittsanzeige und grundlegende Fehlerbehandlung
ModuleNotFoundError: No module named 'extractor'→ Stelle sicher, dass du das Projektverzeichnis als Arbeitsverzeichnis nutzt oder füge__init__.pyin den Paketen hinzu. Alternativsys.pathanpassen.AttributeErrorbeist.rerun()→ Manche Streamlit‑Versionen habenexperimental_rerunnicht; es gibt ein_safe_rerun()‑Fallback im Code.- OCR liefert leeren Text → Prüfe PDF→Bild‑Konvertierung (Auflösung) und ob EasyOCR‑Modelle heruntergeladen wurden.
Daniel Reich alias DR9-Byte
Dieses Projekt ist unter der BSD 3-Clause License veröffentlicht.
Das bedeutet: Der Code darf frei genutzt, verändert und weitergegeben werden, solange die Bedingungen der Lizenz eingehalten werden.