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 測試案例已通過驗證;兩種編譯器也在 Win64 驗證實際 Tesseract 5.5 辨識、可搜尋文字層儲存/重新開啟,以及繪製結果維持不變

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;