Passer au contenu principal

Licences et distribution

ABBYY FineReader Engine 12 fournit un utilitaire d’installation spécial pour la distribution. Cet utilitaire vous permet d’installer automatiquement la bibliothèque ABBYY FineReader Engine sur un poste de travail depuis la ligne de commande. Vous pouvez également installer la bibliothèque manuellement en copiant les fichiers nécessaires. Voir Distribution des applications qui utilisent la bibliothèque ABBYY FineReader Engine.
Toutes les licences d’un même projet partagent le même Customer Project ID, requis par les fonctions qui initialisent la bibliothèque. La licence Runtime de l’utilisateur final et la Developer License du développeur doivent correspondre au Customer Project ID transmis à ces fonctions.Voir aussi Distribution des applications qui utilisent la bibliothèque ABBYY FineReader Engine.
Vous devez activer une licence Runtime sur le poste de travail. Voir Activation de la bibliothèque ABBYY FineReader Engine avec la licence Runtime.
  • Les fichiers nécessaires au fonctionnement des modules pris en charge par votre application.
  • Les fichiers marqués comme “mandatory” dans le tableau de la section ABBYY FineReader Engine Distribution Kit. Il s’agit des modules système et des principales bases de données de reconnaissance.
  • Les bases de données de reconnaissance pour le texte manuscrit ou en lettres moulées, si nécessaire.
  • Les fichiers de ressources pour les langues d’interface utilisées dans votre application.
  • Les fichiers de prise en charge des dictionnaires pour les langues de reconnaissance prises en charge par votre application. Si ces langues incluent des langues utilisant l’alphabet latin, veillez à copier les fichiers Univers.amd et Univers.amm.
  • Les modules de numérisation Windows, les ressources spécifiques à la numérisation et les modules Twain si votre application effectue la numérisation via l’interface ABBYY FineReader Engine.
  • Les modules Windows Visual Components et les ressources spécifiques correspondantes, si votre application utilise les Visual Components d’ABBYY FineReader Engine. Enregistrez VisualComponents_dll à l’aide de regsvr32.exe.
Vous pouvez également utiliser le fichier FREngineDistribution.csv pour créer automatiquement la liste des fichiers requis pour le fonctionnement de votre application.Voir
Non, ce n’est pas nécessaire, et c’est même une bonne manière de limiter l’accès complet pour le groupe ‘Everyone’ afin d’empêcher toute modification par un utilisateur non autorisé. Des autorisations en lecture seules suffisent pour le groupe ‘Everyone’.
Des autorisations de contrôle total sont requises pour les dossiers suivants :
  • le dossier %TEMP%
  • le dossier %ProgramData%\ABBYY\SDK\12\FineReader Engine
  • le dossier %ProgramData%\ABBYY\SDK\12\Licenses (requis pour le serveur de licences, facultatif pour les postes de travail)
Tous les utilisateurs exécutant votre application doivent disposer des autorisations de lecture et d’exécution ainsi que d’écriture sur :
  • le dossier %ProgramData%\ABBYY.
Les branches de registre suivantes doivent être accessibles depuis le poste de travail :
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12\FineReader Engine” — contrôle total
  • “HKEY_CURRENT_USER\Software\ABBYY\SDK\12” — contrôle total pour l’installation uniquement
  • “HKEY_LOCAL_MACHINE\Software\ABBYY\SDK\12” — contrôle total pour l’installation uniquement
Voir Installation de la bibliothèque ABBYY FineReader Engine.
Assurez-vous que la licence Runtime correspond au Customer Project ID avec lequel l’application a été compilée. Si la licence ne correspond pas au Customer Project ID, l’application ne fonctionnera pas.Le Customer Project ID est transmis aux méthodes qui chargent FineReader Engine comme l’un des paramètres d’entrée. Vérifiez que le Customer Project ID utilisé par ces méthodes est correct.Voir aussi Licences, Distribution des applications utilisant la bibliothèque ABBYY FineReader Engine.
Veuillez vérifier les autorisations accordées au dossier %ProgramData%\ABBYY\SDK\12\Licenses à l’aide de la ligne de commande suivante :
ls -l /var/lib/ABBYY/SDK/12 | grep Licenses
chmod 777 /var/lib/ABBYY/SDK/12/Licenses
Si la ligne de commande renvoie une valeur différente de drwxrwxrwx, le dossier %ProgramData%\ABBYY\SDK\12\Licenses ne dispose pas de toutes les autorisations nécessaires.Pour accorder les droits d’accès complets au dossier %ProgramData%\ABBYY\SDK\12\Licenses, exécutez la ligne de commande suivante :
Pour pouvoir utiliser des méthodes de traitement telles que IFRDocument::Process, vous avez besoin d’une licence qui inclut le module Traitement. Si votre licence ne le prend pas en charge, vous pouvez uniquement reconnaître les codes-barres ; utilisez la méthode IFRPage::ExtractBarcodes.
Pour pouvoir utiliser des méthodes de traitement telles que IFRDocument::Process, vous avez besoin d’une licence qui inclut le module Traitement. Si votre licence ne le prend pas en charge, vous pouvez tout de même reconnaître des codes-barres et/ou des coches à l’aide d’autres méthodes :
Pour exécuter ABBYY FineReader Engine dans un conteneur Docker, utilisez deux conteneurs distincts, l’un avec ABBYY FineReader Engine et l’autre avec le service de gestion des licences.Consultez les instructions pour ce scénario dans Exécution d’ABBYY FineReader Engine 12 dans un conteneur Docker.
Vous pouvez exécuter votre application basée sur ABBYY FineReader Engine dans Azure Cloud Service ou Azure App Service. Suivez les instructions fournies dans Exécution d’ABBYY FineReader Engine dans Azure Services.
Questions relatives aux images
Utilisez les méthodes de l’objet ImageDocument qui améliorent la qualité de l’image. Ces méthodes vous permettent de sélectionner la région de l’image sur laquelle travailler.
ABBYY FineReader Engine offre plusieurs moyens de corriger la résolution de l’image :
  1. Une fois l’image ouverte, à l’aide de la méthode ChangeResolution de l’objet ImageDocument.
    Vous pouvez utiliser la méthode DetectResolution de l’objet FRPage pour déterminer la valeur de résolution optimale.
  2. Pendant l’étape de prétraitement de l’image (qui, par défaut, est incluse dans l’appel à toutes les méthodes qui effectuent un traitement complet de l’image), gérée par la propriété OverwriteResolutionMode de l’objet PagePreprocessingParams. La résolution peut être corrigée automatiquement ou définie sur la valeur spécifiée dans la propriété ResolutionToOverwrite.
Pour les images obtenues par capture de l’écran d’un ordinateur, nous recommandons d’utiliser des paramètres conçus pour l’extraction de texte. Appelez la méthode LoadPredefinedProfile de l’objet Engine pour charger l’un des profils prédéfinis :
  • TextExtraction_Accuracy — pour extraire du texte de documents, optimisé pour la précision
  • TextExtraction_Speed — pour extraire du texte de documents, optimisé pour la vitesse
La résolution de l’image issue de la capture d’écran doit être définie sur 72 ou 96 dpi (selon la résolution de l’écran).
Ces recommandations concernent les images numériques créées à l’aide du système d’exploitation ou d’un logiciel exécuté sur l’ordinateur. La résolution d’une photo de l’écran prise avec un autre appareil (par exemple, un appareil photo) doit être comprise entre 200 et 300 dpi.
Voir aussi Working with Profiles.

Utilisation de l’objet Engine

Si vous utilisez la fonction InitializeEngine pour l’initialisation, veillez à spécifier [STAThread] (modèle d’appartement à thread unique) comme attribut de la fonction principale de votre application :
[STAThread]
public static void Main()
{
  ...
}
Certains objets ABBYY FineReader Engine (par exemple, ILayout::Blocks) possèdent des propriétés d’objet en lecture seule. Cela ne signifie pas que ces propriétés ne peuvent pas être modifiées, mais seulement qu’elles ne peuvent pas l’être directement. En C++ (C++ brut sous Linux), si vous souhaitez modifier une telle propriété, vous devez affecter une référence à l’objet propriété à une nouvelle variable, puis utiliser cette variable pour la modifier. Vous trouverez ci-dessous un exemple C++ pour la propriété ILayout::Blocks, représentée par une collection en lecture seule :
ILayout* pLayout = 0;
ILayoutBlocks* pLayoutBlocks = 0;
int blockIndex = 0;
// Récupérer le layout à partir de la FRPage ouverte précédemment
pFRPage->get_Layout( &pLayout );
// La variable pLayoutBlocks reçoit une référence à la collection de blocs de Layout
pLayout->get_Blocks( &pLayoutBlocks );
// Supprimer un élément de la collection de blocs
pLayoutBlocks->DeleteAt( blockIndex );
// Utiliser le layout modifié
...
// Libérer les objets
pLayoutBlocks->Release();
pLayout->Release();
Oui, c’est possible. Vous devez utiliser l’objet InprocLoader ou OutprocLoader lors de la création de l’objet Engine. Voir Different Ways to Load the Engine Object pour plus de détails.Si vous utilisez la fonction InitializeEngine pour le chargement, il est impossible d’utiliser l’objet Engine dans plusieurs threads. Dans ce cas, les méthodes de tous les objets FineReader Engine doivent être appelées uniquement depuis le thread dans lequel l’objet Engine a été créé.
Oui, c’est possible. Voir Different Ways to Load the Engine Object pour plus de détails.
Cette exception est levée si tous les objets créés et utilisés par l’application n’ont pas été supprimés avant la désinitialisation de l’objet Engine. Si tous les objets ont bien été supprimés, l’exception peut être due au fonctionnement du garbage collector.
Si l’application est développée sous Windows avec Visual Basic .NET : tous les objets dont la valeur est Nothing ne sont pas supprimés, ils sont seulement marqués pour suppression. Le moment exact où le garbage collector supprime l’objet n’est pas connu. Vous devez donc appeler les méthodes suivantes avant de désinitialiser l’objet Engine afin que le garbage collector supprime l’objet :
    GC.Collect()
    GC.WaitForPendingFinalizers()
Si vous utilisez le journal (il peut être activé avec la méthode StartLogging de l’objet Engine), le message « Warning: DeinitializeEngine() has detected external references to FREngine objects. It can indicate a leak if programming platform without automatic garbage collection is used. » peut également apparaître dans cette situation. Même si vous appelez explicitement le garbage collector (GC.Collect), cela ne signifie pas toujours que les objets sont supprimés immédiatement. Dans les environnements avec garbage collector, vous pouvez ignorer ce message.Dans les environnements sans garbage collection (comme C++), cette exception et ce message peuvent indiquer un problème dans votre code source. Certains objets peuvent être gérés incorrectement, ce qui provoque une fuite de mémoire. Toutefois, après la désinitialisation de l’objet Engine, tous les objets FineReader Engine seront supprimés dans tous les cas. La fuite de mémoire peut donc se produire dans la partie cliente du code, c’est-à-dire si vous créez vos propres wrappers pour les objets FineReader Engine et ne les libérez pas avant la désinitialisation.Vous pouvez utiliser la propriété TotalObjectsCount de l’objet Engine, qui renvoie le nombre d’objets non libérés et peut vous aider à localiser la fuite de mémoire.
Pour cela, vous devez appeler la méthode StartLogging de l’objet Engine. En paramètres d’entrée, indiquez le nom du fichier journal ainsi que la variable booléenne qui détermine si les messages d’appel de méthode doivent être consignés ou non. Une fois cette méthode appelée, tous les messages seront consignés. Pour arrêter la journalisation, appelez la méthode StopLogging de l’objet Engine.
Normalement, vous n’avez pas besoin d’enregistrer FREngine.dll. La bibliothèque est enregistrée automatiquement lors de l’installation Developer ou de l’installation Runtime avec les paramètres par défaut.Toutefois, si pour une raison quelconque vous devez enregistrer FREngine.dll après l’installation (si, pendant l’installation Runtime, vous avez spécifié RegisterCOM=No), utilisez la ligne de commande suivante :
regsvr32 /s /n /i:"<path to the Inc folder>" "<path to FREngine.dll>"
L’anglais est la langue de reconnaissance utilisée par défaut. Si vous souhaitez modifier cette langue par défaut, vous devez utiliser la méthode SetPredefinedTextLanguage de l’objet RecognizerParams.
Si un bloc contient du texte de différents types, ABBYY FineReader Engine le traitera malgré tout comme du texte d’un seul type. Pour améliorer la qualité de l’OCR, tracez un bloc distinct pour chaque type de texte.Voir aussi Using Text Type Autodetection.
Après avoir reconnu le document cible, vous pouvez l’exporter au format XML. Le schéma XML utilisé dans ABBYY FineReader Engine vous permet d’obtenir toutes les informations nécessaires sur le texte traité, sa structure, ses attributs et ses variantes de reconnaissance.
Si la propriété TextTypes de l’objet RecognizerParams contient une combinaison de TT_Matrix, TT_Typewriter, TT_OCR_A et TT_OCR_B, les polices en italique et les exposants/indices ne seront pas reconnus, quelles que soient les valeurs des propriétés ProhibitItalic, ProhibitSubscript et ProhibitSuperscript de l’objet RecognizerParams.Voir aussi Using Text Type Autodetection.
Pour déterminer si un caractère a été reconnu de manière peu fiable et doit être vérifié, utilisez la propriété IsSuspicious des objets PlainText ou CharParams pour le caractère concerné. Elle est calculée à partir de ErrorProbability.Pour établir des distinctions plus fines, vous pouvez utiliser la propriété ErrorProbability des objets PlainText ou CharParams, qui renvoie la probabilité estimée (sur une échelle de 0 à 100) que le caractère ait été reconnu de façon incorrecte. Elle tient compte du contexte dans lequel le caractère apparaît, par exemple du fait que le mot contenant ce caractère figure ou non dans le dictionnaire.Vous pouvez également obtenir le niveau de confiance du caractère, à la fois pour un caractère reconnu (la propriété CharConfidence de l’objet PlainText) et pour toutes les variantes de reconnaissance (la propriété CharConfidence de l’objet CharacterRecognitionVariant). Le niveau de confiance fournit une estimation de précision fondée uniquement sur l’image d’un caractère, sans tenir compte du contexte. Les estimations de confiance de différents caractères ne sont pas comparables, et le seul usage fiable du niveau de confiance consiste à comparer plusieurs variantes de reconnaissance de la même image (caractère).Aucune de ces propriétés n’a de sens pour les symboles obtenus sans reconnaissance, par exemple ceux extraits directement du fichier PDF source.
Assurez-vous que les propriétés SaveCharacterRecognitionVariants ou SaveWordRecognitionVariants de l’objet RecognizerParams sont définies sur TRUE. Ces propriétés indiquent si les variantes de reconnaissance des caractères ou des mots doivent être enregistrées. Voir aussi Utilisation de l’API Voting.
Si votre système d’exploitation est macOS 10.15 Catalina ou version ultérieure, procédez comme suit (dans ces instructions, nous utilisons l’application Font Book) :
  1. Recherchez le dossier contenant les polices (cliquez avec le bouton droit sur la police souhaitée, puis sélectionnez Show in Finder).
  2. Installez les polices locales à partir du dossier trouvé :
  • Ouvrez les paramètres de l’application (Preferences).
  • Définissez la propriété Default install location sur Computer.
  • Cliquez sur le bouton ’+’ dans la barre d’outils (ou utilisez File - Add fonts).
  • Sélectionnez le dossier de l’étape 1.
  • Cliquez sur le bouton ‘Open’. Notez que, pendant l’installation des polices, vous devrez saisir le mot de passe de l’utilisateur.
Vous pouvez également copier les polices du dossier de l’étape 1 dans le dossier /Library/Fonts.Si vous ne prévoyez pas d’installer les polices, mais souhaitez les utiliser dans ABBYY FineReader Engine, définissez la propriété Folder de l’objet CustomFontSet.
Il existe deux fichiers journaux de numérisation : scantwain.txt et scanwia.txt. Ils sont stockés dans le dossier %userprofile%\AppData\Local\ABBYY\ScanManager\12.00.
La numérisation est actuellement disponible uniquement sous Windows.
Vous pouvez utiliser la propriété ScanSettings de l’objet ScanSource pour accéder à l’objet ScanSourceSettings. Cet objet donne accès aux paramètres de numérisation d’une source.Voir les détails dans la description du scénario Numérisation.
La numérisation est actuellement disponible uniquement sous Windows.
Les versions de PDF prises en charge pour l’exportation sont répertoriées dans PDFVersionEnum.Notez que la version ne doit pas être en conflit avec les paramètres d’exportation spécifiés. La version du fichier PDF à sélectionner doit être la plus ancienne compatible avec les paramètres d’exportation spécifiés :
  • La version de fichier la plus ancienne disponible est 1.3.
  • La version du fichier PDF doit être 1.4 si :
    • la propriété PDFAComplianceMode de l’objet PDFExportParams est définie sur PCM_Pdfa_1a ou PCM_Pdfa_1b
  • La version du fichier PDF doit être 1.4 ou supérieure si :
  • La version doit être 1.5 ou supérieure si :
    • la propriété ColorPictureFormats de PDFPictureCompressionParams est définie sur CPF_J2K, ou
    • la propriété GrayPictureFormats de PDFPictureCompressionParams est définie sur GPF_J2K.
  • La version doit être 1.6 ou supérieure si :
    • la propriété EncryptionAlgorithm de l’objet PDFEncryptionInfo est définie sur PDFEA_AES128, ou
    • des polices OpenType sont utilisées dans le fichier PDF de sortie.
  • La version doit être 1.7 ou supérieure si :
    • la propriété EncryptionAlgorithm de l’objet PDFEncryptionInfo est définie sur PDFEA_AES256.
  • La version de fichier la plus récente disponible est 2.0.
Voir aussi PDFExportFeatures.
Selon l’usage que vous souhaitez faire des polices, vous devez les enregistrer dans le système d’exploitation ou les ajouter à votre application avant de la lancer, en utilisant l’une des méthodes suivantes :
  • copiez manuellement les polices dans le dossier Data/Resources/Font de votre application basée sur ABBYY FineReader Engine.
  • copiez manuellement les polices dans le dossier système /usr/share/fonts.
  • installez le paquet de polices approprié en fonction de votre système d’exploitation.
Consultez Working with Fonts pour plus de détails.
Si vous ne trouvez pas la réponse à votre question, veuillez contacter le support technique ABBYY.