Tesseract実行エラー


82

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.

コンパイルガイドによると、私export TESSDATA_PREFIX='/usr/local/share/' はtessdataディレクトリをポイントしていました。多分私は設定ファイルを編集する必要がありますか?Tesseractは、「ru​​s」ではなく「eng」データファイルをロードしようとします。

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

回答:


87

あなたはeng.traineddataGithubをつかむことができます:

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/

2
私が間違っている場合は私を訂正してください..しかし、新しい言語(rus)を含め、(誤った)エラーメッセージが指す言語を提供しないことについての質問ではありませんでしたか?
Arne 2014

1
編集:何らかの理由で、eng.traineddateが存在しない限り、必要がない場合でも、tesseractは実行されません。したがって、AAAfarmclubの答えは問題ありません。
Arne

3
警告:他のLinuxインストール(ubuntu vivid)は別のディレクトリで動作します:代わりに/ usr / share / tesseract-ocr / tessdata
八面体2015

@Gazta:はい、openSUSEでは代わりにそのディレクトリが必要です
Avindra Goolcharan 2016年

3
Ubuntu-Gnome 16.04の場合:それは/usr/share/tesseract-ocr/tessdata/
kmario23 2017年

55

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

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)への道を開きます。


3
これは受け入れられた答えでなければなりません。パッケージマネージャーの背後にあるファイルを手動でいじくり
回すの

2
MacPortを使用しているMacユーザーの場合:sudo port install tesseract-eng
p-mercier 2017

4
を使用tesseract --list-langsして、使用可能なすべての言語を表示できます。また、使用することができsudo apt-get install tesseract-ocr-*、それらのすべてをインストールするには
ロドリゴラグナ

アーチのパッケージと呼ばれtesseract-data-engなど、
ロキ

残念ながら、この回答はDockerコンテナーの外部では機能しますが、Dockerコンテナーでは機能しません。
Ælex

28

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

私の解決策。

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

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

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

結果はSystemenv var:TESSDATA_PREFIX = D:/ Java / OCRになり、OCRフォルダーには言語ファイルを含むtessdataがあります。

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

ここに画像の説明を入力してください


4
はい、誰もがLinuxについて話しています。皆さん、もう1つの人気のあるOSが市場に出ていることを忘れないでください。
カーン

4

以前の解決策は私にはうまくいきませんでした。

私は両方によってインストールしてapt-get、手動で動き回っtessdata、ダウンロード/usrなどをし、誰もが、私は変数に千回を輸出していても働きました。

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

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


1
君の気持ち、分かるよ!私は今まさにそこにいます。違いは、さらに悪いことに、コマンドラインから機能させようとしていることです。
エクスプローラー

4
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

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

最終的に、

  1. eng.traindataファイルを使用してダウンロードしました wget
  2. それをいくつかのディレクトリにコピーしました
  3. --tessdata-dirディレクトリ名とともに使用

私のために離れて取ることですだけでなくツールを学ぶ&それを利用するのではなく、パッケージマネージャのインストール&ディレクトリに頼ります


2

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

#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が必要です)


@DarkSkull、はい、これはDebian GNU / LinuxでテストされたC ++コードです。ご覧のとおり、RusselCroweには関数TessAPI :: Init(NULL、 "rus")に問題があります。Tesseractソースコード(TessAPIクラスメソッド)を調べることは意味があります。
Alexander Lubyagin 2017

1

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


1

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

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

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


1

ここでWindowsに取り組んでいるC#開発者。私にとってうまくいくのは、次のURLからファイルeng.traineddataをダウンロードすることです。

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

コンソールアプリケーションプロジェクトの次のディレクトリにコピーします。

[プロジェクトディレクトリ] \ bin \ Debug \ tessdata

上記のtessdataフォルダーを手動で作成しました


0

Windowsユーザーの場合:

環境変数で、「TESSDATA_PREFIX」という名前のシステム変数に新しい変数を追加します。値は「C:\ ProgramFiles(x86)\ Tesseract-OCR \ tessdata」です。


同意し、スムーズに動作するように、いくつかのより多くのインストールが必要とされ、machineintelligent.blogspot.com/2019/03/...
アミットバシスサ

0
tessdata_dir_config = r'--tessdata-dir "/usr/local/Cellar/tesseract/4.1.1/share/tessdata"'
pytesseract.image_to_string(imgCrop,lang='eng',config=tessdata_dir_config)

4
これは答えではありません。他の人があなたの回答を読むときに役立つ洞察を得ることができるように、ここで何が起こっているのかを説明してください。
AlexH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.