# Dateiverwaltung Dokumenten-Management-System für automatische Verarbeitung, Sortierung und Benennung von Dokumenten. ## Features - **Mail-Abruf**: Automatischer Abruf von Attachments aus IMAP-Postfächern - **Grobsortierung**: Dateien nach Typ verschieben (PDF, Bilder, ZUGFeRD, Signiert) - **PDF-Verarbeitung**: Text-Extraktion und OCR für gescannte Dokumente - **ZUGFeRD-Erkennung**: Automatische Erkennung von ZUGFeRD-Rechnungen - **Regel-Engine**: Flexible Regeln für Erkennung und automatische Benennung - **Zeitpläne**: Automatische Ausführung per Scheduler ## Deployment mit Portainer ### 1. Image bauen oder pullen **Option A: Image aus tar laden** ```bash docker load -i dateiverwaltung-image.tar ``` **Option B: Image selbst bauen** ```bash docker build -t dateiverwaltung:latest . ``` ### 2. Container in Portainer erstellen Neuen Container erstellen mit folgenden Einstellungen: **Image:** `dateiverwaltung:latest` **Port Mapping:** | Host | Container | |------|-----------| | 8080 | 8000 | **Volumes:** | Host | Container | Beschreibung | |------|-----------|--------------| | `/mnt/user/...` | `/mnt/user/...` | Zugriff auf NAS-Ordner | **Environment Variables:** | Variable | Beschreibung | Beispiel | |----------|--------------|----------| | `DATABASE_URL` | Datenbank-Verbindung (MariaDB/MySQL) | `mysql+pymysql://user:pass@host/db` | | `TZ` | Zeitzone | `Europe/Berlin` | **Beispiel DATABASE_URL Formate:** ``` # MariaDB/MySQL mysql+pymysql://benutzer:passwort@192.168.1.100:3306/dateiverwaltung # SQLite (nur für Tests) sqlite:///dateiverwaltung.db ``` ### 3. Datenbank vorbereiten Bei MariaDB/MySQL die Datenbank vorher erstellen: ```sql CREATE DATABASE dateiverwaltung CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'dateiverwaltung'@'%' IDENTIFIED BY 'sicheres_passwort'; GRANT ALL PRIVILEGES ON dateiverwaltung.* TO 'dateiverwaltung'@'%'; FLUSH PRIVILEGES; ``` Die Tabellen werden beim ersten Start automatisch erstellt. ### 4. Container starten Nach dem Start ist die Web-Oberfläche erreichbar unter: ``` http://:8080 ``` ## Docker Compose (Alternative) ```yaml version: '3.8' services: dateiverwaltung: image: dateiverwaltung:latest container_name: dateiverwaltung restart: unless-stopped ports: - "8080:8000" volumes: - /mnt:/mnt environment: - TZ=Europe/Berlin - DATABASE_URL=mysql+pymysql://user:pass@db-host/dateiverwaltung ``` ## Konfiguration Alle Einstellungen werden in der Datenbank gespeichert: - **Postfächer**: IMAP-Server, Zugangsdaten, Filter - **Quell-Ordner**: Pfade, Dateitypen, ZUGFeRD/Signiert-Behandlung - **Sortier-Regeln**: Erkennungsmuster, Extraktion, Benennungsschema - **Zeitpläne**: Automatische Ausführung ## Module ### Mail-Fetcher Holt Attachments aus IMAP-Postfächern: - Filter nach Dateitypen und Größe - Nur ungelesene oder alle Mails - Alle IMAP-Ordner durchsuchen ### Grobsortierung Sortiert Dateien nach Typ: - Konfigurierbare Dateitypen - ZUGFeRD-Erkennung - Signierte PDF-Erkennung - Optional: Direkt verschieben ohne Regeln ### PDF-Processor - Text-Extraktion mit pdfplumber/pypdf - OCR mit ocrmypdf + Tesseract (deutsch) - ZUGFeRD-Erkennung via factur-x ### Sortier-Regeln - Keyword-basierte Erkennung - Regex für Feldextraktion (Datum, Betrag, Nummer) - Flexibles Benennungsschema ## Benennungsschema Beispiele ``` # Rechnungen {datum} - {firma} - Rechnung {nummer}.pdf -> 2026-02-01 - Amazon - Rechnung 123456.pdf # Mit Betrag {datum} - {firma} - {betrag} EUR.pdf -> 2026-02-01 - Amazon - 49.99 EUR.pdf ``` ## Systemanforderungen - Docker oder Python 3.11+ - MariaDB/MySQL (empfohlen) oder SQLite - Für OCR: tesseract-ocr, ocrmypdf