Tess4J est un wrapper JNA pour l’API de reconnaissance de caractères Tesseract.
Si celui-ci fonctionne comme prévu dans Eclipse ou un autre IDE, certains soucis apparaissent lorsqu’on essaye de l’utiliser dans un jar exécutable ou dans une application finale.
Voici comment y remédier.
- Dans un premier temps, exporter votre project sous forme de jar runnable. Dans Eclipse, cela se fait avec un clique-droit sur la racine du projet pour ensuite choisir export puis « Runnable Jar ». Pour l’inclusion de lib, laissez la première option cochée.
- Lorsqu’on tente de lancer une application en ligne de commande our hors IDE, Tess4J lancera une Exception annoncant que le vendorName est de valeur null. Ce message crytique est lié à Java Advanced Imaging (JAI) et signifie tout simplement que l’implémentation de Java n’a pas été défini dans le manifest.
Pour arranger cela une manière est d’ouvrir le JAR avec Winrar, de double-cliquer le fichier manifest et d’ajouter ces lignes:
Manifest-Version: 1.0
Implementation-Vendor: Sun Microsystems, Inc
Implementation-Title: Java Runtime Environment
Implementation-Version: 1.6.0
Main-Class: com.mydomain.Main - Ensuite, un message annonce que l’application n’arrive pas à trouver les DLL liblept168.dll et libtesseract302.dll. Une possibilité est de placer celles-ci dans le dossier bin de votre installation du JDK. En standard sous Windows celle-ci se situe dans Program Files. Vérifiez en passant que les variables d’environnement sont correctement configurées pour que java.exe soit visible et exécutable dans tous les dossiers.
- Un autre message apparait après celle-ci affirmant que la variable TESSDATA_PREFIX n’est pas assignée. Pour cela vous pouvez entrer cette commande dans la console DOS (cmd.exe dans l’option lancer du menu démarrer). Laissez la console ouverte pour la suite.
set TESSDATA_PREFIX=c:
- Suite à cela, vous pouvez placer le dossier tessdata qui contient les informations nécessaires pour la reconnaissance dans le chemin indiqué dans la variable TESSDATA_PREFIX.
- Il ne reste plus qu’à tester votre application à travers DOS. En runnable jar vous pouvez utiliser cette commande.
java -jar myapplication.jar
Voila. Votre application devrait fonctionner comme dans un IDE. Je vous laisse réflêchir à la possibilité d’automatiser cela de manière programmatique avec un script BAT ou à travers du code Java.
Ping : Recap java, semaine 38, année 2012 | Blog de la rubrique java