CreatePdfTesseractOcrProvider fournit un IPdfOcrProvider à ApplyOcrSearchLayer ; Tesseract et traineddata sont des dépendances externes facultatives
Indiquez explicitement le chemin absolu de la bibliothèque, le répertoire tessdata et les identifiants de langue demandés, par exemple eng ; l’architecture de la DLL doit correspondre à celle du processus
TryCreatePdfTesseractOcrProvider renvoie les erreurs de dépendance dans ErrorMessage et laisse Provider à nil, sans modifier le chemin de recherche du processus
Chaque reconnaissance possède sa propre instance de l’API native, compose l’alpha BGRA sur fond blanc, décode le texte UTF-8 et renvoie les quadrilatères des mots dans les coordonnées de l’image depuis son coin supérieur gauche, avec une confiance normalisée sur 0–1
Default sélectionne le mode de segmentation 3 et le mode de moteur 3, un délai de 60,000 ms, 16,777,216 pixels, 100,000 mots et 1,048,576 caractères de texte
La reconnaissance surveille l’annulation et le délai ; l’initialisation du modèle n’a pas de callback natif d’annulation, le budget est donc vérifié juste avant et juste après cette étape
Un échec élimine les résultats partiels et une annulation conserve EPdfOperationCancelled ; l’API n’ajoute pas silencieusement une couche de texte recherchable incomplète
Les tests ABI Delphi et FPC Win32/Win64 sont vérifiés ; la reconnaissance réelle avec Tesseract 5.5, l’enregistrement et la réouverture de la couche recherchable ainsi que le rendu inchangé sont vérifiés sur Win64 avec les deux compilateurs
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;