Ein eigenständiger Node.js-Server, der chinesische Rechnungs-PDFs in strukturierte CSV-Daten umwandelt – kombiniert OCR, QR-Code-Decodierung und ein Ollama-Visionmodell in einem nahtlosen Prozess.
Was ist das XteVision Invoice Extractor und wer soll es nutzen?
Das XteVision Invoice Extractor ist ein eigenständiger Node.js-Server zur Extraktion strukturierter Daten aus chinesischen Rechnungs-PDFs und zur Speicherung der Ergebnisse in CSV-Dateien. Diese Version läuft eigenständig – ohne ComfyUI – und kann daher auf jeder Maschine mit Node.js und optional mit einem Ollama-Visionmodell eingesetzt werden.
qwen2.5vl:latest) für intelligente FeldextraktionDatenfluss von der Rechnungs-PDF zur CSV-Ausgabe
┌─────────────────────────────────────────────────────────────┐ │ XteVision Invoice Extractor │ ├─────────────────────────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ PDF │──▶│ QR │──▶│ Ollama │──▶│ CSV │ │ │ │Processor │ │ Decoder │ │Extractor │ │ Writer │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ Invoice Data Merger │ │ │ │ (QR data = Ground Truth for amounts & numbers) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
Der Server ist auf eigenständige, selbstgehostete Ausführung ausgelegt:
OLLAMA_URL)Was die eigenständige Version kann
Wandlung von Rechnungs-PDFs in hochauflösende Bilder und Textextraktion mit Tesseract-OCR (Chinese + English).
Auslesen des chinesischen Steuer-QR-Codes, der als Ground Truth für Beträge und Nummern gilt.
Ein Ollama-Visionmodell extrahiert strukturierte Felder wie Firmennamen, Steuersatz und Produktbeschreibung.
Schreiben von UTF-8-BOM-CSV-Dateien mit voller Chinese-Unterstützung und Excel-Kompatibilität.
Bedienschnittstelle mit Drag & Drop für einzelne oder Batch-Verarbeitung.
Verarbeitung eines ganzen Ordners in einer Anfrage und Zusammenführen der Ergebnisse in einer CSV.
Software und Systempakete, die vor der Installation benötigt werden
qwen2.5vl:latest)# Homebrew-Pakete installieren
brew install tesseract tesseract-lang poppler
# Chinese-Sprachdaten installieren
brew install tesseract-lang
# Ollama installieren
curl -fsSL https://ollama.com/install.sh | sh
# Visionmodell ziehen
ollama pull qwen2.5vl:latest
# Systempakete installieren
sudo apt-get update
sudo apt-get install -y tesseract-ocr tesseract-ocr-chi-sim poppler-utils
# Ollama installieren
curl -fsSL https://ollama.com/install.sh | sh
# Visionmodell ziehen
ollama pull qwen2.5vl:latest
# Via Chocolatey installieren
choco install tesseract poppler
# Oder herunterladen von:
# Tesseract: https://github.com/UB-Mannheim/tesseract/wiki
# Poppler: https://blog.alivate.com.au/poppler-windows/
# Ollama von https://ollama.com installieren
ollama pull qwen2.5vl:latest
Den Server auf deiner Maschine laufen lassen
# In das Projektverzeichnis wechseln
cd XteVision-standalone
# Abhängigkeiten installieren
npm install
# Konfigurationsumgebung kopieren
cp .env.example .env
# .env an die eigene Umgebung anpassen
# Besonders OLLAMA_URL, wenn Ollama auf einem anderen Host läuft
# Server starten
npm start
# Oder mit Auto-Reload für die Entwicklung
npm run dev
Der Server startet bei http://localhost:3000.
.env konfigurierten OLLAMA_URL erreichbar ist und das gewählte Visionmodell installiert ist.Laufzeiteinstellungen in der .env-Datei
Bearbeite die .env-Datei, um sie an deine Bereitstellung anzupassen. Folgende Schlüssel werden unterstützt:
| Schlüssel | Standard | Beschreibung |
|---|---|---|
| PORT | 3000 | HTTP-Serverport |
| UPLOAD_DIR | ./uploads | Verzeichnis für hochgeladene Rechnungen |
| OUTPUT_DIR | ./output | Verzeichnis für erzeugte CSV-Dateien |
| OLLAMA_URL | http://localhost:11434 | Base-URL des Ollama-Dienstes |
| OLLAMA_MODEL | qwen2.5vl:latest | Verwendetes Visionmodell |
| DPI | 300 | Aufl%C3%B6sung für die PDF-zu-Bild-Randung |
| MAX_FILE_SIZE | 52428800 | Maximale Uploadgr%C3%B6%C3%9Fe in Bytes (50 MB) |
API-Routen und ihre Funktion
| Schnittstelle | Method | Funktion |
|---|---|---|
| /api/health | GET | Gesundheitscheck |
| /api/models | GET | Listet verfügbare Ollama-Modelle auf |
| /api/process | POST | Verarbeitet eine einzelne Rechnung |
| /api/process-folder | POST | Verarbeitet einen Ordner von Rechnungen |
| /api/files | GET | Listet Ausgabe-CSV-Dateien auf |
| /api/download/:filename | GET | Lädt eine CSV-Datei herunter |
Verarbeite eine einzelne Rechnung:
curl -X POST http://localhost:3000/api/process \
-F "invoice=@/path/to/invoice.pdf" \
-F "model=qwen2.5vl:latest" \
-F "filenamePrefix=invoice_data"
Verarbeite einen Ordner von Rechnungen:
curl -X POST http://localhost:3000/api/process-folder \
-H "Content-Type: application/json" \
-d '{
"folderPath": "/path/to/invoices",
"model": "qwen2.5vl:latest",
"filenamePrefix": "batch_invoices"
}'
Die Extraktionspipeline vom Bild zur CSV
| Feld | Beschreibung |
|---|---|
| 流水号 | Laufnummer |
| 月份 | Monat |
| 收票日期 | Rechnungsdatum (YYYY-MM-DD) |
| 公司名称 | Firmennamen (Verkäufer) |
| 产品内容 | Produkt-/Servicedescription |
| 未税金额 | Betrag vor Steuer |
| 税额 | Steuerbetrag |
| 金额合计 | Gesamtbetrag |
| 增值税 (%) | Steuerprozentsatz |
| 附件数 | Anzahl Anhänge |
| 发票号码 | Rechnungsnummer |
| 经办人 | Bearbeiter |
| 状态 | Status |
| 付款日期 | Zahlungsdatum |
| 备注 | Hinweise |
| source_file | Quell-PDF-Dateiname |
Häufige Probleme und L%C3%B6sungen
# Prüfe, ob Ollama läuft
ollama list
# Prüfe die Ollama-API
curl http://localhost:11434/api/tags
# Bei Remote-Ollama in .env setzen
OLLAMA_URL=http://192.168.1.100:11434
# Prüfe die Tesseract-Installation
tesseract --version
# Verfügbare Sprachen auflisten
tesseract --list-langs
# Chinese-Sprachdaten installieren, falls fehlend
# Ubuntu/Debian:
sudo apt-get install tesseract-ocr-chi-sim
# macOS:
brew install tesseract-lang
# Stellt sicher, dass Poppler installiert ist
# Ubuntu/Debian:
sudo apt-get install poppler-utils
# macOS:
brew install poppler
Eigenständige Version vs. ComfyUI-Version
| Funktion | ComfyUI-Version | Eigenständige Version |
|---|---|---|
| Abhängigkeiten | ComfyUI + PyTorch | Nur Node.js |
| Installationskomplexität | Hoch | Niedrig |
| Speicherverwendung | Hoch (GPU) | Niedrig (CPU) |
| Performance | GPU-beschleunigt | GPU-beschleunigt, Fallback auf CPU |
| Bereitstellung | ComfyUI erforderlich | Eigenständig |
| API | ComfyUI-Knoten | REST-API |