CreatePdfTesseractOcrProvider proporciona un IPdfOcrProvider para ApplyOcrSearchLayer; Tesseract y traineddata son dependencias externas opcionales
Use una ruta absoluta explícita a la biblioteca, un directorio tessdata y los identificadores de idioma solicitados, como eng; la arquitectura de la DLL debe coincidir con la del proceso
TryCreatePdfTesseractOcrProvider devuelve los errores de dependencias en ErrorMessage y deja Provider en nil, sin modificar la ruta de búsqueda del proceso
Cada llamada de reconocimiento administra una instancia independiente de la API nativa, compone el alfa BGRA sobre blanco, decodifica texto UTF-8 y devuelve cuadriláteros de palabras en coordenadas de imagen con origen arriba a la izquierda, con confianza normalizada a 0–1
Default selecciona modo de segmentación de página 3 y modo de motor 3, plazo de 60,000 ms, 16,777,216 píxeles, 100,000 palabras y 1,048,576 caracteres de texto
El reconocimiento monitorea la cancelación y el plazo; la inicialización del modelo no tiene callback nativo de cancelación, por lo que el límite se comprueba inmediatamente antes y después de inicializar
Las llamadas que fallan descartan la salida parcial y la cancelación conserva EPdfOperationCancelled; la API no agrega silenciosamente texto incompleto a la capa de búsqueda
Se verifican los casos de ABI de Delphi y FPC en Win32/Win64; el reconocimiento real con Tesseract 5.5, el guardado y la reapertura de la capa de búsqueda y la ausencia de cambios en el renderizado se verifican en Win64 con ambos compiladores
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;