PDF Rechnungen in E-Rechnung Konvertieren. Format: ZUGFeRD oder XRechnung http://erechnung/
Go to file
dfuhrmann3 a4e9918e23 SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 16:37:53 +02:00
.streamlit feat(v3): Intro-Animation als statisches Asset + Static Serving aktiviert 2026-07-16 10:02:01 +02:00
assets feat(v3): eigenes Tab-Icon (Beleg-Motiv, schwarz/orange) 2026-07-15 13:49:17 +02:00
static feat(v3): Intro auf MP4 umgestellt (video statt HTML-Bundle) 2026-07-16 10:18:43 +02:00
.dockerignore chore: keep tests, test-config and planning docs local-only (untrack from repo) 2026-07-07 15:57:09 +02:00
.env.example SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml. 2026-07-30 16:37:53 +02:00
.gitignore SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml. 2026-07-30 16:37:53 +02:00
Dockerfile Update für API & Docker 2026-07-02 14:19:25 +02:00
README.md SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml. 2026-07-30 16:37:53 +02:00
batch_folder.py Stapelbetrieb: Ordner einlesen, per Ampel prüfen, gesammelt exportieren. 2026-07-30 16:28:27 +02:00
batch_mode.py Stapelbetrieb: Ordner einlesen, per Ampel prüfen, gesammelt exportieren. 2026-07-30 16:28:27 +02:00
docker-compose.yml SMB-Zugangsdaten nach .env ausgelagert statt in docker-compose.yml. 2026-07-30 16:37:53 +02:00
intro_overlay.py fix(v3): Replay-Button links neben Streamlit-Menue statt darueber 2026-07-16 10:21:08 +02:00
invoice_logic.py Stapelbetrieb: Ordner einlesen, per Ampel prüfen, gesammelt exportieren. 2026-07-30 16:28:27 +02:00
main.py Stapelbetrieb: Ordner einlesen, per Ampel prüfen, gesammelt exportieren. 2026-07-30 16:28:27 +02:00
requirements.txt Test 2026-07-07 10:52:43 +02:00
sRGB.icc Test 2026-07-06 09:23:01 +02:00

README.md

README

Description

Dieses Tool konvertiert Rechnungen im PDF-Format über eine Weboberfläche in die offiziellen E-Rechnungsformate XRechnung (UBL) und ZUGFeRD 2.4 (hybride PDF mit eingebettetem CII-XML). Die Datenextraktion ist vollständig deterministisch (Regex und Zeilen-Auswertung) – es wird kein LLM und kein externer Dienst verwendet, sensible Finanzdaten verlassen das lokale Netzwerk nicht.

Zugriff

Die Anwendung läuft als Docker-Container und ist im lokalen Firmennetzwerk erreichbar unter:

http://erechnung

Aufbau

Datei Zweck
main.py Streamlit-Oberfläche für die Einzelrechnung, Export
invoice_logic.py Extraktion, Berechnung, XML-Erzeugung (UBL und CII), PDF-Helfer
batch_folder.py Ordner-Anbindung und Ampel-Bewertung des Stapelbetriebs (ohne Streamlit)
batch_mode.py Oberfläche des Stapelbetriebs
intro_overlay.py Intro-Video beim ersten Besuch

Installation (Docker)

1. Repository holen

git clone https://gitea.scitech-gmbh.de:8443/dfuhrmann/E-Rechnung.git
cd E-Rechnung

2. Austauschordner einbinden (nur für den Stapelbetrieb)

Der Stapelbetrieb liest Rechnungen aus einem Ordner und schreibt die fertigen E-Rechnungen zurück. Die Netzwerkfreigabe wird dafür in docker-compose.yml eingetragen – der Container arbeitet dann direkt auf ihr, es wird nichts kopiert oder synchronisiert.

Der Windows-Pfad wird dabei in Docker-Schreibweise angegeben: aus \\FS01\Daten\Technik\AI wird //FS01/Daten/Technik/AI.

1. Zugangsdaten hinterlegen – nicht in docker-compose.yml, sondern in einer .env-Datei. Diese ist in .gitignore eingetragen und landet nicht im Repository:

copy .env.example .env

Dann .env öffnen und Benutzer, Passwort und Domäne des Dienstkontos eintragen. Das Konto braucht Lese- und Schreibrechte auf der Freigabe.

2. Volume aktivieren – in docker-compose.yml den Block am Dateiende einkommentieren sowie beim Service - datev_austausch:/data statt - ./batch_data:/data verwenden. Beides steht dort vorbereitet.

Wichtig: Binden Sie den übergeordneten Ordner ein, nicht einen einzelnen Unterordner. Test1, Test2 und jeder künftige Unterordner sind dann in der Oberfläche frei wählbar, ohne dass diese Datei erneut angefasst werden muss.

Ist die Freigabe auf dem Docker-Host bereits eingehängt, genügt stattdessen ein einfacher Bind-Mount ohne Zugangsdaten (- /mnt/fs01/Daten/Technik/AI:/data).

Ein Eintippen des Pfads in der Oberfläche ist nicht möglich: Die Anwendung läuft auf dem Server, der Browser auf Ihrem PC – ein dort gewählter Pfad wäre für den Server bedeutungslos, und Browser geben Web-Anwendungen aus Sicherheitsgründen keine Dateipfade.

Wird nichts eingebunden, funktioniert die Einzelrechnung uneingeschränkt; der Stapelbetrieb weist dann auf den fehlenden Mount hin.

3. Container bauen und starten

docker compose up -d --build

Die Anwendung ist danach unter http://localhost:8040 (bzw. im Firmennetz unter http://erechnung) erreichbar.


Use

Die Betriebsart wird links in der Seitenleiste gewählt.

Einzelrechnung

  1. Dokumenten-Upload: Laden Sie die Rechnungs-PDF über die Weboberfläche hoch. Die PDF wird direkt zur Kontrolle angezeigt.
  2. Leistungsnachweise (optional): Bis zu drei weitere PDFs anhängen. Ihre Seiten werden beim ZUGFeRD-Export ans Ende der Rechnung gehängt, sodass eine einzelne PDF entsteht. Aus diesen Dateien werden keine Daten ausgelesen.
  3. Extraktion: Starten Sie die Analyse über den Button "Daten extrahieren".
  4. Validierung: Prüfen Sie die extrahierten Kopfdaten und die Positionstabelle. Alle Felder sind editierbar. Pflichtfelder sind mit :red[*] markiert; der Export wird blockiert, solange Pflichtangaben fehlen.
  5. Export: Wählen Sie das Format (XRechnung-XML oder ZUGFeRD-PDF) und starten Sie den Download.

Stapel (Ordner)

  1. Ordner wählen: Eingangsordner (von DATEV befüllt) und Ausgabeordner aus den Unterordnern des eingebundenen Verzeichnisses auswählen.
  2. Einlesen: Alle PDFs des Eingangsordners werden analysiert und bewertet.
  3. Prüfen: Die Übersicht zeigt je Rechnung eine Ampel. ✅ bedeutet, dass alle Pflichtangaben vorliegen und die Summe der erkannten Positionen zur ausgewiesenen Bemessungsgrundlage passt. ⚠️ markierte Rechnungen nennen im Klartext, was fehlt; sie werden übersprungen und lassen sich im Einzelmodus korrigieren.
  4. Nachweise zuordnen (optional): Liegt ein Leistungsnachweis im selben Ordner, ordnen Sie ihn der zugehörigen Rechnung zu. Er zählt dann nicht mehr als eigene Rechnung.
  5. Exportieren: Alle grünen Rechnungen werden in einem Zug konvertiert und in den Ausgabeordner geschrieben. Die Quelldateien wandern in den Unterordner verarbeitet – gelöscht wird nichts.

Notes

Kontrolle durch den Sachbearbeiter

Das Tool ist ein Automations-Assistent, kein Ersatz für die fachliche Prüfung.

Im Einzelmodus liegen alle extrahierten Werte zur Sichtprüfung und Korrektur offen; der Export wird blockiert, solange Pflichtangaben fehlen.

Im Stapelmodus tritt an die Stelle der Sichtprüfung jeder einzelnen Rechnung eine Sammelfreigabe: Es werden nur Rechnungen exportiert, bei denen alle Pflichtfelder belegt sind und die Summe der erkannten Positionen exakt der auf der Rechnung ausgewiesenen Bemessungsgrundlage entspricht. Dieser Summen-Abgleich ist das entscheidende Sicherheitsnetz – er deckt eine unvollständige Positionserkennung zuverlässig auf. Alles Auffällige wird markiert und übersprungen, nie stillschweigend exportiert.

Die Verantwortung für die inhaltliche Richtigkeit der Rechnung bleibt in beiden Betriebsarten beim Sachbearbeiter.

GoBD-Konformität

Das Tool generiert ausschließlich das strukturierte XML- bzw. hybride PDF-Format. Für die Einhaltung der GoBD-Richtlinien (u. a. die revisionssichere Archivierung der Original-PDF sowie der generierten E-Rechnung über den gesetzlichen Zeitraum von 10 Jahren) ist der Betreiber der Software selbst verantwortlich. Der Stapelbetrieb löscht keine Quelldateien, sondern verschiebt sie nach verarbeitet.