CreatePdfTesseractOcrProvider leverer en IPdfOcrProvider til ApplyOcrSearchLayer; Tesseract og traineddata er valgfrie eksterne afhængigheder
Brug en eksplicit absolut bibliotekssti, en tessdata-mappe og de ønskede sprogidentifiers, såsom eng; DLL-arkitekturen skal matche processen
TryCreatePdfTesseractOcrProvider returnerer afhængighedsfejl i ErrorMessage og lader Provider være nil uden at ændre processens søgesti
Hvert genkendelseskald ejer en separat native API-instans, kompositerer BGRA-alpha på hvidt, afkoder UTF-8-tekst og returnerer ord-firkanter i billedkoordinater med origo øverst til venstre og confidence normaliseret til 0–1
Default vælger page segmentation mode 3 og engine mode 3, en deadline på 60,000 ms, 16,777,216 pixels, 100,000 ord og 1,048,576 teksttegn
Genkendelse overvåger cancellation og deadline; modelinitialisering har intet native cancellation callback, så budgettet kontrolleres umiddelbart før og efter initialisering
Mislykkede kald kasserer delvist output, og cancellation bevarer EPdfOperationCancelled; API'et tilføjer ikke lydløst ufuldstændig søgbar tekst
Delphi- og FPC-ABI-fixtures for Win32/Win64 er verificeret; reel Tesseract 5.5-genkendelse, gemning/genåbning af søgelaget og uændret rendering er verificeret på Win64 med begge compilere
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;