توفر 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;