Deutsch. For English, see README.en.md.
Lokale Integration von paperless-ngx mit Ollama fuer KI-gestuetzte Nachbearbeitung von Dokumenten.
- erkennt
/opt/paperless/paperless.conf - installiert Hook, Prompt und Backfill nach
/opt/paperless - aktualisiert
paperless.conf - kann optional die Port-
3000-Webkonsole installieren
- erkennt typische Compose-Dateien
- erstellt
paperless-ai.env - erstellt
docker-compose.override.yml - bindet Hook, Prompt und Backfill per Volume Mount ein
scripts/bootstrap-nas-stack.shscaffoldet den aktuellen NAS-Stack- legt alle benoetigten Daten- und Konfigurationspfade fuer
paperless-ngx,ollama,paperless-ai-web,open-webui,tika-ocr-proxyund die optionalen Image-/OCR-Dienste an - kopiert nur fehlende Beispielkonfigurationen
- bietet
--dry-runund--validate, damit ein Setup vor dem ersten Start pruefbar bleibt
- Paperless API URL
- Paperless API Token
- Ollama URL
- Primaermodell
- optionales Fallback-Modell
- bei Docker: Compose-Datei und Service-Name
Der aktuelle Stand dieses Projekts bildet eine funktionierende Installation mit folgenden Bausteinen ab:
paperless-ngxals native Systemd-InstallationOllamalokal auf127.0.0.1:11434- konfigurierbare lokale Modelle in
Ollama - produktiv erprobte Varianten (Vulkan/MI50):
qwen2.5-coder:7b(schnelles Coding)qwen2.5-coder:14b(tiefe Coding-Analyse)qwen2.5:14b(komplexe Sach-/Rechtstexte, lange Zusammenhaenge)qwen2.5:3b(schnelles Tagging/Korrespondenz)deepseek-ocr:3b(Vision/OCR-Aufgaben)
- Hook nach erfolgreichem Dokumentimport
- automatische Vergabe von:
- Titel
- Korrespondenz
- Dokumenttyp
- Tags
- Review- und Steueroberflaeche auf Port
3000 - getrennte Preview-/Vision-Regeln fuer die Review-Oberflaeche
- optionaler Vision-Autopilot im Hook fuer scanlastige PDFs (OCR + Vision)
- OCR fuer Scan-PDFs mit
force,deu+engund optionalemtessdata_best
Fuer den NAS-Pfad gilt zusaetzlich:
- Vulkan-first auf MI50 ist derzeit die robuste Betriebsstrategie
qwen3.5:*kann auf Vulkan laufen, ist aber fuer Agent-Workflows nicht der bevorzugte Standard- ein separater
llama.cpp-Pfad mit kompatiblen externen GGUFs ist auf dem NAS erfolgreich verifiziert Open WebUIkann als optionaler Chat-/Vergleichsdienst nebenpaperless-ai-webbetrieben werdenOpen WebUIist fuer Datei-Uploads (u. a.txt,md,pdf,doc,docx,pptx) mit festen RAG-Limits vorkonfiguriert- Details dazu stehen in docs/NAS_RUNTIME_FINDINGS.md
- Modellrollen und konkrete Defaults stehen in docs/VULKAN_MODEL_STRATEGY.md
- Open-WebUI-Routing und Upload-Details stehen in docs/OPEN_WEBUI.md
hooks/ai_enrich.py- produktiver Hook fuer Paperless
- unterstuetzt Modell-Fallback, konfigurierbare Timeouts,
Qwen 3.5mit deaktiviertem Thinking und eine begrenzte Ollama-Thread-Zahl fuer CPU-VMs
prompts/ai_enrich_prompt.txt- externer Prompt, getrennt vom Python-Code
web/server.py- lokale Weboberflaeche fuer:
- Chat mit lokalen Modellen
- Paperless-Konfiguration
- eigene Preview- und Vision-Konfiguration fuer die Review-Vorschau
- Prompt-Bearbeitung
- Review einzelner Dokumente
- Backfill fuer Bestandsdokumente
- Task-Manager mit GPU-Trends und Qualitaetscheck der letzten Dokumente
- OpenClaw-MCP-Verwaltung (set/show/unset)
- uebernimmt dieselbe Ollama-Thread-Begrenzung fuer Chat, Preview und Vision
- lokale Weboberflaeche fuer:
systemd/paperless-scheduler.service- korrigierte Scheduler-Unit auf
celery beat
- korrigierte Scheduler-Unit auf
systemd/ollama-web.service- Systemd-Unit fuer die lokale Weboberflaeche
scripts/paperless-ai-admin- Root-Helfer fuer Prompt, Konfiguration und Worker-Neustarts
scripts/paperless-set-ollama-model- Hilfsskript zum Umschalten des aktiven Paperless-Modells
scripts/install-paperless-ai.sh- gefuehrter Installer fuer Hook-/Prompt-Integration in native und einfache Docker-basierte Paperless-Setups
scripts/bootstrap-nas-stack.sh- Scaffold- und Validierungsskript fuer den vollstaendigen NAS-/Compose-Stack dieses Repos
scripts/set-ollama-rocm-profile.sh- schaltet per Profil zwischen
rocm-stableundrocm-nextfuer Ollama/MI50 um
- schaltet per Profil zwischen
scripts/nas/run_ollama_benchmark.py- fuehrt reproduzierbare Modell-/Power-Benchmarks aus und schreibt JSON, CSV und Markdown
scripts/configure-paperless-ai-ollama.sh- Konfigurationshilfe fuer
paperless.conf
- Konfigurationshilfe fuer
docs/- Installations-, Betriebs- und Sicherheitsdokumentation
- NAS-Runtime-Befunde und Modellvergleiche in docs/NAS_RUNTIME_FINDINGS.md
- optionale
Open WebUI-Integration in docs/OPEN_WEBUI.md - Major-Release-Aufteilung in docs/MAJOR_RELEASE_PLAN.md
- MI50-ROCm-Fork- und Teststrategie in docs/ROCM_FORK_PLAN.md
- ROCm-Profil-Umschaltung in docs/ROCM_PROFILES.md
- Benchmark-Durchfuehrung und Veroeffentlichung in docs/BENCHMARKING.md
docker/paddleocr-api/- optionaler
PaddleOCR-API-Container fuer OCR-Experimente und spaetere Integration
- optionaler
scripts/install-paddleocr-api.sh- einfacher Docker-Installer fuer die optionale
PaddleOCR-API
- einfacher Docker-Installer fuer die optionale
paperless-ngximportiert ein Dokument.- OCR/Textinhalt und Metadaten stehen in der Paperless-API bereit.
PAPERLESS_POST_CONSUME_SCRIPTstartethooks/ai_enrich.py.- Der Hook liest das Dokument per API.
Ollamaerzeugt eine strukturierte JSON-Antwort.- Der Hook schreibt Titel, Korrespondenz, Dokumenttyp und Tags zurueck.
Empfohlener Einstieg:
curl -fsSL https://raw.githubusercontent.com/zonfacter/paperless-ollama-integration/main/scripts/install-paperless-ai.sh -o /tmp/install-paperless-ai.sh
sudo bash /tmp/install-paperless-ai.shErst pruefen, was gemacht wuerde:
curl -fsSL https://raw.githubusercontent.com/zonfacter/paperless-ollama-integration/main/scripts/install-paperless-ai.sh -o /tmp/install-paperless-ai.sh
sudo bash /tmp/install-paperless-ai.sh --dry-runDer Installer:
- erkennt typische native und Docker-Setups
- sagt frueh, welche Zugangsdaten und Pfade benoetigt werden
- fragt die noetigen Werte interaktiv ab
- schreibt die passenden Dateien fuer den gewaehlten Modus
Fuer den repo-gepflegten NAS-Stack ist bootstrap-nas-stack.sh der Referenzpfad:
git clone https://github.com/zonfacter/paperless-ollama-integration.git
cd paperless-ollama-integration
./scripts/bootstrap-nas-stack.sh --dry-run
./scripts/bootstrap-nas-stack.shDas Skript:
- legt die aktuellen Daten- und Konfigurationspfade an
- kopiert nur fehlende Beispieldateien
- validiert
.env, die benoetigten JSON-/ENV-Dateien und den Compose-Stand - prueft optionale Bildpfade gegen die aktuelle
OPEN_WEBUI-Konfiguration
Details dazu stehen in docs/NAS_DEPLOYMENT.md.
- Dokument in
paperless-ngxhochladen oder in denconsume-Ordner legen. paperless-ngximportiert das Dokument und erzeugt OCR.PAPERLESS_POST_CONSUME_SCRIPTstartetai_enrich.py.- Der Hook liest Dokumentinhalt und Metadaten ueber die Paperless-API.
- Das konfigurierte
Ollama-Modell erzeugt einen JSON-Vorschlag. - Der Hook schreibt das Ergebnis direkt in
paperless-ngxzurueck.
- Port
3000bietet einenReview Workspacefuer Einzeldokumente:- Dokument suchen
- OCR und aktuelle Metadaten ansehen
- KI-Vorschau erzeugen
- optional Hybrid
OCR + Visionfuer kurze PDFs - Vorschlag uebernehmen oder verwerfen
- Port
3000bietet einenBackfillfuer Bestandsdokumente:- nur fehlende Metadaten
- alle Dokumente
- nur ausgewaehlte Dokumente
- Port
3000bietet imTask Managerzusaetzlich einen Qualitaetscheck der letzten Dokumente:- OCR-Qualitaet (Zeichenumfang)
- fehlende Metadaten
- Review-Tag-Anteil
- potenzielle Dubletten
- Hook:
/opt/paperless/ai_enrich.py - Prompt:
/opt/paperless/ai_enrich_prompt.txt - Paperless-Konfiguration:
/opt/paperless/paperless.conf - Ollama-API:
http://127.0.0.1:11434 - lokale Weboberflaeche:
http://<host>:3000
- konfigurierbarer Prompt ohne Codeaenderung
- konfigurierbarer OCR-Kontext und Timeout
- OCR-Tuning fuer Scan-PDFs mit
force,deu+engundtessdata_best - Fallback-Modell fuer
Ollama - Schutz vor halluzinierten Personentags
Qwen 3.5-Unterstuetzung mit standardmaessig deaktiviertem Thinking- Review-Workflow vor dem Schreiben fuer einzelne Dokumente
- asynchrone Hybrid-Vorschau mit OCR-Entwurf und optionaler Vision-Nachpruefung
- getrennte Web-Konfiguration fuer Vorschau-OCR-Modell, Vision-Modell, Seitenlimit und Vision-Tag
Die Anbindung mehrerer lokaler KI-Modelle an Hook, Vorschau und Review funktioniert in diesem Projekt grundsaetzlich sauber.
Moeglich sind getrennte Modelle fuer:
- normalen Paperless-Hook
- Vorschau-OCR
- Vision-Review
- Tag-Review
Praktisch erfolgreich angebunden und ueber denselben Integrationspfad getestet wurden unter anderem:
qwen3.5:4bqwen3.5:9bqwen2.5:7b-instructqwen2.5:14b-instructglm-ocrglm-ocr:q8_0gemma3:4bqwen3-vl:4bopenbmb/minicpm-v2.5:q4_K_S
Die entscheidende Erkenntnis daraus:
- die technische Anbindung funktioniert
- die praktische Nutzbarkeit haengt stark von der Laufzeit auf der Zielhardware ab
Fuer echte Scan-PDFs hat sich in diesem Projekt PAPERLESS_OCR_MODE=force als robuster erwiesen als redo, sobald zusaetzlich Bereinigung wie clean, deskew und rotate-pages aktiv sein soll.
Empfohlene OCR-Basis fuer deutschsprachige Scans:
PAPERLESS_OCR_LANGUAGE=deu+engPAPERLESS_OCR_MODE=forcePAPERLESS_OCR_IMAGE_DPI=300PAPERLESS_OCR_CLEAN=cleanPAPERLESS_OCR_DESKEW=truePAPERLESS_OCR_ROTATE_PAGES=true
Wenn tessdata_best genutzt wird, muessen neben den .traineddata-Dateien auch die normalen Tesseract-Zusatzdateien im Zielpfad liegen:
configs/tessconfigs/pdf.ttf
Ein reiner Sprachdaten-Ordner ohne diese Dateien kann OCRmyPDF bei hocr- und txt-Ausgaben scheitern lassen.
Die wichtigsten praktischen Erkenntnisse aus den Modelltests:
- kleine bis mittlere Textmodelle bleiben fuer diese Architektur am alltagstauglichsten
- reine Textpfade mit OCR-Bereinigung, Strukturierung und Regeln funktionieren lokal deutlich robuster als voll multimodale Bild+OCR-Prompts
- kleine Vision-/OCR-Modelle liessen sich technisch problemlos anbinden, waren auf der getesteten CPU-VM aber dennoch oft zu langsam fuer interaktive oder synchrone Review-Pfade
- ein kleineres multimodales Modell bedeutet nicht automatisch eine brauchbare Dokumentlaufzeit
Dieses Projekt dokumentiert deshalb bewusst zwei Ebenen:
- lokal sinnvoll auf CPU:
paperless-ngxOCR- OCR-Bereinigung
- OCR-Strukturierung
- regelbasierte Nachlogik
- Textmodelle fuer Titel, Korrespondenz, Dokumenttyp und Tags
- spaeter oder auf staerkerer Hardware sinnvoll:
- dedizierte Vision-/OCR-Modelle fuer Seitenbilder
- GPU-Passthrough
- externer oder Cloud-basierter Review-Schritt
Kurz gesagt:
- die Integration von Vision-/OCR-Modellen funktioniert
- die CPU-VM ist der begrenzende Faktor
- deshalb bleibt die Default-Architektur dieses Projekts text- und OCR-zentriert
- AI_INSTALL
- ROADMAP
- CONFIG_EXAMPLES
- INSTALL
- OPERATIONS
- ARCHITECTURE
- PROMPTS
- SECURITY
- WEB_UI
- OPENCLAW
- UI_NOTES
- TROUBLESHOOTING
- PADDLEOCR_API
- Dieses Repository enthaelt keine Tokens oder geheimen Schluessel.
- Host-spezifische Benutzer, Ports und Pfade koennen je nach System angepasst werden.
- Der Prompt ist bewusst als Textdatei ausgelagert, damit er ohne Codeaenderung angepasst werden kann.