PDF-Rechnungen automatisch verarbeiten mit AWS Textract & Bedrock
Wie Sie mit n8n, AWS Textract und Bedrock die manuelle Rechnungserfassung von 5 Minuten auf 10 Sekunden reduzieren – DSGVO-konform und ohne OpenAI.
PDF Rechnungen automatisch verarbeiten mit AWS Textract & Bedrock
Wenn Sie ein mittelständisches Unternehmen führen, kennen Sie das Bild: Ein Stapel PDF Rechnungen landet im Posteingang, und jemand aus der Buchhaltung tippt die Daten manuell in SAP, DATEV oder eine Excel Tabelle. Rechnungsnummer, Datum, Positionen, Beträge – Zeile für Zeile.
Im Durchschnitt dauert das etwa 5 Minuten pro Rechnung . Bei 200 eingehenden Rechnungen im Monat sind das rund 16 Stunden reine Tipparbeit . Dazu kommen Tippfehler, fehlende Belege und die Frage, wer den Stapel abarbeitet, wenn jemand im Urlaub ist.
In diesem Artikel zeige ich Ihnen, wie Sie diesen Prozess auf unter 10 Sekunden pro Rechnung reduzieren – vollautomatisch, mit einer Lösung, die in der EU läuft und keine Daten an Drittanbieter wie OpenAI sendet.
Architektur Überblick
Die Pipeline besteht aus drei Bausteinen, die ich bewusst so gewählt habe:
Architektur: PDF Rechnungsverarbeitung
Warum n8n? n8n ist eine Open Source Workflow Plattform, die Sie selbst hosten können. Im Gegensatz zu Zapier oder Make verlassen Ihre Daten nie Ihren eigenen Server. Für Unternehmen, die DSGVO Konformität ernst nehmen, ist das ein entscheidender Vorteil.
Warum AWS Textract? Textract ist kein einfaches OCR Tool. Es erkennt Tabellenstrukturen und Formularfelder – genau das, was Sie bei Rechnungen brauchen. Während herkömmliche OCR Lösungen nur Freitext liefern, versteht Textract, dass eine Zahl in der dritten Spalte ein Preis ist.
Warum Amazon Bedrock? Bedrock stellt KI Modelle bereit, die innerhalb Ihrer AWS Umgebung laufen. Ihre Rechnungsdaten werden nicht an externe APIs gesendet. Sie können die Region eu central 1 (Frankfurt) wählen und sicherstellen, dass alles in der EU bleibt.
Der n8n Workflow im Detail:
Webhook → S3 Upload → Textract AnalyzeDocument → Wait → Get Result → Bedrock Strukturierung → JSON Response
Schritt 1: PDF nach OCR mit Textract
Im ersten Schritt landet die PDF Rechnung in einem S3 Bucket. Das kann über einen n8n Webhook geschehen (z. B. wenn ein Mitarbeiter eine Datei hochlädt) oder über eine automatische Weiterleitung aus dem E Mail Posteingang.
Sobald die Datei in S3 liegt, ruft n8n den Textract Service auf. Entscheidend ist hier die Konfiguration: Wir verwenden nicht das einfache DetectDocumentText, sondern AnalyzeDocument mit den Feature Types TABLES und FORMS.
Der Unterschied ist erheblich. DetectDocumentText liefert Ihnen einen Fließtext – brauchbar für Briefe, aber nicht für Rechnungen mit Positionstabellen. AnalyzeDocument hingegen erkennt:
Blocks : Einzelne Textfragmente mit Positionsangaben auf der Seite Tables : Zeilen und Spalten mit Zelleninhalten – ideal für Rechnungspositionen Forms : Schlüssel Wert Paare wie „Rechnungsnummer: RE 2026 0042"
In der Praxis bedeutet das: Textract liefert Ihnen nicht einfach „Büroklammern 500 Stück 12,50 EUR", sondern versteht, dass „Büroklammern" die Bezeichnung ist, „500" die Menge und „12,50 EUR" der Preis – weil es die Tabellenstruktur der Rechnung erkennt.
Das Ergebnis ist ein umfangreicher JSON Block mit allen extrahierten Daten. Allerdings ist dieses Rohformat für eine direkte Weiterverarbeitung zu unstrukturiert. Hier kommt der zweite Schritt ins Spiel.
Schritt 2: Strukturierung mit Bedrock
Der OCR Text von Textract ist zwar reichhaltig, aber noch kein sauberer Datensatz. Tabellenzellen kommen in verschachtelten Strukturen, Kopf und Fußzeilen mischen sich unter die Nutzdaten, und verschiedene Rechnungslayouts liefern unterschiedliche Formate.
Hier setzt Amazon Bedrock an. Wir schicken den gesamten OCR Text an das Sprachmodell und geben ihm eine klare Anweisung. Der echte System Prompt aus dem Workflow:
``` Du bist ein spezialisierter Rechnungs Parser für deutsche Rechnungen. Deine Aufgabe ist es, aus OCR Text strukturierte Daten zu extrahieren.
EXTRAHIERE FOLGENDE FELDER: , "positionen": [ ], "nettosumme": number, "mwst satz": number, "mwst": number, "bruttosumme": number, "waehrung": "EUR" }
REGELN: 1. Antworte NUR mit dem JSON Objekt, keine Erklärungen 2. Werte als Zahlen (nicht als Strings) 3. Verwende null für fehlende optionale Felder 4. Währungssymbole entfernen, Dezimalkomma in Punkt umwandeln 5. Datumsformat: YYYY MM DD ```
Drei Design Entscheidungen sind hier wichtig:
Strukturierter JSON Output. Wir definieren exakt, welche Felder in welchem Format zurückkommen. Der nachfolgende Node in n8n kann direkt auf positionen, bruttosumme und mwst zugreifen, ohne fragilen Text zu parsen.
Explizite Typvorgaben. Zahlen als number, nicht als String. Datum in ISO Format. Damit entfällt die fehleranfällige Konvertierung im Nachgang.
Null für Optionales. Nicht jede Rechnung enthält eine Kundenadresse oder ein Fälligkeitsdatum. Der Prompt gibt dem Modell die Freiheit, fehlende Felder mit null zu markieren, statt Werte zu halluzinieren.
Echte Ergebnisse aus dem Produktivbetrieb
Hier ein realer Test mit einer Beratungsrechnung (Strategieberatung Müller & Partner, 4 Positionen):
Request:
Response:
Und ein Sonderfall – eine AWS Monatsrechnung mit Reverse Charge (0% MwSt, §13b UStG):
Das Modell erkennt korrekt, dass bei Reverse Charge keine MwSt anfällt – ein häufiger Stolperstein bei regelbasierten Systemen.
Schritt 3: Ergebnis nutzen
Mit einem strukturierten JSON Datensatz stehen Ihnen alle Wege offen:
ERP Integration : Über die API Ihres Systems (SAP Business One, DATEV, lexoffice, sevDesk) lassen sich Buchungssätze automatisch anlegen. Tabellen Export : Für kleinere Teams reicht oft ein automatischer Eintrag in ein Google Sheet oder eine Excel Datei auf SharePoint. Webhook Response : Wenn Sie ein eigenes Frontend nutzen, liefert der n8n Workflow das JSON direkt als HTTP Response zurück.
Die Pipeline ist bewusst modular aufgebaut. Sie können sie jederzeit erweitern – etwa um einen Freigabe Workflow (Rechnung über 1.000 EUR erfordert Genehmigung durch den Teamleiter), eine Duplikatserkennung (gleiche Rechnungsnummer wurde bereits verarbeitet) oder einen Abgleich mit Bestellungen .
Ergebnis und ROI
Laut einer Studie des Bitkom zur Digitalisierung der Buchhaltung können Unternehmen durch die Automatisierung von Dokumentenprozessen bis zu 80% der Verarbeitungszeit einsparen. Die Zahlen aus dem Produktivbetrieb sprechen für sich:
| Kennzahl | Vorher (manuell) | Nachher (automatisiert) | | | | | | Zeit pro Rechnung | 5 Minuten | 10 Sekunden | | Genauigkeit | 95 % | 99 % | | Monatlicher Aufwand (200 Rechnungen) | 16 Stunden | 0,5 Stunden (Stichproben)|
Bei einem internen Stundensatz von 40 EUR ergibt sich eine Ersparnis von rund 640 EUR pro Monat . Die Einrichtung der Pipeline – inklusive n8n Setup, AWS Konfiguration und Anpassung an Ihre Rechnungsformate – amortisiert sich in der Regel innerhalb weniger Wochen .
Demo selbst ausprobieren
Den gesamten Workflow stelle ich als Open Source Demo auf GitHub bereit. Sie können ihn in wenigen Minuten lokal starten und mit eigenen Rechnungen testen.
Repository: github.com/vibtellect/pdf invoice automation
Demo Rechnungen im Repository:
Das Repository enthält 5 Beispielrechnungen, die typische Szenarien abdecken:
| Datei | Lieferant | Typ | Brutto | | | | | | | rechnung it dienstleistung.pdf | TechVision GmbH | IT Beratung, 5 Positionen | 16.428,90 EUR | | rechnung bueroausstattung.pdf | OfficePro Handels GmbH | Hardware + Material | 1.583,50 EUR | | rechnung saas lizenz.pdf | DataFlow Solutions AG | SaaS Monatsabo | 4.902,80 EUR | | rechnung beratungshonorar.txt | Strategieberatung Müller & Partner | Beratungshonorar + Workshop | 12.001,15 EUR | | rechnung cloud infrastruktur.txt | Amazon Web Services EMEA SARL | AWS Monatsabrechnung (Reverse Charge) | 121,46 EUR |
Die .txt Dateien sind Text Simulationen, die sich ohne PDF Upload direkt per JSON Body testen lassen: