5

EMGU.CV の Tesseract オブジェクトを使用して、いくつかの画像で OCR を実行したいと考えています。まず、OCR と LicensePlateRecognition の例をダウンロードし、コンパイルして実行しました。

ただし、Tesseract は次の例外をスローし続けました。

パス 'teseract' と言語 'eng' を使用して ocr モデルを作成できません。

そして、ソースを次の行までたどりました。

_ocr = new Tesseract(@"tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

私は最も明白な方法でそれを修正しようとしました:私はそれにフルパスを与え、ファイルを「C:\」だけにコピーし、プログラムの現在のディレクトリがtessdataと同じディレクトリであることを確認しました。

それらのどれも機能しなかったので、procmon を使用して、次のファイルを探していることを発見しました。

C: \Program Files (x86)\Tesseract-OCR\tessdata

そして、私が何をしても、この場所から変更することはできないようです. (もちろん、そこにファイルを移動することはうまくいきました)。この場所は EMGU.cv のコードのどこにも存在しないため、Tesseract のコードにデフォルト (?) としてコンパイルされていると思います。

では、この場所を使用しないように Tesseract を変更するにはどうすればよいですか? 明らかな方法は、Tesseract コンストラクターがパスを渡して何かを行う必要があることです。

4

5 に答える 5

7

アプリケーションが実行されるディレクトリにファイルをコピーしようとしました。絶対パスと相対パスを試し、ハードコードされた C:\Program Files (x86)\Tesseract-OCR\tessdata を使用してみました。それらのどれも私のために働きませんでした。

次のようにして動作させました。

  1. アプリが実行されている場所に tessdata フォルダーをコピーします
  2. 次に、空の dataPath パラメーターを指定します (明らかに、tessdata/ がデフォルトで dataPath に追加されます)。このコードは機能しました:

_ocr = new Tesseract("", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

于 2013-02-03T21:46:01.443 に答える
1

VB2010 x64 をコンパイルするとまったく同じ問題が発生し、TESSDATA_PREFIXシステム環境変数が削除されました。

于 2015-06-22T00:12:21.543 に答える
1

最初のパラメータはファイルの場所です。ヒントは、エスケープ文字「\」を無効にするために使用される「@」記号であるべきでした。これは通常、\ を避けるためにパスに使用されます。

于 2012-10-27T23:56:40.560 に答える
1

Emgu の BIN にあるフォルダー「tessdata」を BIN プロジェクトにコピーします。私の場合は機能します。

于 2016-01-27T00:34:51.980 に答える