CreatePdfTesseractOcrProvider liefert einen IPdfOcrProvider für ApplyOcrSearchLayer; Tesseract und traineddata sind optionale externe Abhängigkeiten
Verwenden Sie einen expliziten absoluten Bibliothekspfad, ein tessdata-Verzeichnis und die gewünschten Sprachkennungen, etwa eng; die DLL-Architektur muss zum Prozess passen
TryCreatePdfTesseractOcrProvider liefert Abhängigkeitsfehler in ErrorMessage und lässt Provider nil, ohne den Suchpfad des Prozesses zu ändern
Jeder Erkennungsaufruf besitzt eine eigene native API-Instanz, verrechnet BGRA-Alpha mit Weiß, decodiert UTF-8 und liefert Wortvierecke in Bildkoordinaten ab der oberen linken Ecke mit auf 0–1 normierter Konfidenz
Default wählt Seitensegmentierungsmodus 3 und Enginemodus 3, eine Frist von 60,000 ms, 16,777,216 Pixel, 100,000 Wörter und 1,048,576 Textzeichen
Die Erkennung überwacht Abbruch und Frist; die Modellinitialisierung hat keinen nativen Abbruch-Callback, deshalb wird das Budget unmittelbar davor und danach geprüft
Fehlgeschlagene Aufrufe verwerfen Teilergebnisse, Abbruch erhält EPdfOperationCancelled; die API ergänzt nicht stillschweigend unvollständigen durchsuchbaren Text
Delphi- und FPC-Win32/Win64-ABI-Tests sind geprüft; reale Tesseract-5.5-Erkennung, Speichern/Wiederöffnen der Suchtextebene und unverändertes Rendering sind unter Win64 mit beiden Compilern geprüft
ProviderOptions := TPdfTesseractOptions.Default; Provider := CreatePdfTesseractOcrProvider( LibraryPath, TessdataDirectory, 'eng', ProviderOptions); OcrOptions := TPdfOcrOptions.Default; Pdf.ApplyOcrSearchLayer(Provider, OcrOptions, Report, CancellationToken);
type
EPdfTesseractError = class(Exception);
TPdfTesseractOptions = record
// Tesseract PSM ordinals: 3 = automatic, 6 = block, 7 = single line
PageSegmentationMode: Integer;
// Tesseract OEM ordinals: 1 = LSTM, 3 = default
EngineMode: Integer;
TimeoutMilliseconds: Cardinal;
MaxPixels: Int64;
MaxWords: Integer;
MaxTextCharacters: Integer;
class function Default: TPdfTesseractOptions; static;
end;
// Each recognition call owns a separate API instance; providers can be shared
// Libraries and traineddata remain optional, explicitly configured dependencies
function CreatePdfTesseractOcrProvider(const LibraryPath, TessdataDirectory,
Languages: string; const Options: TPdfTesseractOptions): IPdfOcrProvider;
// Dependency errors are returned without changing the process search path
function TryCreatePdfTesseractOcrProvider(const LibraryPath, TessdataDirectory,
Languages: string; const Options: TPdfTesseractOptions;
out Provider: IPdfOcrProvider; out ErrorMessage: string): Boolean;