Die wöchentliche Routine, die still Stunden frisst

Die manuelle Rechnungsverarbeitung aus E-Mails ist unsichtbare Arbeit. Sie fühlt sich nicht wie ein Problem an, weil jede einzelne Aktion nur Minuten dauert. Aber multipliziere diese Minuten mit jedem Lieferanten, jeder Woche, jedem Monat, und die Zahlen summieren sich schnell.

Das konkrete Problem hier: fünf Lieferanten senden Rechnungen in völlig unterschiedlichen Formaten. Verschiedene Dateibenennungskonventionen. Verschiedene Feldpositionen. Unterschiedliche PDF-Strukturen, einige textbasiert, andere gescannte Bilder. Keine zwei Dokumente sehen gleich aus. Ein Mensch lernt intuitiv mit dieser Varianz umzugehen. Eine naive Automatisierung bricht beim ersten Sonderfall zusammen.

Das Zielresultat war klar: Rechnungen kommen per E-Mail an, werden ohne jegliche menschliche Beteiligung verarbeitet, landen im richtigen Google Drive-Ordner mit einheitlichem Dateinamen, werden in einer Datenbank protokolliert, und für jeden erfolgreichen Durchlauf gibt es eine Telegram-Benachrichtigung.

Die zentrale Designentscheidung: KI zur Normalisierung, nicht zur Extraktion

Gemini 2.5 Flash ist nicht die Quelle der Wahrheit, die PDF ist es. Ein deterministischer Basis-Parser läuft zuerst (Regex, Schlüsselwort-Trigger, Feldextraktion). Gemini verifiziert und normalisiert darüber. Wenn die KI-API nicht verfügbar ist, liefert der Fallback trotzdem verwertbare Ausgabe. Das LLM behandelt Varianz, der Parser behandelt Fakten.

Wie die Pipeline funktioniert

GitHub Actions Cron IMAP: neue E-Mails abrufen Anhang-Filter (nur PDF)

Deduplizierung (Nachrichten-ID + Hash) pdf-parse → Rohtext Basis-Regex-Parser

Gemini 2.5 Flash: Verifizierung + Normalisierung Google Drive Upload

Supabase Protokoll Telegram Benachrichtigung
1
GitHub Actions Cron-Trigger

Läuft nach Zeitplan, stündlich oder täglich je nach Rechnungsvolumen. Kein Server nötig. Das Free Tier deckt jedes normale Geschäftsvolumen problemlos ab.

2
IMAP-Abruf und -Filter

Verbindet sich mit dem Postfach, findet ungesehene Nachrichten, extrahiert nur PDF-Anhänge. Nachrichten-IDs werden sofort für die Deduplizierung erfasst.

3
Deduplizierung, zwei Ebenen

Anhangsebene: Nachrichten-ID + Datei-Hash. Geschäftsebene: Lieferantenname + Rechnungsnummer. Deckt weitergeleitete E-Mails, Cron-Neustarts und doppelte PDFs in einer Nachricht ab.

4
PDF-Parsing und Basis-Extraktion

pdf-parse extrahiert Rohtext. Ein deterministischer Parser führt Regex und Schlüsselwort-Trigger aus, um strukturierte Felder zu extrahieren: Lieferant, Rechnungsnummer, Datum, Gesamtbetrag, MwSt-Betrag.

5
Gemini 2.5 Flash Normalisierung

Die KI verifiziert die Basis-Ausgabe, normalisiert Datumsformate, füllt Lücken, die Regex nicht konnte, und behandelt lieferantenspezifische Formatierungsbesonderheiten. Läuft nur auf Feldern, die der Basis-Parser nicht zuverlässig extrahieren konnte.

6
Google Drive Ablage

PDF wird in den richtigen Lieferanten-Unterordner mit einheitlichem Dateinamen hochgeladen: JJJJ-MM-TT_Lieferant_Rechnungsnummer.pdf. Ordnerstruktur spiegelt das bestehende Buchhaltungssystem des Kunden wider.

7
Supabase Protokoll + Telegram-Alert

Jeder Anhang erhält einen processing_log-Eintrag, egal ob erfolgreich, dedupliziert, Parsing-Fehler oder API-Fehler. Nichts geht still verloren. Telegram sendet nach jedem Durchlauf eine Zusammenfassung.

Warum nicht einfach Gemini für alles nutzen?

Reine KI-Extraktion ist für Finanzdokumente unzuverlässig. Das Modell kann Beträge halluzinieren, Währungssymbole falsch lesen und über Durchläufe inkonsistente Datumsformate produzieren.

Der Basis-Parser behandelt, was Regex perfekt kann: Lieferantennamen an bekannten Positionen, Rechnungsnummern mit bekannten Mustern, Gesamtbeträge in erwarteten Feldern. Er ist schnell, deterministisch und kostet nichts.

Gemini behandelt, was Regex nicht kann: Variationen in Feldpositionen über Lieferantenformate hinweg, nicht-standardisierte Datumsstrings, Sonderfälle wo die PDF-Struktur vom Muster abweicht. Es sieht nur die Felder, die der Basis-Parser nicht zuverlässig extrahieren konnte.

Das Ergebnis: deterministische Genauigkeit wo möglich, KI-Flexibilität wo nötig, und die Pipeline funktioniert auch wenn die API ausfällt.

Zwei Ebenen, nichts wird doppelt verarbeitet

Rechnungen kommen auf unvorhersehbare Weise an: weitergeleitet von einem Kollegen, dieselbe PDF an zwei Follow-up-E-Mails angehängt, der Cron-Job startet mitten im Durchlauf neu. Ohne ordentliche Deduplizierung verursacht jedes dieser Szenarien Doppelverarbeitung.

Ebene 1: Anhangsebene Nachrichten-ID + SHA-256-Hash der PDF-Datei. Fängt erneute Zusendungen derselben Datei ab, bevor jede Verarbeitung beginnt.
Ebene 2: Geschäftsebene Lieferantenname + Rechnungsnummer. Fängt dieselbe Rechnung als anderen Anhang ab (umbenannt, neu aus Buchhaltungssoftware exportiert).

Nichts geht still verloren, vollständige Nachvollziehbarkeit

Jeder Anhang erhält einen Eintrag in Supabase, unabhängig vom Ergebnis: ob erfolgreich verarbeitet, dedupliziert, Parsing fehlgeschlagen oder API-Fehler. Der Eintrag enthält: Anhang-Dateiname, Nachrichten-ID, Verarbeitungsstatus, extrahierte Felder, Drive-Datei-ID falls hochgeladen, Fehlermeldung falls fehlgeschlagen, und Zeitstempel.

Der Kunde kann jederzeit nachverfolgen, was mit einer bestimmten Rechnung passiert ist. "Wo ist die Siemens-Rechnung vom 12. März?" — die Antwort ist eine SQL-Abfrage entfernt.

Die Telegram-Benachrichtigung sendet nach jeder Cron-Ausführung eine Zusammenfassung: wie viele E-Mails geprüft, wie viele Anhänge gefunden, wie viele verarbeitet, wie viele als Duplikat übersprungen, eventuelle Fehler. GoBD-konform: vollständige Protokollierung ohne stille Fehler.

Häufige Fragen zur Rechnungsautomatisierung

Wie extrahiert KI Daten aus PDF-Rechnungen?
Ein zweistufiger Ansatz funktioniert am besten. Zuerst läuft ein deterministischer Parser mit Regex und Schlüsselwort-Triggern, um strukturierte Felder zu extrahieren: Lieferantenname, Rechnungsnummer, Datum, Gesamtbetrag. Dann verifiziert und normalisiert Gemini 2.5 Flash die Ausgabe, behandelt Sonderfälle und füllt fehlende Felder. So funktioniert die Grundextraktion auch dann noch, wenn die KI-API nicht verfügbar ist.
Wie verhindert man doppelte Rechnungsverarbeitung?
Zwei Deduplizierungsebenen: auf Anhangsebene mit Nachrichten-ID plus Datei-Hash, und auf Geschäftsebene mit Lieferantenname plus Rechnungsnummer. Das deckt weitergeleitete E-Mails, Cron-Job-Neustarts und Fälle ab, in denen dieselbe PDF zweimal in einer Nachricht ankommt. Jeder Anhang erhält unabhängig vom Ergebnis einen Verarbeitungseintrag, nichts geht still verloren.
Was kostet eine automatisierte Rechnungspipeline?
Bei GitHub Actions als Scheduler sind die Infrastrukturkosten effektiv $0. GitHub Actions bietet 2.000 kostenlose Minuten pro Monat, mehr als genug für stündliche Rechnungsprüfungen, die jeweils nur wenige Sekunden laufen. Die einzige variable Kosten sind die KI-API-Nutzung (Gemini 2.5 Flash Tokens pro PDF), die bei normalem Geschäftsvolumen minimal sind.

Verwendete Technologien

Node.js TypeScript IMAP pdf-parse Gemini 2.5 Flash Google Drive API Supabase GitHub Actions Telegram Bot API VS Code + Claude Code
Haben Sie wiederkehrende manuelle Dokumentenverarbeitung in Ihrem Unternehmen?

Ich baue Automatisierungspipelines, die wiederkehrende manuelle Arbeit eliminieren: Rechnungsverarbeitung, Dokumentenklassifikation, Datenextraktion aus E-Mails. Funktioniert mit jedem Dokumentformat: PDFs, Word-Dateien, gescannte Bilder. Standort München, Projekte in ganz Europa.

← Zurück zu den Artikeln