Ausgangslage: Kassenzettel-Chaos
Wer kennt es nicht: Der Geldbeutel quillt über vor Kassenzetteln, die Buchhaltung wartet, und am Ende tippt man alles manuell in eine Tabelle ein – oder lässt es ganz bleiben.
Die typischen Probleme
| Problem | Konsequenz |
|---|---|
| Kassenzettel verblassen | Daten nach wenigen Wochen unleserlich |
| Manuelles Abtippen | Zeitaufwändig und fehleranfällig |
| Keine Kategorisierung | Kein Überblick über Ausgaben nach Kategorie |
| Belege gehen verloren | Fehlende Nachweise für Steuererklärung |
| Verschiedene Währungen | Zusätzlicher Aufwand bei Reisen |
Das Ziel: Kassenzettel einfach abfotografieren, an einen Telegram-Bot schicken, und alles wird automatisch erfasst, kategorisiert und archiviert.
Die Lösung: n8n-Workflow mit OCR und KI
Ein 9-Node-Workflow in n8n, der den kompletten Prozess vom Foto bis zur archivierten Tabelle automatisiert.
Architektur
┌─────────────────────────────────────────────────────────────────┐
│ TELEGRAM BOT │
│ │
│ Nutzer schickt Foto ──▶ Bot empfängt und verarbeitet │
│ │
└────────────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ VERARBEITUNG (n8n) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Download │──▶│ OCR │──▶│ Prepare │──▶│ LLM │ │
│ │ File │ │ (Engine 2│ │ Upload │ │ Extract │ │
│ │ │ │ Deutsch)│ │ │ │(gpt-4o- │ │
│ │ │ │ │ │ │ │ mini) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Telegram │◀──│ Google │◀──│ Google │◀──│ Format │ │
│ │ Reply │ │ Sheets │ │ Drive │ │ Results │ │
│ │ │ │ Append │ │ Upload │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Die 9 Nodes im Detail
| # | Node | Typ | Aufgabe |
|---|---|---|---|
| 1 | Telegram Trigger | telegramTrigger | Empfängt Fotos vom Nutzer |
| 2 | Download File | telegram | Lädt das Bild über die Telegram API |
| 3 | OCR | httpRequest | Sendet das Bild an ocr.space (Engine 2, Deutsch) |
| 4 | Prepare | code | Extrahiert OCR-Text, stellt Chat-ID und Binärdaten bereit |
| 5 | LLM Extract | chainLlm | KI extrahiert strukturierte Daten aus dem OCR-Text |
| 6 | Format Results | code | Baut Dateinamen, Sheets-Zeile und Antworttext |
| 7 | Google Drive Upload | googleDrive | Speichert das Bild als Datum_Kategorie |
| 8 | Google Sheets | googleSheets | Fügt eine neue Zeile in die Tabelle ein |
| 9 | Telegram Reply | telegram | Sendet die Zusammenfassung an den Nutzer |
Schlüsselentscheidungen
OCR: Engine 2 mit deutschen Parametern
Standard-OCR versagt bei Kassenzetteln – kleine Schrift, schlechte Beleuchtung, Thermodruck. Die Lösung:
OCR.space Engine 2
├── language = ger (deutsche Zeichenerkennung)
├── scale = true (Bild hochskalieren)
└── isTable = true (Tabellenerkennung für Artikellisten)
KI statt Regex
Regex-basiertes Parsing scheitert an der Vielfalt realer Belege – verschiedene Layouts, Sprachen, Abkürzungen. Stattdessen analysiert ein LLM (gpt-4o-mini über OpenRouter) den rohen OCR-Text und liefert strukturiertes JSON:
{
"nr": "20260215-001",
"store": "ALDI SÜD",
"category": "Lebensmittel",
"date": "15.02.2026",
"total": "23,47",
"currency": "EUR",
"items": "Milch, Brot, Käse, Obst, Gemüse",
"notes": ""
}
Automatische Kategorisierung
Die KI ordnet jeden Beleg einer Kategorie zu:
| Kategorie | Beispiele |
|---|---|
| Lebensmittel | ALDI, REWE, Edeka, Lidl |
| Elektronik | MediaMarkt, Saturn, Conrad |
| Kleidung | H&M, Zara, Primark |
| Haushalt | IKEA, OBI, Bauhaus |
| Restaurant | Restaurants, Cafés, Lieferdienste |
| Transport | Tankstellen, DB, ÖPNV |
| Gesundheit | Apotheken, Drogerien |
| Versicherung | Versicherungsbeiträge |
| Sonstiges | Alles andere |
Plain-Text-Antwort statt Markdown
Telegram’s Markdown-Parser ist streng und bricht bei ungültiger Formatierung ab. Deshalb wird die Antwort als reiner Text konstruiert – zuverlässig und ohne Parsing-Fehler.
Das Ergebnis
Google Sheets: Automatische Belegübersicht
Jeder Kassenzettel wird als neue Zeile mit allen extrahierten Daten erfasst:
┌──────┬───────────┬──────────────┬────────────┬───────┬──────┬─────────┬───────┐
│ Nr │ Store │ Category │ Date │ Total │ Curr │ Items │ Notes │
├──────┼───────────┼──────────────┼────────────┼───────┼──────┼─────────┼───────┤
│ 001 │ ALDI SÜD │ Lebensmittel │ 15.02.2026 │ 23,47 │ EUR │ Milch, │ │
│ │ │ │ │ │ │ Brot ..│ │
├──────┼───────────┼──────────────┼────────────┼───────┼──────┼─────────┼───────┤
│ 002 │ dm │ Gesundheit │ 16.02.2026 │ 15,99 │ EUR │ Shampoo │ │
│ │ │ │ │ │ │ Creme │ │
├──────┼───────────┼──────────────┼────────────┼───────┼──────┼─────────┼───────┤
│ 003 │ Migros │ Lebensmittel │ 17.02.2026 │ 45,30 │ CHF │ Fleisch │ │
│ │ │ │ │ │ │ Gemüse │ │
└──────┴───────────┴──────────────┴────────────┴───────┴──────┴─────────┴───────┘
Google Drive: Automatische Archivierung
Jedes Belegfoto wird mit dem Dateinamen Datum_Kategorie in Google Drive gespeichert – sofort auffindbar und durchsuchbar.
Telegram: Sofortige Bestätigung
Danke! Dein Beleg wurde gespeichert.
Nr: 20260215-001
Geschaeft: ALDI SÜD
Kategorie: Lebensmittel
Datum: 15.02.2026
Betrag: 23,47 EUR
Artikel: Milch, Brot, Käse, Obst, Gemüse
Datei: 2026-02-15_Lebensmittel
Datenbank: [Link zur Google Tabelle]
Technischer Stack
| Komponente | Tool |
|---|---|
| Workflow-Engine | n8n (self-hosted auf Hostinger VPS) |
| OCR | ocr.space API (Engine 2, Deutsch) |
| KI-Extraktion | gpt-4o-mini via OpenRouter |
| Messenger | Telegram Bot API |
| Datenspeicher | Google Sheets |
| Dateispeicher | Google Drive |
| Workflow-Entwicklung | Claude Code + n8n MCP-Server |
Fazit
Der Telegram Beleg-Bot löst ein alltägliches Problem mit minimaler Reibung:
- Kein manuelles Eintippen – Foto schicken, fertig
- Automatische Kategorisierung – KI erkennt Geschäft und Ausgabenkategorie
- Mehrsprachig – Deutsche, englische und schweizer Belege werden erkannt
- Mehrere Währungen – EUR, CHF, USD werden automatisch erkannt
- Sofort archiviert – Bild in Google Drive, Daten in Google Sheets
Der gesamte Workflow wurde mit Claude Code und dem n8n MCP-Server per Sprachbefehl erstellt – von der ersten Node bis zum fertigen Bot, inklusive Debugging und Optimierung.
Du möchtest deine Belegerfassung oder andere Geschäftsprozesse automatisieren? Dann schreib mir einfach auf LinkedIn oder buche direkt einen kostenlosen Call.