PDFium Component Docs

Opcjonalny dostawca OCR Tesseract

CreatePdfTesseractOcrProvider dostarcza IPdfOcrProvider dla ApplyOcrSearchLayer; Tesseract i traineddata to opcjonalne zewnętrzne zależności

Podaj jawną absolutną ścieżkę biblioteki, katalog tessdata i żądane identyfikatory języków, np. eng; architektura DLL musi odpowiadać procesowi

TryCreatePdfTesseractOcrProvider zwraca błędy zależności w ErrorMessage i zostawia Provider jako nil, nie zmieniając ścieżki wyszukiwania procesu

Każde wywołanie rozpoznawania posiada osobną instancję natywnego API, komponuje alfa BGRA na białym tle, dekoduje tekst UTF-8 i zwraca czworokąty słów we współrzędnych obrazu z lewym górnym rogiem, z pewnością znormalizowaną do 0–1

Default wybiera tryb segmentacji strony 3 i tryb silnika 3, deadline 60,000 ms, 16,777,216 pikseli, 100,000 słów i 1,048,576 znaków tekstu

Rozpoznawanie monitoruje anulowanie i deadline; inicjalizacja modelu nie ma natywnego wywołania zwrotnego anulowania, więc budżet jest sprawdzany bezpośrednio przed i po inicjalizacji

Nieudane wywołania odrzucają częściowe wyjście, a anulowanie zachowuje EPdfOperationCancelled; API nie dodaje po cichu niekompletnego tekstu przeszukiwalnego

Fixture'y ABI Delphi i FPC Win32/Win64 są zweryfikowane; rzeczywiste rozpoznawanie Tesseract 5.5, zapis/ponowne otwarcie warstwy przeszukiwalnej i niezmienione renderowanie są weryfikowane na Win64 w obu kompilatorach

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

Public declarations

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;