Test de ABBYY FineReader Engine 12 Linux

Anomaly

Cet article présente le test de ABBYY FineReader Engine 12 (ici, en version Linux), un SDK afin de pouvoir intégrer un moteur OCR à l'intérieur de vos propres applications.

Commentez

- Titre : Test de ABBYY FineReader Engine 12 Linux

- Auteur : Anomaly

- Parution : 29 octobre 2020

- Mise à jour : 6 novembre 2020

- Licence : Copyright ® 2020 Anomaly. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Qu'est-ce que ABBYY FineReader Engine ?

- II. Caractéristiques de ABBYY FineReader Engine

- II-A. Système d'exploitation

- II-B. Langages de programmation compatibles

- II-C. Cas d'utilisation les plus courants

- II-D. Spécifications principales

- III. Test de ABBYY FineReader Engine 12 pour Linux

- III-A. Téléchargement

- III-B. Installation sous Linux

- III-C. Le premier programme

- III-D. Les fonctions principales

- III-D-1. InitializeEngine

- III-D-2. IEngine::CreateFRDocumentFromImage

- III-D-3. IFRDocument::Process

- III-D-4. IFRDocument::Export

- IV. Conclusion

I - Qu'est-ce que ABBYY FineReader Engine ?

ABBYY FineReader Engine est un composant logiciel qui vous permet d'intégrer dans votre propre application des fonctionnalités de capture de données.

Par exemple, votre application pourra partir d'une image, une photo prise avec un téléphone, et récupérer le texte comme une chaîne de caractères. La mise en forme peut également être récupérée afin de recréer un document de type Word ou LibreOffice fidèle à l'image, mais dont le texte est éditable.

Une autre possibilité est de récupérer seulement l'information qui vous intéresse dans certains champs remplissables, afin d'obtenir directement la donnée variable intéressante depuis un formulaire papier.

Comme vous pouvez l'imaginer, ce composant peut apporter une véritable valeur ajoutée à vos logiciels en fonction des besoins de vos clients. Il n'existe pas réellement de solutions alternatives, et développer par soi-même ce genre de fonctions serait un travail se comptant en années, ce qui n'est souvent pas envisageable.

II - Caractéristiques de ABBYY FineReader Engine

II-A - Système d'exploitation

ABBYY FineReader Engine est disponible pour Windows, Linux et Mac OS, ce qui permet de réaliser des logiciels exploitant le moteur ABBYY FineReader sous ces trois plates-formes, couvrant ainsi la quasi-totalité des ordinateurs de bureau et des serveurs.

II-B - Langages de programmation compatibles

La version Windows de ABBYY FineReader Engine utilise l'interface COM (habituelle sous Windows), ce qui la rend compatible avec une grande variété de langages de programmation, qu'ils soient natifs (comme C++) ou managés (comme Java ou C# avec .NET).

La version Linux de ABBYY FineReader Engine peut être utilisée en natif avec C++ et en managé avec Java.

II-C - Cas d'utilisation les plus courants

ABBYY FineReader Engine permet d'introduire des fonctionnalités majeures à vos applications. Voici les possibilités les plus courantes :

- conversion de documents : création d'un document au texte éditable à partir d'une image, avec conservation de mise en forme ;

- archivage de documents : création de documents non éditables à titre d'archivage à partir d'images, le but étant ici de permettre une recherche de texte sur les documents ainsi archivés ;

- archivage de livres : création d'une bibliothèque électronique à partir d'images de livres, magazines et journaux tout en permettant la recherche de texte ;

- extraction de texte : possibilité d'extraire le texte depuis des images afin de pouvoir effectuer des traitements dessus ;

- reconnaissance de champs : possibilité d'extraire des textes courts saisis dans des champs définis dans l'image d'un formulaire papier, en permettant ainsi de ne récupérer que l'information utile ;

- reconnaissance de codes-barres et QR Codes ;

- reconnaissance de cartes de visite ou professionnelles : extraction des informations personnelles importantes depuis l'image pour stockage dans une base de données ;

- capture d'une zone lisible par ordinateur : certains documents officiels contiennent des zones lisibles par machine, qui pourront être décodées ;

- traitement d'images : on peut également utiliser la bibliothèque afin de pouvoir effectuer des traitements sur les images dans un but de normalisation et faciliter le traitement OCR, comme éliminer la courbure des pages, redresser les images, éliminer les artefacts laissés par le scan, éliminer automatiquement les bordures, etc. ;

- classification de documents : possibilité de classer les documents par type via une comparaison par intelligence artificielle de leur apparence ou de leur contenu ;

- comparaison de documents : possibilité de comparer deux versions (original et copie) de documents importants (comme un contrat) afin d'en déterminer les différences, telles que les modifications de texte, la nature de la modification (suppression, ajout ou remplacement) et l'emplacement de ces modifications dans l'original et la copie et enregistrer le résultat de la comparaison pour des traitements futurs ou stockage.

II-D - Spécifications principales

ABBYY FineReader Engine reconnaît 208 langues, notamment les langues européennes, le russe, le grec, le chinois, le japonais, l'hébreu, et l'arabe.

Le logiciel peut travailler à partir d'images dans les formats les plus courants comme BMP, GIF, JPEG, et TIFF, mais également depuis les images intégrées dans des fichiers PDF, RTF, Word, Excel, LibreOffice, etc.

Le logiciel peut exporter dans de nombreux formats, dont les formats texte, HTML, Word, Excel, PowerPoint, LibreOffice, Epub, PDF, etc.

III - Test de ABBYY FineReader Engine 12 pour Linux

III-A - Téléchargement

Afin de pouvoir vous parler plus concrètement de ABBYY FineReader Engine, nous avons évalué la version 12 pour Linux.

Pour télécharger le logiciel, nous nous sommes rendu sur le site ABBYY, nous avons passé le site en français, et dans le menu « Produits & Solutions », dans la colonne « Outils Développeurs », choisi « FineReader Engine ».

Sur cette page, il suffit donc de cliquer sur « Version d'évaluation » et remplir le court formulaire, sans oublier de choisir le produit (version Windows, Linux et Mac OS). Nous avons choisi ici Linux, mais l'essentiel du tutoriel est valable pour n'importe quel système d'exploitation.

Vous recevrez alors un e-mail vous demandant de valider la licence de test, et dans la foulée vous recevrez dans un deuxième e-mail le lien de téléchargement et la clé produit.

III-B - Installation sous Linux

Pour la version Linux, on a droit à une version RPM (pour une distribution CentOS ou RedHat) ou une version SH (compatible toute distribution). Étant sous Ubuntu, nous avons donc choisi la version SH, que nous avons téléchargée, rendue exécutable et exécutée en root via sudo.

L'installateur, en mode textuel, va poser un certain nombre de questions. Bien que cela soit la plupart du temps suffisamment explicite pour pouvoir se débrouiller tout seul, les parties relatives à la licence peuvent être source de questions.

ABBYY FineReader Engine 12 Linux s'installe par défaut dans /opt/ABBYY/FREngine12/. Les dossiers présents sont :

- Bin : ce dossier contient les bibliothèques dynamiques, nécessaires pour l'exécution d'un programme lié avec ABBYY FineReader Engine ;

- CodeMeter : ce dossier contient le logiciel CodeMeter, utilisé pour valider la licence dans certains cas (licence Cloud notamment) ;

- CommonBin : ce dossier contient les bibliothèques dynamiques liées au système de licensing du logiciel. Le nom du dossier laisse supposer que cette partie est commune avec les autres produits ABBYY potentiellement installés ;

- Data : ce dossier contient toutes les données nécessaires pour que le moteur d'OCR puisse fonctionner, ce qui est essentiellement des données de nombreuses polices de caractères ;

- Help : ce dossier contient la documentation complète du produit, disponible à la fois en PDF et en HTML (en anglais), à la fois pour l'installation, l'utilisation et la référence de l'API ;

- Inc : ce dossier contient les fichiers d'en-têtes requis pour la compilation en C++ et Java ;

- Samples : ce dossier contient de nombreux exemples « prêt-à-compiler », aussi bien en C++ qu'en Java ;

- Scripts : ce dossier contient différents scripts de maintenance, en particulier de gestion de licence, installation en tant que service et désinstallation.

Notre avis : l'organisation des fichiers est logique, la documentation est particulièrement claire et accessible, c'est un plaisir à consulter et à lire, mais notre regret est qu'elle n'est disponible qu'en local, et seulement qu'une fois le logiciel installé. Une version disponible en ligne aurait été particulièrement intéressante pour mieux comprendre les options de licence au niveau de l'installation.

III-C - Le premier programme

Afin de pouvoir compiler notre premier programme, le plus petit possible, le « Hello World » version ABBYY FineReader Engine, il se trouve qu'il y en a, dans Samples/Hello. Ce dossier comporte un exemple en C++ avec plusieurs fichiers et un Makefile.

Un simple make suffit pour compiler le programme avec GCC en C++.

Pour l'exécution, il suffira de le lancer en ligne de commande en précisant le chemin des bibliothèques partagées :

LD_LIBRARY_PATH=/opt/ABBYY/FREngine12/Bin ./Hello

Le programme va lire le fichier Demo.tif (une image, à la qualité légèrement dégradée, comme le serait une vraie photo), effectuer une reconnaissance OCR dessus et sortir un fichier Demo.rtf, contenant le texte éditable, avec la conservation de la mise en forme, mais également l'illustration présente, en quelques secondes seulement.

Notre avis : le premier programme est très facilement compilable, mais notre regret est qu'il n'est pas suffisamment « simple », dans le sens qu'il est décomposé en plusieurs fichiers, de manière très propre il est vrai, mais nous aurions préféré un programme encore plus minimal pour faciliter la compréhension.

III-D - Les fonctions principales

Notre test ne serait pas complet sans présenter les fonctions principales de ce programme Hello, qui a permis d'effectuer l'appel au logiciel OCR.

III-D-1 - InitializeEngine

HRESULT __stdcall InitializeEngine(
BSTR CustomerProjectId,
BSTR LicensePath,
BSTR LicensePassword,
BSTR FREngineDataFolder,
BSTR FREngineTempFolder,
VARIANT_BOOL IsSharedCPUCoresMode,
IEngine **Engine);

Cette fonction permet d'initialiser ABBYY FineReader Engine. Elle prend en paramètre le numéro du projet (en quelque sorte, le numéro de série de la bibliothèque qui vous a été attribuée dans le cadre de votre licence), et d'autres paramètres liés à la licence (tous ne sont pas forcément utiles, cela dépend du type exact de licence utilisée). Elle retourne enfin, via le dernier paramètre, l'objet FREngine à utiliser pour utiliser le moteur ABBYY FineReader Engine.

Le type BSTR correspond à wchar_t*, un pointeur vers une chaîne Unicode. Notre regret ici est le fait qu'utiliser une chaîne constante comme L"customerid" ne sera pas permise, car le pointeur n'est pas constant, ce qui oblige à une certaine gymnastique au niveau des paramètres. Notons que le programme Hello utilise une classe qui gère élégamment cette difficulté.

III-D-2 - IEngine::CreateFRDocumentFromImage

HRESULT STDMETHODCALLTYPE IEngine::CreateFRDocumentFromImage(
BSTR ImageFileName,
IPrepareImageMode *PrepareMode,
IFRDocument **Result) = 0;

Cette fonction prend un fichier image en paramètre (de n'importe quel type supporté par le moteur) et prépare au futur traitement. Le dernier paramètre recevra une instante du document préparé, afin de pouvoir effectuer un traitement dessus par la suite.

III-D-3 - IFRDocument::Process

HRESULT STDMETHODCALLTYPE IFRDocument::Process(
IDocumentProcessingParams *DocumentProcessingParams = 0)

Cette fonction, généralement appelée sans paramètre, effectue la reconnaissance OCR proprement dite sur l'image chargée.

III-D-4 - IFRDocument::Export

HRESULT STDMETHODCALLTYPE IFRDocument::Export(
BSTR ExportFileName,
FileExportFormatEnum Format,
IUnknown *ExportParams = 0)

Cette fonction permet d'enregistrer le résultat de la reconnaissance OCR dans un fichier cible. Le deuxième paramètre indique le type de format souhaité : par exemple FEF_RTF commande la sortie au format RTF (format texte avec mise en forme et éventuelles illustrations intégrées).

IV - Conclusion

ABBYY FineReader Engine est un composant qui permet notamment de doter un logiciel écrit en C++ ou en Java de fonctionnalités d'OCR puissantes, que ce soit sous Windows, Linux ou Mac OS, directement en local ou via un traitement OCR déporté sur un serveur.

Nous n'avons montré ici que la fonctionnalité la plus élémentaire, mais ABBYY FineReader Engine regorge en réalité de nombreuses fonctionnalités permettant de couvrir énormément de cas liés à la capture de données depuis des images.

La documentation est particulièrement claire, et les possibilités pour la configuration de licence (en ligne, hors ligne, avec ou sans activation, sur le Cloud ou non) sont nombreuses et doivent pouvoir s'adapter à chaque situation.

Vous pouvez, vous aussi, demander votre version d'évaluation.