PDFium Delphi Component Docs

Provedor opcional de OCR com Tesseract

CreatePdfTesseractOcrProvider fornece 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 solicitados, como eng; a arquitetura da DLL deve corresponder à do processo

TryCreatePdfTesseractOcrProvider retorna falhas de dependência em ErrorMessage e deixa Provider como 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, decodifica texto UTF-8 e retorna 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 pixels, 100,000 palavras e 1,048,576 caracteres de texto

O reconhecimento monitora o cancelamento e o prazo; a inicialização do modelo não tem callback nativo de cancelamento, então 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 adiciona 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, salvar/reabrir a camada pesquisável e a renderização inalterada são verificados no Win64 nos dois compiladores

ProviderOptions := TPdfTesseractOptions.Default;
Provider := CreatePdfTesseractOcrProvider(
  LibraryPath, TessdataDirectory, 'eng', ProviderOptions);
OcrOptions := TPdfOcrOptions.Default;
Pdf.ApplyOcrSearchLayer(Provider, OcrOptions, Report, CancellationToken);

Declarações públicas

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;