Je fais un projet d'air, qui aura besoin de certaines capacités OCR, j'ai donc décidé d'utiliser Tesseract (maintenant j'essaie de le faire fonctionner sur Windows). p>
Mon problème est que cela ne peut pas changer l'emplacement du fichier de langue - il essaie toujours de regarder dans mon répertoire d'installation Tesseract (fichiers de programme (x86) \ tesseract-ocr \ tessdata \ mylang.trainedData) p>
Y a-t-il une façon de configurer Tesseract pour rechercher ce fichier où je spécifie? Par exemple dans le même dossier que Tesseract.exe. Je ne veux pas (ou peut-être l'événement ne peut pas) installer une application avec l'installation d'air. Je l'ai essayé avec la version 3.0 et la dernière version SVN. P>
merci p>
3 Réponses :
Oui, vous pouvez, en définissant la variable d'environnement TessData_Prefix, par exemple: P>
Export TessData_Prefix = / USR / local / Partager / P>
Notez que le chemin de répertoire doit se terminer dans un /. p>
Merci, je suppose que je devrai modifier le code source alors. Ce n'est pas une solution très élégante pour modifier une variable d'environnement à chaque exécution du programme (juste pour s'assurer que l'utilisateur n'a pas défini cette variable depuis la dernière exécution - par exemple en installant Tesseract).
J'ai résolu le problème en réécrivant le code source de Tesseract (IM à l'aide de SVN 597). Comme le dit Nguyenq, Tesseract tente de rechercher les données sur le chemin défini par la variable d'environnement TessData_Prefix. Si cela ne se trouve pas, alors cela fait du domaine que je ne comprends pas :). Donc, si quelqu'un a besoin d'une version portable de Tesseract (qui n'est pas dépendante d'une installation Tesseract), edit Mainblk.cpp autour de la ligne 60, voici ma version:
// remove the stuff that Tesseract does to find the installation path /* if (!getenv("TESSDATA_PREFIX")) { #ifdef TESSDATA_PREFIX #define _STR(a) #a #define _XSTR(a) _STR(a) datadir = _XSTR(TESSDATA_PREFIX); #undef _XSTR #undef _STR #else if (argv0 != NULL) { if (getpath(argv0, dll_module_name, datadir) < 0) #ifdef __UNIX__ CANTOPENFILE.error("main", ABORT, "%s to get path", argv0); #else NO_PATH.error("main", DBG, NULL); #endif } else { datadir = "./"; } #endif } else { datadir = getenv("TESSDATA_PREFIX"); }*/ datadir = "./"; // look for config things in the same folder as the executable.
Je suggère que vous ne traitez pas la voie Tessdata par TessData_Prefix Strong>. Vous pouvez définir le chemin Tessdata dans Init Tesseract. Si vous utilisez Tesseract.exe dans la ligne de commande Utilisez la syntaxe suivante: api->Init(tessdataPath, language) //api->Init("C:", "eng")