PDFium Delphi Component Docs

선택적으로 사용하는 Tesseract OCR 프로바이더

CreatePdfTesseractOcrProvider는 ApplyOcrSearchLayer용 IPdfOcrProvider를 제공합니다. Tesseract와 traineddata는 선택적 외부 의존성입니다

라이브러리 절대 경로, tessdata 디렉터리, eng 같은 요청 언어 식별자를 지정하세요. DLL 아키텍처는 프로세스와 맞아야 합니다

TryCreatePdfTesseractOcrProvider는 의존성 실패를 ErrorMessage로 반환하고 Provider를 nil로 둡니다. 프로세스 검색 경로는 변경하지 않습니다

인식 호출마다 별도의 네이티브 API 인스턴스를 소유하고 BGRA alpha를 흰색 위에 합성하며 UTF-8 텍스트를 디코딩합니다. 단어 사각형은 이미지 왼쪽 위 원점으로 반환하고 confidence는 0–1로 정규화합니다

Default는 페이지 분할 모드 3, 엔진 모드 3, 제한 시간 60,000 ms, 16,777,216픽셀, 100,000단어, 텍스트 1,048,576문자를 선택합니다

인식 중 취소와 제한 시간을 감시합니다. 모델 초기화에는 네이티브 취소 Callback이 없으므로 초기화 직전과 직후에 상한을 검사합니다

호출 실패 시 부분 결과를 버리고 취소는 EPdfOperationCancelled를 유지합니다. 불완전한 검색 텍스트를 조용히 추가하지 않습니다

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;