Externes OCR in JSON- und C-ABI-Jobs
Die Operation ocr.layer akzeptiert builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli und rapidocr-dll; das Weglassen von engine bewahrt den eingebauten ASCII-Default
Die Capability-Erkennung listet diese unterstützten Adapter auf, ohne zu behaupten, dass externe Programme, Bibliotheken, Sprachdaten oder ONNX-Modelle auf dem Ausführungsrechner installiert sind
Tesseract-Beispiel
{"schemaVersion":1,"type":"ocr.layer","pages":[0],"dpi":300,
"minimumConfidence":0.7,"skipPagesWithText":true,"replaceExisting":false,
"engine":"tesseract-cli",
"engineOptions":{"executablePath":"C:/OCR/tesseract.exe",
"tessDataDirectory":"C:/OCR/tessdata","language":"eng",
"pageSegMode":6,"engineMode":3,"timeoutMilliseconds":30000,
"maxPixels":16777216}}
Legen Sie dieses Objekt ins operations-Array eines Dateijobs und ergänzen Sie input- und output-Pfade, oder übergeben Sie es direkt an hpdf_document_execute_json_v1 mit einem geladenen Handle und Binär-/Ergebnis-Callbacks
| Engine | Erforderliche engineOptions | Optionale engineOptions |
|---|---|---|
| builtin-ascii | Keine | engineOptions muss fehlen oder ein leeres Objekt sein |
| tesseract-cli | executablePath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| tesseract-dll | libraryPath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| rapidocr-cli | pythonExecutable, bridgeScript, modelDirectory | detectionModel, recognitionModel, classificationModel, characterDictionary, fontPath, useAngleClassifier, intraOpThreads, interOpThreads, timeoutMilliseconds, maxPixels |
| rapidocr-dll | libraryPath, modelDirectory | language, detectionModel, recognitionModel, classificationModel, characterDictionary, useAngleClassifier, rightToLeft, threads, timeoutMilliseconds, maxPixels |
Optionen und lokale Ressourcen
Externe Engines verlangen ein explizites engineOptions als Objekt; unbekannte Schlüssel, falsche JSON-Typen, Pfade oder Sprach-Strings mit NUL sowie leere Pflichtwerte werden abgelehnt
Tesseract nutzt als Default language=eng, pageSegMode=3 und engineMode=3; die Segmentierungsmodi 0 und 2 erkennen keinen Text und werden abgelehnt, die übrigen Modi bis 13 werden akzeptiert
engineMode akzeptiert 0 bis 3; trained-data-Dateien müssen den gewählten Modus unterstützen, und mehrsprachige Tesseract-Sprachausdrücke wie eng+fra brauchen die entsprechenden lokalen Modelle
Die RapidOCR-CLI nutzt die nativen Modellnamen aus THPDFRapidOCROptions.Default und setzt beide Thread-Limits auf den Default 1; sie akzeptiert explizit gelieferte Dictionary- und Font-Pfade, und die konfigurierte Bridge muss den lokalen TSV-Vertrag implementieren
Die RapidOCR-DLL startet mit THPDFRapidOCRDLLOptions.ForLanguage(language), Default ist ch; Sprachprofile wählen Erkennungsmodell, Dictionary und Leserichtung, und explizite Optionen können diese Auswahlen überschreiben
Modelldateinamen lösen sich unter modelDirectory gemäß den nativen Adaptern auf; die Bitness der Bibliothek muss zum Host-Prozess passen, während eine CLI-Engine als eigener lokaler Prozess läuft
Stellen Sie diese Ressourcen explizit bereit und wählen Sie sie aus; die Operation installiert keine Engines, lädt keine Modelle herunter, sucht keine beliebigen ausführbaren Dateien und nutzt keinen entfernten OCR-Dienst
Budgets und Abbruch
timeoutMilliseconds hat den Default 60000 und akzeptiert ganze Zahlen von 1 bis 3600000; der effektive Adapter-Timeout wird durch budget.timeMilliseconds begrenzt
maxPixels hat den Default 16777216 und akzeptiert ganze Zahlen von 1 bis 67108864; die effektive Obergrenze ist das Minimum aus angefordertem Wert, budget.pixels und budget.memoryBytes / 16
Die effektive Engine-Pixelgrenze begrenzt auch das OCR-Seitenrendering vor der Erkennung; Wort-, Content- und UTF-16-Textbudgets werden durch die Speicherzuteilung der Operation begrenzt
Diese Limits begrenzen konfigurierte Puffer und die Ressourcen der Operation; die Modell-Allokation einer externen DLL stellt kein strenges Prozess-RSS-Kontingent dar
Native Aufrufe leihen sich Document.OperationCancellationToken für Rendering und Erkennung; der Abbruch über C-Callbacks wird an den kooperativen Operations-, Eingabe- und Ausgabe-Checkpoints abgefragt, und eine laufende externe Engine kann bis zu ihrem Timeout oder dem nächsten Callback-Checkpoint weiterlaufen
Lokale CLI-Fehler, ungültige oder unvollständige TSV-Ausgabe und Adapter-Timeouts weisen die Operation zurück; konfigurierte Operationszeit- und Pixel-Limits behalten die strukturierte Budget-Fehlerkategorie
Ausgabe- und Transaktionsverhalten
Das Ergebnis meldet engine, recognizedPages, skippedPages, acceptedWords und droppedWords; das engine-Feld enthält den beschreibenden Namen des nativen Adapters
minimumConfidence muss eine Zahl von 0 bis 1 sein, und skipPagesWithText und replaceExisting müssen JSON-Booleans sein
Akzeptierte Unicode-Wörter werden zu unsichtbarem Text mit ToUnicode-Mappings und Quellseiten-Geometrie; das Scanbild bleibt in der Ausgabe, und die Quelldatei bleibt unverändert, es sei denn, der Aufrufer veröffentlicht absichtlich in denselben Dateipfad
Dateijobs bewahren ein vorhandenes Ziel bei Fehlern und veröffentlichen über eine Staging-Datei im selben Verzeichnis; C-ABI-Mutationen committen erst, wenn sowohl PDF-Bytes als auch die JSON-Ergebnisübergabe erfolgreich sind, mit Rollback bei Fehlern und Entsorgung bereits übergebener Bytes durch den Aufrufer
Abnahme
Tests/Delphi/Run-JobOCRTests.ps1 prüft auf Win32 und Win64 vier Adapter-Dispatch-Profile, fehlerhafte Konfiguration, Pixel- und Laufzeitbudgets, Teilwort-Zurückweisung, Prozessfehler, Timeout sowie die Bewahrung von Ziel und Quelle
Mit echten Tesseract-Executable- und Modellpfaden läuft eine Live-Erkennung; unabhängige pypdf- und MuPDF-Reader prüfen durchsuchbaren Unicode-Text und unveränderte sichtbare Scanpixel, während die optionale echte Win64-ABI-DLL-Prüfung partielle Callbacks und den Rollback fehlgeschlagener Operationen verifiziert
Siehe Dokumentoperationen, Tesseract-Adapter, lokale RapidOCR-Modelle, native RapidOCR-Bibliotheken und durchsuchbare OCR-Textebenen