111 votes

Erreur de fonctionnement de Tesseract

J'ai un problème avec l'exécution du moteur tesseract-ocr sous linux. J'ai téléchargé les données de la langue RUS et les ai placées dans le répertoire tessdata (/usr/local/share/tessdata). Lorsque j'essaie d'exécuter tesseract avec la commande tesseract blob.jpg out -l rus le système affiche une erreur :

Error opening data file /usr/local/share/tessdata/eng.traineddata

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.

Failed loading language eng
Tesseract couldn't load any languages!

Could not initialize tesseract.

Selon guide de compilation J'ai utilisé export TESSDATA_PREFIX='/usr/local/share/' pour pointer mon répertoire tessdata. Peut-être devrais-je modifier les fichiers de configuration ? Tesseract essaie de charger des fichiers de données 'eng' au lieu de 'rus'.

Capture d'écran : http://i.stack.imgur.com/I0Guc.png

3voto

Amar Kumar Points 1482

Pour Ubuntu, il suffit d'exécuter la commande ci-dessous et l'erreur de variable d'environnement disparaîtra.

commandement :

export TESSDATA_PREFIX=Path_of_your_tessdata_folder

Exemple de commande :

export TESSDATA_PREFIX=/home/amar/Desktop/OCR/tesseract-4.1.1/tessdata

Cette commande définira le chemin du dossier tessdata dans la variable d'environnement avec le nom TESSDATA_PREFIX et l'erreur ci-dessus sera résolue.

3voto

J.Horcasitas Points 35

Pour moi, le problème résidait dans la façon dont j'ai téléchargé les fichiers de données des trains. Assurez-vous d'obtenir le lien brut.

Au départ, j'utilisais :

wget https://github.com/tesseract-ocr/tessdata_best/blob/master/eng.traineddata

Quand je l'ai changé en :

wget https://github.com/tesseract-ocr/tessdata_best/raw/master/eng.traineddata

Ça a marché.

2voto

Vous pouvez appeler la fonction API de tesseract à partir du code C :

#include <tesseract/baseapi.h>
#include <tesseract/ocrclass.h>; // ETEXT_DESC

using namespace tesseract;

class TessAPI : public TessBaseAPI {
    public:
    void PrintRects(int len);
};

...
TessAPI *api = new TessAPI();
int res = api->Init(NULL, "rus");
api->SetAccuracyVSpeed(AVS_MOST_ACCURATE);
api->SetImage(data, w0, h0, bpp, stride);
api->SetRectangle(x0,y0,w0,h0);

char *text;
ETEXT_DESC monitor;
api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
printf("m.count: %s\n", monitor.count);
printf("m.progress: %s\n", monitor.progress);

api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
...
api->End();

Et construisez ce code :

g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus

(j'ai besoin de FreeImage pour le chargement des images)

2voto

Yifu Yan Points 1375

J'utilise Windows OS, j'ai essayé toutes les solutions ci-dessus et aucune ne fonctionne.

Finalement, j'ai installé Tesseract-OCR sur le lecteur D (où je lance mon script python) au lieu du lecteur C et cela fonctionne.

Donc, si vous utilisez Windows, exécutez votre script python dans le même lecteur que votre Tesseract-OCR.

2voto

rafcod Points 21

Pour les utilisateurs de Windows :

Dans les Variables d'environnement, ajoutez une nouvelle variable dans la variable système avec le nom "TESSDATA_PREFIX" et la valeur "TESSDATA_PREFIX". C:\Program Fichiers (x86) \Tesseract -OCR \tessdata "

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X