On-Device Struktur-OCR

TippOCR in einem Satz

Die Texterkennung läuft vollständig auf dem Gerät — ohne Netzwerkverbindung, ohne Anbieterdaten — und liefert typographisch strukturierte Blöcke (Absätze, Titel, Listen, Tabellen) statt eines rohen Zeichenstroms.

Famulus Repro verwendet Apples Vision-Framework für die Texterkennung. Das Ergebnis ist kein einfacher Textstring, sondern eine gegliederte Liste von OCRBlock-Strukturen, die jedem Textelement seine Rolle im Dokument zuweist: Absatz, Überschrift, Liste, Tabellenzeile oder Einzelzeile. Diese Struktur ist die Grundlage, auf der die Partitur-Nachbearbeitung und der Transkript-Viewer im Backstage aufbauen.

1 Die zwei Erkennungsmodi

Die OCRService-Klasse probiert bei jedem Aufruf zunächst den strukturierten Modus und fällt nur bei Misserfolg auf den rohen Textmodus zurück.

RecognizeDocumentsRequest (verfügbar ab macOS 26 / iOS 26) ist Apples Dokumentstruktur-Engine. Sie liefert:

  • Absätze, Überschriften, Listen und Tabellen als eigenständige Blöcke
  • Normierte Bounding Boxes für jeden Block (0–1, Bottom-Left-Ursprung)
  • Lesereihenfolgekonforme Sortierung der Blöcke
  • Mittlere Erkennungsgenauigkeit (meanConfidence) über alle Blöcke

Wann dieser Modus bevorzugt wird: immer, sofern die Erkennung einen nichtleeren Transkript erzeugt. Die Engine ist optimiert für typographisch strukturierte Druckseiten.

Bei Misserfolg oder leerem Ergebnis des Dokumentmodus übernimmt VNRecognizeTextRequest. Dieser Modus erkennt einzelne Textzeilen, ohne übergeordnete Struktur (Absätze, Tabellen) zu modellieren. Er hat aber einen wichtigen Vorzug: Wörterbuchkorrektur ist deaktiviert (usesLanguageCorrection = false).

Warum das für Archivalien entscheidend ist: Die automatische Sprachkorrektur würde historische Schreibweisen (mich → mich), Frakturligaturen (tz, ck), lateinische Abkürzungen und veraltete Grammatikformen auf moderne Wörterbuchformen normieren. Die Transkription wäre dann korrekt als Text, aber falsch als historische Reproduktion.

2 Spracherkennung

Die Erkennungssprachen sind in Prioritätsreihenfolge festgelegt:

["de-DE", "en-US", "fr-FR", "it-IT", "la"]

Lateinisch (la) ist eingeschlossen, weil Famulus Repro auch für historische Drucke, Handschriften und Archivalien eingesetzt wird, in denen Latein dominiert oder Latein und Volkssprache gemischt auftreten. Wo das Betriebssystem Latein nicht als eigenständiges Sprachmodell listet, fallen die Zeichen auf die Modelle der nahe verwandten romanischen Sprachen zurück.

3 Modell-Warmup

WarnungKaltstart-Latenz: 94 Sekunden

Der erste Aufruf von RecognizeDocumentsRequest in einem Prozess lädt das Vision-Dokumentmodell. Gemessen auf dem Mac Studio M1 Ultra: ca. 94 Sekunden Kaltstart-Latenz. Alle Folgeaufrufe benötigen weniger als 0,6 Sekunden.

Ohne Warmup-Maßnahme würde die erste Erfassung nach dem Programmstart in einen langen Hänger laufen und den Timeout des synchronen recognizeSync-Aufrufs (120 s) fast erreichen.

Famulus Repro löst den Warmup beim Programmstart aus (auf einem Hinterground-Thread), bevor der Nutzer die erste Aufnahme machen kann. Das OCR-Modell ist dann beim ersten tatsächlichen Auslösen bereits geladen. Der Warmup ist einmalig pro Prozesslebensdauer — ein Neustart des Backstage stellt die Latenz wieder her.

4 Ergebnis-Struktur

Das OCR-Ergebnis ist eine OCRResult-Struktur mit einem vollständigen Flachtext-Transkript und der gegliederten Blockliste:

OCRResult — strukturiertes Ergebnis einer Buchseite

{
  "transcript": "Kapitel III\nDie Kausaltheorie\n\nAls Ursache gilt...",
  "engine": "vision-documents",
  "languages": ["de-DE"],
  "meanConfidence": 0.947,
  "blocks": [
    {
      "order": 0,
      "kind": "title",
      "text": "Kapitel III",
      "boundingBox": {"x": 0.08, "y": 0.87, "width": 0.30, "height": 0.04}
    },
    {
      "order": 1,
      "kind": "title",
      "text": "Die Kausaltheorie",
      "boundingBox": {"x": 0.08, "y": 0.82, "width": 0.42, "height": 0.04}
    },
    {
      "order": 2,
      "kind": "paragraph",
      "text": "Als Ursache gilt...",
      "boundingBox": {"x": 0.08, "y": 0.72, "width": 0.84, "height": 0.09}
    }
  ]
}

Der kind-Wert eines Blocks kann "paragraph", "title", "list", "table" oder "line" sein.

5 Abgrenzung zu Foundation Models

Apple Foundation Models (on-device LLMs) stehen auf macOS 27 zur Verfügung. Famulus Repro verwendet sie nicht für die Transkription, und das aus einem sachlichen Grund: Ein on-device LLM mit 4000-Token-Kontextfenster ist ein Zusammenfassungs- und Formulierungswerkzeug, kein Transkriptionsautomat. Beim Einsatz als OCR-Ersatz lässt ein LLM Zeilen aus, paraphrasiert anstatt wörtlich zu übertragen und beschränkt sich auf den Teil des Textes, der in sein Kontextfenster passt.

Die Rolle der Foundation Models in Famulus Repro ist eine andere: Sie übernehmen die semantische Nachbearbeitung im Partitur-Schritt. Dort arbeiten sie auf dem bereits vollständig transkribuierten Text und extrahieren Struktur (Bibliographiedaten, Belegposten, Regest) — eine Aufgabe, für die ein LLM tatsächlich geeignet ist.

Aufgabe Geeignetes Werkzeug
Vollständige Transkription Vision RecognizeDocumentsRequest
Zeilentreue historischer Schreibweisen Vision VNRecognizeTextRequest (ohne Wörterbuchkorrektur)
Bibliographische Extraktion Extended OCR (Gemini Batch, Partitur)
Regest und EDTF-Datum Extended OCR (Partitur)

6 Extended OCR (Gemini Batch)

Die Vision-OCR erzeugt einen Rohtranskript. Die Extended OCR verwandelt das verarbeitete Seitenbild (+ Transkript) in ein DTD-konformes XML mit vollständiger Seitenstruktur, Figuren, Tabellen und Belegdaten. Sie läuft über den ai-agent-orchestrator auf Port 5401 — nicht auf dem Gerät.

6.1 Modellauswahl

Modell Weg Stärke Wann
gemini-3.8-flash (Standard) Gemini Batch API, 50 % Rabatt Beste Qualität, Struktur + Tabellen Standard für Buch- und Belegscans
gemini-3.5-flash-lite Batch oder Sync Schneller, günstiger Nur falls Kosten entscheidend, Qualität -16 pp
glm-5.3-flash:cloud (Ollama) Sync, lokal Kostenlos, kein API-Key Schnellprüfungen, kein Internet
kimi-k2.7-code:cloud (Ollama) Sync, lokal Stark bei tabellenreichen Seiten Tabellen-OCR, Buchführung
qwen3.8:27b-mlx Lokal, Apple MLX Keine Cloud-Latenz Pilotläufe ohne API

Der Batch-Toggle im Inspektor wählt zwischen Gemini-Batch (Standard, Warteschlange ≤ 10 Min.) und sofortigem Sync-Pfad.

6.2 DPI und Aufnahmequalität

Vor der Extended OCR wird die erreichbare DPI-Auflösung aus der Seitenbildgröße abgeschätzt. Liegt sie unter 200 DPI, erscheint in der Transkript-Anzeige ein Hinweis:

Aufnahme mit 152 dpi (unter 200 dpi) — Transkript unter Vorbehalt

Die OCR läuft trotzdem — ab Sep 2026 gibt es keine harte 200-DPI-Sperre mehr. Ein niedriger DPI-Wert ist oft eine physische Grenze (zu weiter Aufnahmeabstand, 12-MP-Pfad) und kein Pipeline-Fehler. Die einzige Abhilfe ist eine neue Aufnahme aus kürzerer Distanz oder auf dem 48-MP-Pfad.

Richtwert: 300 DPI ist das Ziel für gute Lesebarkeit; 200–299 DPI ist akzeptabel mit Hinweis; darunter ist das Ergebnis ein Transkript unter Vorbehalt.

6.3 DTD-Schemata

Profil DTD Ausgabedatei
Buch repro_page.dtd page_NNN.ext.xml
Einzelblatt repro_receipt.dtd <stem>.ext.xml + <stem>.receipt.json

Die DTD-Dateien liegen im Orchestrator-Repo unter agent-store/repro_*_agent/schema/.

6.4 Vollständiger XML-Tab

Der XML-Tab in PageDetailView zeigt das ext.xml als formatiertes Buchblatt (warm, Oxford-Blau-Chrome, laufende Köpfe, Figuren, Marginalien). Der XML-Quelltext-Tab zeigt syntax-hervorgehobenen Quellcode mit Zeilennummern.