CreatePdfTesseractOcrProvider disponibiliza um IPdfOcrProvider para o ApplyOcrSearchLayer; o Tesseract e o traineddata são dependências externas opcionais
Use um caminho absoluto explícito de biblioteca, um diretório tessdata e os identificadores de idioma pedidos, como eng; a arquitetura da DLL tem de corresponder à do processo
TryCreatePdfTesseractOcrProvider comunica falhas de dependência em ErrorMessage e deixa Provider a nil sem alterar o search path do processo
Cada chamada de reconhecimento possui uma instância separada da API nativa, compõe o alfa BGRA sobre branco, descodifica texto UTF-8 e devolve quadriláteros de palavras em coordenadas de imagem com origem no canto superior esquerdo, com confiança normalizada para 0–1
Default seleciona o modo de segmentação de página 3 e o modo de engine 3, um prazo de 60,000 ms, 16,777,216 píxeis, 100,000 palavras e 1,048,576 caracteres de texto
O reconhecimento monitoriza o cancelamento e o prazo; a inicialização do modelo não tem callback nativo de cancelamento, pelo que o orçamento é verificado imediatamente antes e depois da inicialização
Chamadas com falha descartam a saída parcial e o cancelamento preserva EPdfOperationCancelled; a API nunca acrescenta silenciosamente texto pesquisável incompleto
Fixações de ABI Win32/Win64 para Delphi e FPC são verificadas; o reconhecimento real com Tesseract 5.5, guardar/reabrir a camada pesquisável e a renderização inalterada são verificados no Win64 em ambos os 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;