web-dev-qa-db-ja.com

Tesseract実行エラー

Linuxでのtesseract-ocrエンジンの実行に問題があります。 RUS言語データをダウンロードし、tessdataディレクトリ(/ usr/local/share/tessdata)に配置しました。コマンドtesseract blob.jpg out -l rusでtesseractを実行しようとすると、エラーが表示されます。

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.

compiling guide によれば、export TESSDATA_PREFIX='/usr/local/share/'を使用してtessdataディレクトリをポイントしました。おそらく設定ファイルを編集する必要がありますか? Tesseractは、「ru​​s」ではなく「eng」データファイルをロードしようとします。

スクリーンショット: http://i.stack.imgur.com/I0Guc.png

61
Russel Crowe

eng.traineddata Githubを取得できます:

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

https://github.com/tesseract-ocr/tessdata をチェックして、トレーニングされた言語データの完全なリストを確認してください。

ファイルを取得したら、それらを/usr/local/share/tessdataフォルダーに移動します。警告:一部のLinuxディストリビューション(openSUSEやUbuntuなど)では、代わりに/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/
69
AAAfarmclub

最も簡単な方法は、必要なパッケージをインストールすることです。

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)

お気づきのとおり、他の言語(つまり、tesseract-ocr-fra)への道を開きます。

38
Mih Zam

Windowsマシンでもこのエラーが発生しました。

私の解決策。

1) https://github.com/tesseract-ocr/tessdata/tree/3.04. から言語ファイルをダウンロードします

たとえば、engの場合、engプレフィックスを持つすべてのファイルをダウンロードしました。

2)それらをtessdataフォルダー内のディレクトリに入れます。このフォルダーをTESSDATA_PREFIXとしてシステムパス変数に追加します。

結果はSystem env var:TESSDATA_PREFIX = D:/ Java/OCR And OCR folder has(tessdatawith languages files。).

これはディレクトリのスクリーンショットです:

enter image description here

17
Yan Khonski

以前のソリューションは私には役に立たなかった。

apt-getと手動でtessdataをダウンロードしてインストールし、/usrなどを移動しました。変数を1000回エクスポートしてもだれも動作しませんでした。

最後に、泣き出す前の最後の試行で、Tesseract()のインスタンスに直接パスを渡そうとしました。

Pythonの場合:tr = Tesseract("/usr/local/share/tesseract-ocr/")で動作するようになりました。明確にするために、tesserwrapモジュールを使用しています。

4
erm3nda

Cコードからtesseract API関数を呼び出すことができます。

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

そして、このコードをビルドします:

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

(私は画像の読み込みにFreeImageが必要です)

2

Visual Studio 2017 Community Editionを使用しています。
プロジェクトのDebugディレクトリにtessdataというディレクトリを作成して、この問題を解決しました。次に、eng.traineddataファイルを上記のディレクトリに配置します。

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

私の場合、私が犯した間違いや成功しなかった試み。

  • Githubリポジトリを複製し、そこからファイルをコピーしました。
    • / usr/local/share/tessdata /
    • / usr/share/tesseract-ocr/tessdata /
    • / usr/share/tessdata /
  • 上記のパスでTESSDATA_PREFIXを使用
  • Sudo apt-get install tesseract-ocr-eng

最初の2回の試行は機能しませんでした。なぜなら、git cloneからのファイルは、私が知らない理由で機能しなかったからです。 #3の試みが私のために働いた理由がわかりません。

最後に、

  1. wgetを使用してeng.traindataファイルをダウンロードしました
  2. いくつかのフォルダにコピーしました
  3. --tessdata-dirをフォルダー名で使用

パッケージマネージャーのインストールとフォルダーに依存するのではなく、ツールをよく学習して活用する

0
explorer

私はWindows OSを使用していますが、上記のすべてのソリューションを試しましたが、どれも機能しません。

最後に、CドライブではなくDドライブ(pythonスクリプトを実行する場所)にTesseract-OCRをインストールし、動作します。

したがって、Windowsを使用している場合は、Tesseract-OCRと同じドライブでpythonスクリプトを実行します。

0
Yifu Yan