PDFium Delphi Component Docs

Опциональный провайдер Tesseract OCR

CreatePdfTesseractOcrProvider предоставляет IPdfOcrProvider для ApplyOcrSearchLayer; Tesseract и traineddata — опциональные внешние зависимости

Укажите явный абсолютный путь к библиотеке, каталог tessdata и запрошенные идентификаторы языков, например eng; архитектура DLL должна совпадать с процессом

TryCreatePdfTesseractOcrProvider возвращает сбои зависимостей в ErrorMessage и оставляет Provider равным nil, не меняя путь поиска процесса

Каждый вызов распознавания владеет отдельным экземпляром нативного API, накладывает альфу BGRA на белый фон, декодирует текст UTF-8 и возвращает четырёхугольники слов в координатах изображения от левого верхнего угла с достоверностью, нормированной к 0–1

Default выбирает режим сегментации страницы 3 и режим движка 3, предельный срок 60 000 мс, 16 777 216 пикселей, 100 000 слов и 1 048 576 текстовых символов

Распознавание следит за отменой и предельным сроком; у инициализации модели нет нативного callback-а отмены, поэтому бюджет проверяется непосредственно до и после инициализации

Неудачные вызовы отбрасывают частичный вывод, а отмена сохраняет EPdfOperationCancelled; API не добавляет молча неполный поисковый текст

Тестовые приспособления ABI для Delphi и FPC Win32/Win64 проверены; реальное распознавание 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;