2017-10-13 7 views
0

Tesseractインスタンスでデータパスを明示的に設定する必要がありますが、環境変数を読み込みたくないのはなぜですか?Tesseractがパス変数を使用していません

私は明確にしましょう:コード

ITesseract tesseract = new Tesseract(); 
String result = tesseract.doOCR(myImage); 

を実行すると、エラーが例外:

Error opening data file ./tessdata/eng.traineddata 
Please make sure the TESSDATA_PREFIX environment variable is set to the 
parent directory of your "tessdata" directory. 

私はすでにすなわち設定、今

echo $TESSDATA_PREFIX returns /usr/share/tessdata/ 

をやって、私の環境変数が設定されています私のコードで明示的にパス変数、すなわち:

Itesseract tesseract = new Tesseract(); 
tesseract.setDatapath("/usr/share/tessdata/"); 
String result = tesseract.doOCR(myImage); 

WORKS PERFECTLY。どうして? 私はManjaroを使用しています。17.0.5

答えて

1

ライブラリは当初、tessdataフォルダにバンドルされているデータファイルを使用するように設計されていました。あなたのケースでは、標準tessdataディレクトリから読みたい場合、あなたは次のようにデータパスを設定するとよいでしょう:

tesseract.setDatapath(System.getenv("TESSDATA_PREFIX"));

+0

System.getenvはちょうどしかし、私はすでに設定しているまったく同じ文字列を返しますしかし、私の質問は、 "なぜライブラリは自分自身の' share'ライブラリを見つけることができないのですか?明示的にそれをどこに見せなくてもいいのですか? –

+1

デフォルトでは、tess4jはTesseractのものではなく、ローカルの 'tessdata'フォルダを使用します。 'TESSDATA_PREFIX'変数で定義されているパスを認識していません。 – nguyenq

関連する問題