olmOCR + paperless-ngx – Complete Setup Guide (Public Release)

Liebe Alle,

das Thema “schlechte OCR Erkennung in paperless-ngx” beschäftig mich auch schon eine Weile und so habe auch ich zum Programmieren angefangen.
Ähnlich wie Heiko’s Workflow ist auch Meiner ein pre-processing. Ich habe ihn dann aber auch auf post-processing erweitert, damit man schon die vorhanden Dokumente nochmals OCR scannen kann.

Da ich mein paperless auf einer Synology NAS betreibe und alle KI-Aufgaben durch meine Spark erledigen lasse, gibt es hier zwangsläufig Unterschiede zu anderen Konfigurationen.

Eine Schritt für Schritt Anleitung zur Installation habe ich auf GitHub veröffentlicht:

Hier noch ein Kurzüberblick auf Deutsch, was die Konfiguration lösen soll:

Diese Konfiguration implementiert eine vollständig automatisierte End-to-End-Pipeline zur Dokumentenverarbeitung mit den folgenden Funktionen:

1. Automatische OCR bei neuen Scans

Legen Sie eine PDF-Datei im Scan-Eingabeordner ab, und das System übernimmt den Rest. Der AI-Watchdog erkennt die neue Datei, sendet jede Seite als Bild an das KI-Modell auf dem GPU-Server, empfängt den extrahierten Text und leitet das Dokument – zusammen mit einer JSON-Datei, die das OCR-Ergebnis enthält – an die paperless-ngx-Verarbeitungs-Pipeline weiter. Es sind keine manuellen Schritte erforderlich.

2. Korrespondenzzuweisung über Unterordner

Der Scan-Eingabeordner unterstützt einen Unterordner pro Person oder Einheit (z. B. /scaninput//). Jedes Dokument, das in einen Unterordner abgelegt wird, wird automatisch dem entsprechenden Korrespondenten in paperless-ngx zugewiesen. Wenn der Korrespondent noch nicht existiert, wird er automatisch über die API erstellt.

3. Nachträgliche OCR für vorhandene Dokumente

Dokumente, die sich bereits in paperless-ngx befinden – unabhängig davon, ob sie vor dieser Einrichtung importiert oder zuvor mit schlechten Tesseract-Ergebnissen verarbeitet wurden – können jederzeit mit AI OCR erneut verarbeitet werden. Fügen Sie einfach das Tag „OCR” zu einem Dokument in der paperless-ngx-Benutzeroberfläche hinzu. Ein Hintergrund-Thread überprüft alle 5 Minuten, ob Dokumente mit diesem Tag vorhanden sind, lädt die Original-PDF-Datei herunter, führt die KI-OCR durch, schreibt das Ergebnis über die API zurück und ersetzt das Tag durch „OCR-done“, um den Abschluss zu bestätigen. Für die sofortige Verarbeitung steht auch ein manueller Trigger zur Verfügung.

4. Reibungsloser Fallback, wenn der KI-Server offline ist

Wenn der Ollama-Server vorübergehend nicht erreichbar ist, wird die Pipeline nicht unterbrochen. Die PDF-Datei wird weiterhin in das Verzeichnis „paperless-ngx consume“ verschoben und als Fallback mit der integrierten Tesseract-OCR verarbeitet. Die Wiederholungslogik versucht mehrmals, Ollama zu erreichen, bevor sie aufgibt, sodass kurze Netzwerkunterbrechungen transparent behandelt werden.

5. Robuste Wiederholungslogik

Jeder Netzwerkaufruf an Ollama – Zustandsprüfung, Modell-Warmup und OCR-Anfragen pro Seite – ist in eine konfigurierbare Wiederholungsschleife eingebettet (Standard: 3 Versuche mit 10-sekündigen Pausen). Dadurch ist das System robust gegenüber vorübergehenden GPU-Lastspitzen, Verzögerungen beim Modellwechsel oder kurzen Verbindungsproblemen zwischen dem NAS und dem KI-Server.

6. Wartungsfreier Betrieb

Nach der Bereitstellung läuft das System vollständig autonom. Der ai-Watchdog startet automatisch mit Docker, der Retagger-Thread läuft im Hintergrund und alle Python-Skripte werden als Docker-Volume gemountet – das bedeutet, dass Konfigurationsänderungen nur einen Neustart des Containers erfordern, nicht aber eine vollständige Neuerstellung des Images.

So funktioniert es auf einen Blick

Die beiden Maschinen kommunizieren ausschließlich über das lokale Netzwerk über die Ollama-HTTP-API. Das NAS benötigt niemals direkten GPU-Zugriff – es sendet einfach Bilddaten an den KI-Server und erhält Text zurück. Durch diese klare Trennung kann der KI-Server aktualisiert, ausgetauscht oder vorübergehend offline genommen werden, ohne dass dies Auswirkungen auf das NAS oder paperless-ngx selbst hat.

Das Sidecar-JSON ist der zentrale Übergabemechanismus: Wenn der ai-watchdog die OCR für eine Datei abgeschlossen hat, schreibt er eine kleine JSON-Datei (gleicher Dateiname, Erweiterung .json) in ein gemeinsames Sidecar-Verzeichnis. Wenn paperless-ngx die PDF-Datei kurz darauf verarbeitet, liest das Skript post-consume.sh diesen Sidecar, extrahiert den OCR-Text und die entsprechenden Informationen und schreibt beides über die paperless-ngx-REST-API in einem einzigen PATCH-Aufruf in das Dokument. Der Sidecar wird anschließend gelöscht.

Grüße, Alexander

Hallo Alexander,

hab mich ein wenig bei dir umgeschaut, mein Setup auf die Version 3.4 gehoben und als Repository auf Git-Hub veröffentlicht. Vielleicht gibt es ja den einen oder anderen, der weitere Ideen und Lösungsvorschläge hat und sich am Projekt beteiligen möchte.

Grüße Heiko

2 „Gefällt mir“

Ja, Beteiligung fänd ich auch gut!

Versuch grad Deine Ideen paperless-ai nicht zu verwenden umzusetzen.

Hab auch gehofft, dass sich Stefan mehr daran beteiligen würde, aber da ist nach seinem Video irgendwie Sendepause eingetreten…

Grüße, Alexander

Hallo Alexander,

hier mal ein Update.

Grüße Heiko

Servus Heiko!

Das trifft sich gut, dass Du wieder auf Synology umstellst! Hab am Wochenende versucht Deine Konfiguration bei mir zu installieren und habe aber leider durch die vielen Anpassungen, die ich zwischen Deiner und meiner Konfig machen musste, heillos die Rechte auf der Synology zerschossen. :scream: :joy: Dann hab ich auf der Synology den Rest des Wochendes versucht meine Ursprungskonfig wiederherzustellen. Hab draus hoffentlich gelernt und werde jetzt die Installationen via Portainer in Zukunft machen, dann sind die unterschiedlichen Konfigurationen besser und komfortabler von einander isoliert… :face_with_raised_eyebrow:

Grüße, Alexander

saubere Trennung der beiden Systeme in einzelnen Ordnern inkl. aller Skripte und Docker-Dateien.

Grüße Heiko

Servus Heiko,

ich wollte mich grad mit der Dual System Edition von Dir beschäftigen, jedoch bekomme ich auf den Link, den Du gepostet hast ein 404.

Grüße, Alexander

Hallo Alexander,

bitte entschuldige, das geht ganz allein auf meine Kappe. Ich habe am Wochenende massiv „unter der Haube“ geschraubt. Ich war mit dem Loadbalancing für die KI unzufrieden (die GPU hat sich gelangweilt, wenn sie nichts für das Vision-Modell zu tun hatte) – das habe ich nun angepasst.

Genauso habe ich die Verteilung der Pfade optimiert, um unnötigen Netzwerktraffic zwischen PC und NAS zu vermeiden. Dabei stieß ich immer wieder auf neue Herausforderungen und musste die Codes für die Duplikatsuche, das Dashboard und so weiter anpassen. Da es bisher kaum Reaktionen auf das neue Setup gab, dachte ich, es würde niemandem auffallen, wenn ich es bis Monday auf „privat“ setze, um die Anpassungen in Ruhe vorzunehmen und alles ausgiebig zu testen.

Ab Montag ist der Link wieder aktiv!

PS: Und heute war ich noch mit den Hunden 10 km spazieren und am Vormittag gab es noch eine Rollski-Einheit. (Das war die Zeit, in der sich das System mit ca. 1000 neuen Dokumenten abrackern durfte.)

Grüße Heiko

Servus Heiko,

alles klar - :joy: - hab schon gedacht es ist was schlimmeres passiert.
Ich bin dieses Wochenende zu gar nix gekommen und nächstes Wochenende schaut auch traurig aus - aber vielleicht schaff ich es unter der Woche!

Grüße, Alexander

Hallo Alexander

da ist es wieder (Paperless-Setup mit NAS und KI-Server):

Grüße Heiko

1 „Gefällt mir“

Es gibt demnächst ein Update von uns, die „Sendepause“ liegt daran, dass es bei uns lediglich ein Nebenprojekt ist, das zurzeit etwas weniger Kapazität bekommt.

Grundsätzlich möchte ich aber (ohne jemandem auf die Füße zu treten!) eine deutliche Warnung aussprechen:
Größtenteils KI-generierte Repositories können, je nachdem, welche Expertise dahinter steckt, extrem effizient entwickelt oder aber brandgefährlich sein. Ich hatte noch nicht die Zeit, mir das Projekt von euch genauer anzusehen, daher kann ich es nicht einordnen.

Nur meine Warnung: Prüft verdammt gründlich, was ihr euch installiert. Wenn ihr das nicht prüfen könnt, weil euch die Expertise fehlt, installiert es maximal auf einem isolierten Testsystem.

Ich finde die Initiative richtig gut, sowas in der Community zu entwickeln und es auch hier zu veröffentlichen, aber als Betreiber des Forums möchte ich den weniger versierten Benutzern diesen Hinweis mitgeben.

Hallo Stefan,

danke für das Update – ich hatte mir fast schon gedacht, dass deine „Sendepause" mit einem anderen Projekt zusammenhängt. Was mich ehrlich gesagt ein bisschen gewundert hat: Es ist eigentlich gar nicht deine Art, einfach nichts zu schreiben – das war schon untypisch für dich! Aber gut, jetzt wissen wir’s. :grinning_face_with_smiling_eyes:

Deine Warnung ist absolut berechtigt und ich kann sie nur unterschreiben - sowohl als Reaktion auf meine letzte Nachricht als auch ganz grundsätzlich. „KI-generiert" bedeutet eben nicht automatisch „geprüft und sicher", und genau deshalb halte ich deine Initiative für eine geschlossene Gruppe mit klarer Risikowarnung für so wichtig. Das schafft den richtigen Rahmen, um solche Projekte seriös zu diskutieren und weiterzuentwickeln, ohne weniger erfahrene Nutzer unvorbereitet damit zu konfrontieren.

Zu diesem Thema kann ich auch aus eigener leidvoller Erfahrung sprechen: Ich habe mir vor kurzem auf meiner Synology mit direkten sudo chmod Befehlen die Rechte so gründlich zerschossen, dass ich den Container Manager komplett neu installieren musste. Seitdem arbeite ich konsequent mit isolierten Testsystemen - ich nutze dafür Portainer und NVIDIA Workbench, um neue Setups erst dort zu validieren, bevor irgendetwas Produktives damit in Berührung kommt. Fazit daraus: Nichts ist wichtiger als gute Backups und ein dediziertes Testsystem. Das gilt für KI-generierte Repos genauso wie für eigene Experimente.

Ich freue mich auf euer Update und auf die geschlossene Gruppe - da bin ich sehr gerne dabei!

Grüße, Alexander

Hallo Alexander

hier eine Update zu meinem Projekt:

  • GitHub wieder privat um unerfahrene User zu schützen (Zugang nur nach Überprüfung von Sach- und Fachkenntnis über Mitarbeiterstatus)
  • antworten werden nur noch gelegentlich erscheinen und kurz ausfallen. Da ich KI zum ausformulieren bzw. zum zusammenfassen genutzt habe und ich diese wertvolle Zeit (suche Tipp- oder Rechtschreibfehlern, Ausdruck und Grammatik) lieber in mein Projekt stecke.
  • wahrscheinlich steht es nur der eigenen KI “Marco-DMK” zu, KI als Werkzeug zu nutzen. Keine Ahnung ist mir auch egal.

also bis vielleicht irgend wann später einmal.

Grüße Heiko

PS: Das aktuelle Setup hat schon 4200 Dokumente gefressen.

Wie im anderen Post beschrieben, ist Marco ein echter Mitarbeiter von mir. Kein Grund für böses Blut.