Skip to content

DR9-Byte/Smart-Document-Analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Document Analyzer

Kurzbeschreibung

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

Warum dieses Projekt

  • Zeigt praktische Anwendung von OCR, Regex‑Parsing und Datenbankintegration.
  • Demonstriert einen End‑to‑end‑Workflow: Datei → Texterkennung → Datenextraktion → Persistenz → Dashboard.

Schnellstart (Windows / PowerShell)

  1. Repository klonen
git clone <repo-url>
cd Smart-Document-Analyzer
  1. Virtuelle Umgebung und Abhängigkeiten
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
  1. App starten
streamlit run dashboard/app.py

Projektstruktur

  • dashboard/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 Rechnungen
  • db/ – SQLite‑Schnittstelle (SQLAlchemy), Einfügen/Abrufen/Löschen, Datenbankdatei (SQLite)
  • data/ – temporäre Dateien

Wichtige Hinweise

  • Stelle sicher, dass das Verzeichnis data/ Schreibrechte hat.
  • Empfohlene Python‑Version: 3.10–3.13

Limitierungen

  • Dieses Projekt dient zur Demonstrationszwecke und ist für den produktiven Einsatz nicht vorgesehen.
  • Genaugikeit bei bestimmten Rechnungsformate können nicht garantiert werden

Kurze Demo‑Ablauf (für Vorstellung)

  1. Starte die App (streamlit run dashboard/app.py).
  2. Einzel-Upload: Lade eine Beispielrechnung hoch, klicke „Analysieren“, zeige erkannte Felder und die Tabelle.
  3. Batch‑Upload: Mehrere PDFs hochladen, beobachte Fortschrittsbalken und Ergebnisse.
  4. Löschen: Wähle eine Rechnung in der Dropdown‑Liste und lösche sie; zeige die Aktualisierung.
  5. Statistik: Zeige Summen pro Firma und Zeitverlauf.

Was ich selbst implementiert habe

  • 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

Kurzes Troubleshooting

  • ModuleNotFoundError: No module named 'extractor' → Stelle sicher, dass du das Projektverzeichnis als Arbeitsverzeichnis nutzt oder füge __init__.py in den Paketen hinzu. Alternativ sys.path anpassen.
  • AttributeError bei st.rerun() → Manche Streamlit‑Versionen haben experimental_rerun nicht; 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.

Screenshot

image

Autor

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.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages