it-swarm.com.de

Fehler beim Tesseract-Betrieb

Ich habe ein Problem mit dem Ausführen der Tesseract-OCR-Engine unter Linux. Ich habe RUS-Sprachdaten heruntergeladen und in das Tessdata-Verzeichnis (/ usr/local/share/tessdata) gestellt. Wenn ich versuche, tesseract mit dem Befehl tesseract blob.jpg out -l rus auszuführen, wird ein Fehler angezeigt:

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.

Gemäß compiling guide habe ich export TESSDATA_PREFIX='/usr/local/share/' verwendet, um auf mein Tessdata-Verzeichnis zu zeigen . Vielleicht sollte ich irgendwelche Konfigurationsdateien bearbeiten? Tesseract versucht, "eng" -Datendateien anstelle von "rus" zu laden. 

Screenshot: http://i.stack.imgur.com/I0Guc.png

51
Russel Crowe

Sie können eng.traineddata von Google beziehen (komprimiert):

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

oder Github (roh):

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

Unter https://github.com/tesseract-ocr/tessdata finden Sie eine vollständige Liste der trainierten Sprachdaten.

Wenn Sie die Datei (en) abholen, verschieben Sie sie in den Ordner /usr/local/share/tessdata. Achtung: Einige Linux-Distributionen (wie openSUSE und Ubuntu) erwarten es stattdessen in /usr/share/tessdata.

# 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

Am einfachsten ist es, das benötigte Paket zu installieren:

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)

Wie Sie feststellen können, öffnet sich der Weg für andere Sprachen (d. H. Tesseract-ocr-fra).

30
Mih Zam

Ich hatte auch diesen Fehler auf dem Windows-Rechner.

Meine Lösung.

1) Laden Sie Ihre Sprachdateien von https://github.com/tesseract-ocr/tessdata/tree/3.04.00 herunter.

Zum Beispiel habe ich für eng alle Dateien mit dem Präfix eng geladen.

2) Legen Sie sie im Verzeichnis tessdata innerhalb eines Ordners ab. Fügen Sie diesen Ordner als TESSDATA_PREFIX den Systempfadvariablen hinzu.

Das Ergebnis ist System env var: TESSDATA_PREFIX = D:/Java/OCR Der OCR-Ordner enthält tessdata mit Sprachdateien.

Dies ist ein Screenshot des Verzeichnisses:

 enter image description here

13
Yan Khonski

Keine vorherige Lösung hat für mich funktioniert. 

Ich habe sowohl apt-get als auch das manuelle Herunterladen der Tessdata installiert, /usr usw. verschoben und niemand hat funktioniert, auch wenn ich die Variable tausendmal exportiert habe.

Bei einem letzten Versuch vor dem Start zu weinen habe ich versucht, den Pfad direkt an die Instanz von Tesseract () zu übergeben.

In Python: tr = Tesseract("/usr/local/share/tesseract-ocr/") und jetzt funktioniert es. Um dies zu verdeutlichen, verwende ich tesserwrap.

4
erm3nda

Sie können die Tesseract-API-Funktion über C-Code aufrufen:

#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();

Und diesen Code erstellen:

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

(Ich brauche FreeImage zum Laden von Bildern)

2

Ich benutze Visual Studio 2017 Community Edition .
Ich löste dieses Problem, indem ich im Debug-Verzeichnis meines Projekts ein Verzeichnis mit dem Namen tessdata erstellte. Dann lege ich die Datei eng.traineddata in dieses Verzeichnis.

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

In meinem Fall waren die Fehler, die ich gemacht habe, oder Versuche, die nicht erfolgreich waren.

  • Ich habe das Github-Repo geklont und die Dateien von dort nach .__ kopiert.
    • / usr/local/share/tessdata /
    • / usr/share/tesseract-ocr/tessdata /
    • / usr/share/tessdata /
  • Verwendet TESSDATA_PREFIX mit den obigen Pfaden
  • Sudo apt-get install tesseract-ocr-eng

Die ersten 2 Versuche haben nicht funktioniert, weil die Dateien von git clone aus den Gründen nicht geklappt haben, die ich nicht kenne. Ich bin nicht sicher, warum der # 3-Versuch für mich funktioniert hat.

Endlich, 

  1. Ich habe die Datei eng.traindata mit wget heruntergeladen.
  2. Kopiert es in einen Ordner
  3. Verwendet --tessdata-dir mit dem Ordnernamen

Für mich ist es wichtig, das Tool gut zu lernen und es zu nutzen, anstatt sich auf die Installation und Ordner des Paketmanagers zu verlassen

0
explorer

Ich verwende Windows, habe alle oben genannten Lösungen ausprobiert und keine funktioniert.

Schließlich installiere ich Tesseract-OCR auf Laufwerk D (wo ich mein Python-Skript ausführe) anstelle von Laufwerk C und es funktioniert.

Wenn Sie also Windows verwenden, führen Sie Ihr Python-Skript auf demselben Laufwerk aus wie Ihre Tesseract-OCR.

0
Yifu Yan