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は、「rus」ではなく「eng」データファイルをロードしようとします。
スクリーンショット: http://i.stack.imgur.com/I0Guc.png
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/
最も簡単な方法は、必要なパッケージをインストールすることです。
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)への道を開きます。
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。).
これはディレクトリのスクリーンショットです:
以前のソリューションは私には役に立たなかった。
apt-get
と手動でtessdataをダウンロードしてインストールし、/usr
などを移動しました。変数を1000回エクスポートしてもだれも動作しませんでした。
最後に、泣き出す前の最後の試行で、Tesseract()のインスタンスに直接パスを渡そうとしました。
Pythonの場合:tr = Tesseract("/usr/local/share/tesseract-ocr/")
で動作するようになりました。明確にするために、tesserwrap
モジュールを使用しています。
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が必要です)
Visual Studio 2017 Community Editionを使用しています。
プロジェクトのDebugディレクトリにtessdataというディレクトリを作成して、この問題を解決しました。次に、eng.traineddataファイルを上記のディレクトリに配置します。
tesseract --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>
私の場合、私が犯した間違いや成功しなかった試み。
TESSDATA_PREFIX
を使用最初の2回の試行は機能しませんでした。なぜなら、git clone
からのファイルは、私が知らない理由で機能しなかったからです。 #3の試みが私のために働いた理由がわかりません。
最後に、
wget
を使用してeng.traindataファイルをダウンロードしました--tessdata-dir
をフォルダー名で使用パッケージマネージャーのインストールとフォルダーに依存するのではなく、ツールをよく学習して活用する
私はWindows OSを使用していますが、上記のすべてのソリューションを試しましたが、どれも機能しません。
最後に、CドライブではなくDドライブ(pythonスクリプトを実行する場所)にTesseract-OCRをインストールし、動作します。
したがって、Windowsを使用している場合は、Tesseract-OCRと同じドライブでpythonスクリプトを実行します。