web-dev-qa-db-fra.com

Erreur courante de Tesseract

J'ai un problème avec le moteur tesseract-ocr sous Linux. J'ai téléchargé les données en langage 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, une erreur s'affiche:

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 éditer des 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

51
Russel Crowe

Vous pouvez récupérer eng.traineddata auprès de Google (compressé):

wget https://tesseract-ocr.googlecode.com/files/eng.traineddata.gz

ou Github (brut):

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

Consultez https://github.com/tesseract-ocr/tessdata pour obtenir une liste complète des données linguistiques apprises.

Lorsque vous récupérez le ou les fichiers, déplacez-les dans le dossier /usr/local/share/tessdata. Attention: certaines distributions Linux (telles que openSUSE et Ubuntu) peuvent l’attendre dans /usr/share/tessdata à la place.

# If you got the data from Google, unzip it first!
gunzip eng.traineddata.gz 
# Move the data
Sudo mv -v eng.traineddata /usr/local/share/tessdata/
56
AAAfarmclub

Le plus simple consiste à installer le paquet nécessaire:

Sudo apt-get install tesseract-ocr-eng  #for english
Sudo apt-get install tesseract-ocr-tam  #for tamil
Sudo apt-get install tesseract-ocr-deu  #for deutsch (German)

Comme vous pouvez le constater, cela ouvre la voie à d’autres langues (par exemple tesseract-ocr-fra).

30
Mih Zam

J'ai eu aussi cette erreur sur la machine Windows.

Ma solution.

1) Téléchargez vos fichiers de langue de https://github.com/tesseract-ocr/tessdata/tree/3.04.00

Par exemple, pour eng, j'ai téléchargé tous les fichiers avec le préfixe eng.

2) Placez-les dans le répertoire tessdata à l’intérieur d’un dossier. Ajoutez ce dossier aux variables du chemin système sous la forme TESSDATA_PREFIX.

Le résultat sera System env var: TESSDATA_PREFIX = D:/Java/OCR Et le dossier OCR contient tessdata avec les fichiers de langues.

Ceci est une capture d'écran du répertoire:

 enter image description here

13
Yan Khonski

Aucune solution précédente n'a fonctionné pour moi. 

J'ai installé à la fois par apt-get et en téléchargeant manuellement tessdata, déplacé autour de /usr et ainsi de suite, et personne n'a travaillé même si j'ai exporté la variable mille fois.

Enfin, lors d’un dernier essai avant de commencer à pleurer, j’ai essayé de passer le chemin directement à l’instance de Tesseract ().

En Python: tr = Tesseract("/usr/local/share/tesseract-ocr/") et maintenant cela fonctionne. Pour clarifier, utilisez le module tesserwrap.

4
erm3nda

Vous pouvez appeler la fonction API 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)

2
Alexander Lubyagin

J'utilise Visual Studio 2017 Community Edition .
J'ai résolu ce problème en créant un répertoire appelé tessdata dans le répertoire Debug de mon projet. Ensuite, je mets le fichier eng.traineddata dans ledit répertoire.

1
John
tesseract  --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>

Dans mon cas, les erreurs que j'ai commises ou les tentatives que j'ai faites n'ont pas été un succès.

  • J'ai cloné le dépôt github et copié les fichiers de là vers
    • / usr/local/share/tessdata /
    • / usr/share/tesseract-ocr/tessdata /
    • / usr/share/tessdata /
  • TESSDATA_PREFIX avec les chemins ci-dessus
  • Sudo apt-get install tesseract-ocr-fra

Les 2 premières tentatives n'ont pas fonctionné car les fichiers de git clone n'ont pas fonctionné pour des raisons que je ne connais pas. Je ne sais pas pourquoi la tentative n ° 3 a fonctionné pour moi.

Finalement, 

  1. J'ai téléchargé le fichier eng.traindata en utilisant wget
  2. Copié dans un dossier
  3. --tessdata-dir utilisé avec nom de dossier

Emporter pour moi, c'est bien connaître l'outil et l'utiliser , plutôt que de compter sur l'installation et les dossiers du gestionnaire de paquets

0
explorer

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

Enfin, j'installe Tesseract-OCR sur le lecteur D (d'où je tire mon script python) à la place 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.

0
Yifu Yan