Vollautomatisierte Rechnungsverarbeitung: PDF-Upload → OCR → KI-Strukturierung → JSON-Export. Ein produktionsreifer Proof of Concept für den Mittelstand.
Diese Demo zeigt einen lauffähigen PoC für automatische Rechnungsverarbeitung. Der Workflow verarbeitet PDF-Rechnungen in Echtzeit:
PDF-Upload (Webhook)
↓
AWS S3 (Speicherung)
↓
AWS Textract OCR (Text-Erkennung)
↓
AWS Bedrock Claude (KI-Strukturierung)
↓
Strukturiertes JSON Output
↓
ERP/FiBu-Anbindung (optional)
Keine manuellen Prozesse mehr: Vollautomatische Extraktion von Rechnungsnummern, Daten, Positionen und Beträgen.
graph LR
A["📄 PDF Upload<br/>(Webhook)"] -->|multipart/form-data| B["n8n<br/>(Workflow-Engine)"]
B -->|AnalyzeDocument| C["AWS Textract<br/>(OCR)"]
C -->|OCR-Text| D["AWS Bedrock<br/>(Claude 3.5 Sonnet)"]
D -->|InvokeModel| E["KI-Parser<br/>(Prompt-basiert)"]
E -->|JSON| F["📊 Strukturierte<br/>Rechnungsdaten"]
F -->|Webhook Callback| G["ERP/FiBu/Webhook<br/>(optional)"]
style A fill:#e8f5e9
style B fill:#fff3e0
style C fill:#ffe0b2
style D fill:#ff9800
style E fill:#ff6f00
style F fill:#c8e6c9
style G fill:#a5d6a7
Komponenten:
| Komponente | Rolle | Version |
|---|---|---|
| n8n | Workflow-Orchestrierung, Webhook-Handler | 1.76.1 |
| AWS Textract | OCR, Tabellen- und Formulare-Erkennung | API |
| AWS Bedrock | Multimodales LLM für JSON-Strukturierung | Claude 3.5 Sonnet |
| Docker Compose | Container-Orchestrierung (lokal/Docker) | 3.9 |
- Docker Desktop/Engine: v20+
- Docker Compose: v2.0+
- 4 GB RAM (für n8n + OS)
- 2 GB freier Speicher (n8n volumes)
- AWS Account mit:
- IAM User (Access Key + Secret Key)
- Bedrock Model Access: Claude 3.5 Sonnet v2 in
eu-central-1aktiviert - Textract Permissions in der Region
- S3 Access (wird beim Setup erstellt)
- IAM User erstellt (mit Policy aus
iam/n8n-automation-policy.json) - Access Keys generiert (speichern für
.env) - AWS Region auf
eu-central-1gesetzt (DSGVO-konform) - Bedrock → Model Access → Claude 3.5 Sonnet v2 aktiviert
- AWS CLI lokal konfiguriert (oder Keys direkt in
.enveintragen)
git clone https://github.com/vibtellect/pdf-invoice-automation.git
cd pdf-invoice-automationmake setupDies erstellt .env aus .env.example. Öffne die Datei und füge deine AWS Credentials ein:
# .env
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=eu-central-1make upDies startet n8n auf http://localhost:5678.
make smokeErwartet: OK - n8n UI erreichbar auf http://localhost:5678
make importDies öffnet den Browser auf der n8n UI. Alternativ manuell:
- Gehe zu
http://localhost:5678 - Klicke auf Workflows → Import from File
- Wähle
workflows/pdf-invoice-processing.json - Konfiguriere in jedem AWS-Node deine Credentials
- Aktiviere den Workflow mit dem Play-Button
curl -X POST http://localhost:5678/webhook/invoice-processing \
-F "file=@demo-rechnungen/rechnung-it-dienstleistung.pdf"Das Repository enthält 3 realistische Demo-Rechnungen im Ordner demo-rechnungen/:
| Datei | Typ | Positionen | Bruttobetrag | Seiten |
|---|---|---|---|---|
rechnung-it-dienstleistung.pdf |
IT-Dienstleistung | 5 | 16.428,00 EUR | 2 |
rechnung-bueroausstattung.pdf |
Waren | 4 | 1.583,92 EUR | 1 |
rechnung-saas-lizenz.pdf |
SaaS | 4 | 4.902,00 EUR | 1 |
Zusätzlich gibt es textbasierte Varianten (.txt), um lokale Szenarien zu testen, wenn PDFs nicht verarbeitet werden können.
# Einfacher Upload
curl -X POST http://localhost:5678/webhook/invoice-processing \
-F "file=@<PDF_PATH>"
# Mit Metadata (optional)
curl -X POST http://localhost:5678/webhook/invoice-processing \
-F "file=@<PDF_PATH>" \
-F "supplier_id=<ID>" \
-F "reference=<REF>"{
"rechnungsnummer": "RE-2026-001",
"datum": "2026-02-15",
"lieferant": {
"name": "Muster GmbH",
"adresse": "Musterstraße 1, 12345 Berlin"
},
"kunde": {
"name": "Dein Unternehmen GmbH"
},
"positionen": [
{
"bezeichnung": "Beratung Q1 2026",
"menge": 10,
"einzelpreis": 150.00,
"gesamtpreis": 1500.00
},
{
"bezeichnung": "Software-Lizenz",
"menge": 1,
"einzelpreis": 500.00,
"gesamtpreis": 500.00
}
],
"nettosumme": 2000.00,
"mwst_satz": 19,
"mwst": 380.00,
"bruttosumme": 2380.00,
"waehrung": "EUR"
}Die KI extrahiert vollautomatisch:
- ✅ Rechnungsnummern & Daten
- ✅ Lieferantendaten
- ✅ Alle Positionen (beliebig viele)
- ✅ Netto-, MwSt., Brutto-Beträge
- ✅ Validierung der Arithmetik
Der n8n Workflow (workflows/pdf-invoice-processing.json) implementiert:
- Trigger: POST
/webhook/invoice-processing - Input: Multipart-Form mit
file(PDF)
- Speichert PDF in AWS S3 mit Timestamp
- Gibt S3-URI zurück
AnalyzeDocumentmit Features:TABLES,FORMS- Extrahiert strukturierten Text, Tabellen, Felder
- Sendet OCR-Text + Prompt an Claude 3.5 Sonnet
- Prompt aus
prompts/invoice-parser-prompt.txt - Bedrock gibt JSON direkt zurück
- JSON-Parsing & Validierung
- HTTP 200 + strukturierter JSON als Response
- Fehler werden geloggt (HTTP 400 mit Fehlermeldung)
- Webhook-Callback an dein ERP/FiBu-System
- Oder: Direkte Datenbankschreibweise (erfordert Erweiterung)
| Layer | Technologie | Notes |
|---|---|---|
| Orchestrierung | n8n 1.76.1 | Open-source, selbstgehostet |
| OCR | AWS Textract | Tabellen & Formulare |
| KI | AWS Bedrock + Claude 3.5 Sonnet v2 | Multimodal, kostengünstig |
| Storage | AWS S3 | DSGVO-konform (eu-central-1) |
| Container | Docker Compose | Lokale Entwicklung + Tests |
| Sprache | JavaScript/n8n-Expressions | Workflow-Logik |
| Protokolle | HTTP (Webhook), REST APIs | Standard-Integration |
Die Policy in iam/n8n-automation-policy.json gewährt:
Erlaubt:
- bedrock:InvokeModel (Claude)
- textract:AnalyzeDocument (OCR)
- s3:GetObject, s3:PutObject, s3:ListBucket
- CloudFormation (ReadOnly)
- CloudWatch Logs (ReadOnly)
- SSM Parameters (ReadOnly)
Explizit verboten (DenySecurityCritical):
- IAM, Organizations, Billing (keine Privilege Escalation)
- S3 Delete Bucket (Sicherheit)
- RDS/DynamoDB Destroy (Datenschutz)
Zur Verwendung:
- AWS Console → IAM → Users → Create User (z.B.
n8n-automation) - Inline Policy hinzufügen
- JSON aus
iam/n8n-automation-policy.jsonkopieren - Access Keys generieren
- Keys in
.envspeichern
make help # Zeige alle Targets
make setup # Erstelle .env aus .env.example
make up # Starte n8n Container
make down # Stoppe Container
make logs # Live Logs anzeigen
make smoke # Health Check
make import # Öffne n8n UI zum Workflow Import| Service | Preis | Beispiel |
|---|---|---|
| AWS Textract | 1,50 USD / 1K Seiten | 0,0015 USD/Seite |
| AWS Bedrock (Claude) | Input: 0,003 USD/1K Token, Output: 0,015 USD/1K Token | ~0,01 USD/Rechnung |
| AWS S3 | 0,023 USD/GB/Monat | Negligible für Demo |
| n8n (Docker) | Free (self-hosted) | 0 USD |
Beispiel: 100 Rechnungen pro Monat = ~2,00 USD AWS Kosten.
make logs- Gehe zu
http://localhost:5678 - Öffne den Workflow
- Klicke auf Executions → letzte Ausführung
- Klappt die Fehlerausgabe auf (roter Step)
| Problem | Lösung |
|---|---|
| n8n Port 5678 wird nicht erreichbar | make down && make up neustarten |
| AWS Credentials ungültig | .env prüfen, IAM Access Keys rotieren |
| Bedrock Model nicht verfügbar | AWS Console → Bedrock → Model Access → Claude 3.5 Sonnet aktivieren |
| Textract gibt nur Whitespace zurück | PDF-Format prüfen (gescannte PDFs brauchen OCR-Features) |
- ✅ AWS Region:
eu-central-1(Daten in Deutschland) - ✅ Keine Speicherung von PDFs lokal (nur S3 mit TTL möglich)
- ✅ Keine Weitergabe an Dritte (nur interne AWS Services)
.enventhält Credentials: Niemals in Git committen (siehe.gitignore)- Bedrock API-Calls loggen Eingaben nicht öffentlich (Check mit AWS CloudTrail)
- IAM Policy restriktiv halten (mit
DenySecurityCritical) - Webhook authentifizieren (nicht in Demo, aber für Production wichtig)
- Authentifizierung hinzufügen (API-Key, OAuth)
- Fehler-Queue: Failed Invoices in Datenbank speichern
- Retry-Handling: Exponential Backoff für flüchtige Fehler
- ERP-Mapping: Feldmapping für DATEV/SAP/NetSuite
- Monitoring: CloudWatch Alarms für Fehlerquote
- Database: PostgreSQL statt SQLite für Transaktionen
- Multi-Supplier Validation: Lieferanten-spezifische Validierungsregeln
- Document Classification: ML-basierte Rechnungstyp-Erkennung
- Receipt-Matching: Automatisches Zuordnen zu Bestellungen (PO-Matching)
- Tax Compliance: Automatische Prüfung von Steuersätzen pro Branche
Wenn du den PoC auf Produktionsniveau heben möchtest:
- Website: https://bojatschkin.de
- Blogpost: https://bojatschkin.de/blog/pdf-rechnungen-automatisieren
- Kostenlos Erstgespräch buchen: https://bojatschkin.de
Ich helfe dir dabei, saubere Schnittstellen, Monitoring und Skalierbarkeit aufzubauen.
Anonymisiertes Praxisbeispiel basierend auf realen Projektmustern
Diese Demo zeigt typische Rechnungsformate aus Beratung, IT-Dienstleistung und SaaS. Echte Produktivierung erfordert Anpassung an deine spezifischen Rechnungsformate, Lieferanten und Validierungsregeln.
MIT License © 2026 Vitalij Bojatschkin / BOJATSCHKIN LTD.
Siehe LICENSE für Details.
- n8n Docs: https://docs.n8n.io/
- AWS Bedrock: https://docs.aws.amazon.com/bedrock/
- AWS Textract: https://docs.aws.amazon.com/textract/
- IAM Best Practices: https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
Made with ❤️ for German Mittelstand