PDFium Delphi Component Docs

可选的 Tesseract OCR 提供器

CreatePdfTesseractOcrProvider 为 ApplyOcrSearchLayer 提供 IPdfOcrProvider;Tesseract 和 traineddata 是可选的外部依赖

明确指定库绝对路径、tessdata 目录和所需语言标识,例如 eng;DLL 架构必须匹配进程

TryCreatePdfTesseractOcrProvider 在 ErrorMessage 中返回依赖失败原因,Provider 保持 nil,不修改进程搜索路径

每次识别独立拥有原生 API 实例,将 BGRA alpha 合成到白色背景,解码 UTF-8 文本,并返回以图像左上角为原点的单词四边形,置信度归一化到 0–1

Default 选择页面分割模式 3 和引擎模式 3,时限为 60,000 ms,预算为 16,777,216 像素、100,000 个单词和 1,048,576 个文本字符

识别过程监控取消和时限;模型初始化没有原生取消 Callback,因此初始化前后会立即检查预算

失败调用丢弃部分输出,取消操作保留 EPdfOperationCancelled;API 不会悄悄添加不完整的可搜索文本

已验证 Delphi 和 FPC Win32/Win64 ABI 测试;实际 Tesseract 5.5 识别、可搜索层保存/重新打开及渲染不变性,已在两种编译器的 Win64 目标上验证

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;