2017-05-02 3 views
2

J'ai un projet de Qt 5.8 vide de base, et je veux intégrer la bibliothèque Tesseract pour travailler avec cela. Je ne trouve pas d'instructions complètes étape par étape pour ce faire, alors j'espère que quelqu'un pourra partager une expérience.Construire Tesseract OCR avec Qt 5.8

Je veux utiliser quelque chose comme ça dans mon code:

#include <tesseract/baseapi.h> 
#include <leptonica/allheaders.h> 

Je sais que je dois mettre des instructions supplémentaires au fichier .pro (etc LIBS, HEADERS), mais je ne sais pas Est-ce qu'il y a un bon moyen de le faire?

Qt 5.8

de Windows 10

MinGW 32bit

Répondre

1

Le "avec Qt" partie est redondante, vous ne avez pas vraiment besoin de faire quoi que ce soit "avec Qt" afin d'utiliser une bibliothèque générique.

La bibliothèque devra être construite en utilisant de préférence le même compilateur compatible binaire ou, à tout le moins, compatible. Les instructions de construction réelles peuvent être trouvées here. Comme pour le fichier Qt PRO, vous pouvez simplement use the wizard from Creator - cliquer sur le nom du projet dans la barre latérale gauche (l'arborescence du projet) et sur «Ajouter une bibliothèque» et suivre l'assistant en fonction du type de bibliothèque que vous utilisez.

Il va générer les définitions nécessaires au projet dans le format suivant:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../../projects/mylib/release/ -lmylib 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../../projects/mylib/debug/ -lmylib 
else:unix: LIBS += -L$$OUT_PWD/../../../projects/mylib/ -lmylib 

INCLUDEPATH += $$PWD/../../../projects/mylib 
DEPENDPATH += $$PWD/../../../projects/mylib 

win32:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/release/mylib.lib 
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/debug/mylib.lib 
else:unix: PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/libmylib.a 
0

Je l'ai fait une fois dans un projet qui utilise également OpenCV, avant Tesseract était dans sa branche stable. Cela m'a permis d'omettre toutes les bibliothèques de lecture d'images, car je le ferais par OpenCV. J'ai fini par compiler Tesseract via Cygwin, mais cela m'a donné des librairies compatibles binaires à utiliser dans mon projet MinGW32.

J'ai suivi http://vorba.ch/2014/tesseract-cygwin.html pour la plupart. Je configuré Leptonica 1,72 en tant que tel:

./configure --without-giflib --without-zlib --without-libpng --without-jpeg --without-libtiff --without-libwebp --without-libopenjpeg 

Si vous compilez leptonica sous Cygwin il ne doit pas avoir d'espace dans le chemin source ou vous obtiendrez des erreurs parasites « \ ».

Pour compiler tesseract lui-même, vous trouverez que MinGW ne fournit pas strtok_r.h. Cependant, Tesseract comprend une version de strtok_r.cpp, de sorte que le correctif est plus facile à modifier et remplacer ambigs.cpp #include "strtok_r.h" avec la signature de la fonction:

char *strtok_r(char *s, const char * sep, char ** p); 

MinGW a un bug dans math.h en ce qui concerne la fonction _hypot. Le remplacer par hypot (sans le trait de soulignement) résout ce problème.

C'est tout ce que j'ai documenté pour moi-même à l'époque. Si vous avez des problèmes, faites le moi savoir afin que je puisse voir si j'ai oublié d'inclure quoi que ce soit.