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

EngineErforderliche engineOptionsOptionale engineOptions
builtin-asciiKeineengineOptions muss fehlen oder ein leeres Objekt sein
tesseract-cliexecutablePath, tessDataDirectorylanguage, pageSegMode, engineMode, timeoutMilliseconds, maxPixels
tesseract-dlllibraryPath, tessDataDirectorylanguage, pageSegMode, engineMode, timeoutMilliseconds, maxPixels
rapidocr-clipythonExecutable, bridgeScript, modelDirectorydetectionModel, recognitionModel, classificationModel, characterDictionary, fontPath, useAngleClassifier, intraOpThreads, interOpThreads, timeoutMilliseconds, maxPixels
rapidocr-dlllibraryPath, modelDirectorylanguage, 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