Serverseitiges Vision-Modell-OCR für gescannte Dokumente
Wie Simmetric Chat gescannte PDFs mit einer serverseitigen Vision-Modell-OCR-Pipeline liest - Seitenrendering, ein Ollama-Vision-Modell und ein menschlicher Genehmigungsschritt.
Warum gescannte Dokumente die Textextraktion brechen
Bitten Sie einen Textextraktor, ein gescanntes PDF zu lesen, und Sie bekommen fast nichts. Ein von einer Textverarbeitung erzeugtes PDF trägt eine Textebene - die Zeichen sind als Text gespeichert, und die Extraktion ist trivial. Ein von einem Scanner erzeugtes PDF ist dagegen ein Umschlag von Seitenbildern: Es gibt keine Textebene, nur Pixel. Der Parser des Collectors kann nur extrahieren, was tatsächlich existiert, also kommen reine Bildseiten leer oder fast leer zurück, und ein Dokument, das in einem Betrachter perfekt lesbar aussieht, trägt gar nichts zur Wissensdatenbank bei.
Simmetric Chat behandelt das serverseitig, bevor ein Dokument die Chunking- und Embedding-Stufe erreicht. Wenn die Ingestion ein textarmes PDF erkennt, leitet die Plattform es in eine dedizierte OCR-Pipeline, deren Engine keine klassische Mustererkennungs-OCR-Bibliothek ist, sondern ein Sprachmodell mit Vision-Fähigkeiten, das lokal über Ollama bereitgestellt wird. Das Ergebnis ist extrahiertes Markdown, das Überschriften, Listen und Tabellenstruktur deutlich besser bewahrt als zeichengenaue OCR - und alles läuft vollständig in Ihrer Infrastruktur. Kein Dokument verlässt je das Netzwerk, um gelesen zu werden.
Dieser Artikel beschreibt, wie die Pipeline funktioniert, welche Kontrollen sie bietet und den menschlichen Genehmigungsschritt, der verhindert, dass ein schlecht lesendes Modell still eine Wissensdatenbank verunreinigt.
Von Pixeln zu Markdown: die Pipeline
OCR in Simmetric Chat ist eine serverseitige, job-basierte Pipeline. Ein Upload, dessen extrahierter Text den Precheck nicht besteht - standardmäßig markieren weniger als etwa 200 extrahierbare Zeichen ein Dokument als gescannt -, wird ein OCR-Job, und ein Polling-Scheduler nimmt Jobs alle 10 Sekunden mit einem globalen Nebenläufigkeitslimit auf, damit eine Upload-Charge die Maschine nicht sättigen kann. Ein einzelnes Dokument durchläuft dann fünf Stufen:
- Laden.
pdfjs-distöffnet das PDF serverseitig und zählt die Seiten, mit einer Obergrenze von 50 Seiten pro Job als Sicherheitsgrenze gegen außer Kontrolle geratene Verarbeitung. - Rendering. Jede Seite wird als PNG-Bild in vergrößertem Maßstab gerendert - standardmäßig 2x -, damit auch der Kleindruck einer Scan-Qualität wie beim Fax das Modell mit lesbarer Auflösung erreicht.
- Erkennung. Jedes Seitenbild wird als Base64-Bild an das konfigurierte Ollama-Vision-Modell gesendet, und das Modell transkribiert die Seite als Markdown-Text.
- Absicherung. Die Rohtranskription durchläuft eine Anti-Halluzinations-Guard und einen Grounding-Bereinigungsschritt. Vision-Modelle annotieren ihre Ausgabe manchmal mit Grounding-Markern oder erfinden plausiblen Inhalt, wenn eine Seite wirklich unleserlich ist - beides wird hier abgefangen statt gespeichert.
- Scoring und Zusammenbau. Jede Seite erhält einen Qualitätsscore, die Seiten werden zu einem Dokument verkettet, und der Job endet mit einer ehrlichen Zusammenfassung: fehlgeschlagene Seiten werden gezählt und als fehlgeschlagen gemeldet, nie still in ein sauberes "abgeschlossen" absorbiert.
Jeder Schritt dieser Liste läuft auf dem Server. Der Browser führt nie OCR aus, und es wird keine OCR-API eines Drittanbieters aufgerufen - der einzige Netzwerksprung geht von Ihrem Server zu Ihrer Ollama-Instanz.
Modellwahl
Das Vision-Modell ist konfigurierbar, und die Pipeline enthält ein kleines Modell-Registry, das weiß, wie es mit jeder unterstützten Familie spricht:
- glm-ocr - der Standard (
OCR_MODEL=glm-ocr:latest), ein auf OCR spezialisiertes Vision-Modell. Das Registry leitet es über den Chat-Endpunkt von Ollama, der für diese Modellfamilie das Transkriptionsende zuverlässiger erkennt. - deepseek-ocr - eine zweite, auf OCR optimierte Familie, die Grounding-Token nutzt; das Registry sendet ihr Einzelseiten-Bilder und entfernt die Grounding-Marker während der Bereinigung.
- Jedes generische Vision-Modell - Modelle, die das Registry nicht kennt, fallen auf einen generischen Prompt über den generate-Endpunkt von Ollama zurück, sodass auch ein multimodales Modell funktioniert, das Sie bereits lokal betreiben.
Modellbezogene Parameter sind Umgebungsvariablen, dokumentiert mit dem Rest der Konfigurationsoberfläche:
# Serverseitiges Vision-OCR
OCR_MODEL=glm-ocr:latest # Vision-Modell (unterstützt model:version)
OCR_TIMEOUT=600000 # 10 Minuten - Vision-Modelle sind langsam
OCR_NUM_PREDICT=8192 # max. Ausgabe-Tokens pro SeiteEin Prewarm-Endpunkt erlaubt einem Administrator, das Modell vor dem ersten Job in den Speicher zu laden, damit der erste gescannte Upload des Tages nicht die Kaltstartkosten des Modells zahlt.
Der Mensch in der Schleife: genehmigen oder ablehnen
Die Transkriptionsqualität variiert mit der Scan-Qualität, und eine Wissensdatenbank ist der falsche Ort, um herauszufinden, dass ein Modell eine Seite falsch gelesen hat. Deshalb behandelt die Pipeline die OCR-Ausgabe als Entwurf, nicht als Fakt. Jeder Job erzeugt ein überprüfbares Artefakt: Die Vorschau hält den extrahierten Text an denselben Seitenausschnitt wie das Panel mit dem Bild gebunden, damit ein Prüfer jede Seite gegen den Scan vergleichen kann, aus dem sie stammt.
Aus dem OCR-Einstellungspanel sieht ein Administrator den Modellkatalog, die Job-Liste mit Qualitäts- und Glaubwürdigkeitsscores pro Seite und den Arbeitsablauf selbst:
- Genehmigen - die extrahierten Seiten werden akzeptiert und fahren fort: Ein genehmigter Archiv-Job materialisiert die Seiten in der Wissensdatenbank, und aus dem genehmigten Ergebnis kann ein Synthese-Lauf gestartet werden.
- Ablehnen - die Ausgabe wird verworfen und die Entscheidung am Job festgehalten.
Automatisierung ist verfügbar, ohne die Schleuse aufzugeben. Ein ereignisgesteuerter Auto-Genehmigungs-Hook kann Jobs finalisieren, deren Qualitätssignale sauber sind, und bewahrt bewusst den manuellen Genehmigungsfluss überall dort, wo die menschliche Entscheidung der Vertrag ist - ein explizit in eine Wissensdatenbank geleiteter Import wird nie still automatisch genehmigt. In jedem Fall bleiben Job-Zusammenfassungen ehrlich über den Seitenzustand: Ein Job, der mit drei fehlgeschlagenen Seiten endet, sagt das in seinem Ergebnis und in den Logs.
Der Sinn des Zeremoniells ist ein einziges Invariant: Text gelangt nur dann in Ihren RAG-Index, wenn ein sauberer Qualitätsdurchlauf oder ein menschlicher Blick stattgefunden hat.
Wohin der extrahierte Text geht
Genehmigte OCR-Ausgabe fließt zurück in den normalen Ingestion-Fluss. Bei hochgeladenen Dokumenten ersetzt das extrahierte Markdown die beim Scan fehlende Textebene, und das Dokument fährt mit Chunking, Embedding und Indexierung für die hybride Suche fort, genau wie ein natives PDF. Bei Archiven werden genehmigte Seiten Teil der kuratierten Wissensdatenbank des Workspace, wo Wikilinks, Backlinks und die Synthese-Pipeline auf ihnen operieren können wie auf jeder anderen Seite.
Weil die Pipeline serverseitig ist, komponiert sie mit den Garantien des Rests der Plattform: DLP-Filter durchsuchen Inhalte weiterhin, bevor sie das Netzwerk verlassen, RBAC entscheidet weiterhin, wer Jobs starten und Ergebnisse genehmigen darf, und kein Punkt des OCR-Pfads erfordert eine ausgehende Verbindung zu einem Cloud-OCR-Dienst.
Praktische Einstellungen
Die meisten Deployments brauchen nur drei Entscheidungen:
- Aktivieren.
OCR_ENABLEDundOCR_PRECHECK_CHARS- die Zeichenschwelle, die ein PDF in die Pipeline leitet - werden in den Admin-Einstellungen verwaltet. - Modell wählen.
glm-ocr:latestist ein sinnvoller Standard; der Modellkatalog listet, was das Registry kennt, die Modellwahl pro Job ist aus dem Einstellungspanel verfügbar, und eigene Anweisungen können das Transkriptionsverhalten für Ihre Dokumentendomäne schärfen. - Zeit budgetieren. Vision-OCR tauscht Geschwindigkeit gegen Treue. Das Standard-Timeout von 10 Minuten und die 50-Seiten-Grenze existieren, damit ein pathologischer Scan in einen sichtbaren Fehler degradiert statt in einen blockierten Worker.
Wenn Ihr Korpus überwiegend aus nativen PDFs besteht, werden Sie die Pipeline selten bemerken: Gesunde Textebenen umgehen das OCR vollständig. Sobald ein gescanntes Dokument eintrifft, durchläuft es Rendering, Vision-Modell und Ihre Genehmigung - und landet durchsuchbar statt unsichtbar.

