PDFium Delphi Component Docs

موفر OCR اختياري لـ Tesseract

توفر CreatePdfTesseractOcrProvider واجهة IPdfOcrProvider لـ ApplyOcrSearchLayer؛ Tesseract و traineddata تبعيات خارجية اختيارية

استخدم مسار مكتبة مطلقًا وصريحًا ومجلد tessdata ومعرفات اللغات المطلوبة مثل eng؛ يجب أن تطابق معمارية DLL العملية

تعيد TryCreatePdfTesseractOcrProvider أخطاء التبعيات في ErrorMessage وتترك Provider nil دون تعديل مسار البحث

يمتلك كل استدعاء نسخة API أصلية مستقلة، ويركب alpha الخاص بـ BGRA على الأبيض، ويفك نص UTF-8، ويعيد رباعيات الكلمات بإحداثيات تبدأ من أعلى يسار الصورة وثقة مطبعة إلى 0–1

يختار Default نمط تقسيم الصفحات 3 ونمط المحرك 3 ومهلة 60,000 ms و 16,777,216 بكسل و 100,000 كلمة و 1,048,576 محرف نص

تراقب العملية الإلغاء والمهلة؛ لا تحتوي تهيئة النموذج على Callback أصلي للإلغاء، لذلك تُفحص الميزانية قبل التهيئة وبعدها مباشرة

يتخلص الفشل من المخرجات الجزئية، ويحتفظ الإلغاء بـ EPdfOperationCancelled؛ لا تضيف API نصًا قابلًا للبحث غير مكتمل بصمت

تم التحقق من اختبارات ABI لـ Delphi و FPC على Win32/Win64؛ كما تم التحقق على 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;