2016-03-22 13 views
2

このプロジェクトの最終目標は、jarファイルをtesseractを使用するディレクトリに置いて結果ディレクトリと出力txtファイルを出力することです。しかし、私はtesseractにいくつかの問題があります。 私はMavenを使ってJavaでtess4jを使っています。自分のコードを実行可能なjarファイルにしたいと思います。プロジェクトは、デスクトップアプリケーションとして正常に動作しますが、いつでも私はそれは私にエラーを与えます(jarファイルにエクスポートした後)java -jar fileName.jarを使用して実行しようTesseract Java設定用Tessdata_Prefix実行可能なjar用

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory 
Failed loading language 'eng' 
... 

私はオンラインを見て、本当にためたTesseractを設定する方法を見つけるcouldntのjarとパスを正しく取得します。今私はmavenを使い、私のpomファイル(tess4j -v 3.0)にTesseractの依存関係があり、私は自分のプロジェクトにtessdataを持っています。

私はかなりmavenとjarファイルに新しいですし、以前はtesseractを使用したことはありませんでしたが、インターネットから私が正しく設定している限り、正確に設定しました。

tess4jをプロジェクトのtessdataディレクトリをポイントする方法を知っていて、動的パスを持っているので、複数のコンピュータや場所で移動することはできますか?

これは、私はこれは私が

String dir = System.getProperty("user.dir"); 
System.out.println("current dir = " + dir); 
ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "SET"); 
Map<String, String> env = pb.environment(); 
env.put("TESSDATA_PREFIX", dir + "\\tessdata"); 
Process p = pb.start(); 

私のコードでは、環境変数TESSDATA_PREFIXを設定しようとした方法であるが、これは識別できるがなかった

Tesseract instance = new Tesseract(); 
    instance.setDatapath("src/main/resources"); 
    String result = instance.doOCR(imageFile); 
    String fileName = imageFile.getName().replace(".jpg", ""); 
    System.out.println("Parsed Image " + fileName); 
    return result; 

EDIT

たTesseract

を呼び出す方法です効果。私はまだ私はtessdataの親ディレクトリに設定する必要があり、エラーメッセージによると、同じエラー

EDIT 2

を持って、私はまた、無駄

EDIT 3にこれを試してみました

1トンの検索とそれを修正しようとすると、私はそれが可能であるかどうかはわかりません。 tesseractのdoOcrメソッドは、バッファリングされたイメージまたはFileを取り込みます。これは、イメージが動的ではない場合には問題ありません。本当にそれらをjarファイルに格納できません。 TESSDATA_PREFIXがまだ設定されていないという事実は言うまでもありません。誰もが任意のアイデアを持っている場合、私はまだすべての耳をしていると私は解決策を探し続けるが、それはあなたがあなたのtessdataフォルダの場所にたTesseractを指すようにinstance.setDatapathメソッドを呼び出すことができるすべての

+0

それは役に立ちますか? http://stackoverflow.com/questions/18095708/tess4j-doesnt-use-its-tessdata-folder –

+0

@ ShmulikKleinいいえ、私のために働いていません。私は環境変数をどのように設定するかを編集します。私は同じエラーを受けました – Ian

+0

問題は私のプロジェクト階層にtessdataがあることです。システムがそれを持っていない可能性があるので、私は実際にこれを引き出すことができません。実行可能にしている間にテスデータを読み込む方法を見つける必要があります。 – Ian

答えて

1

で動作するわけではないことを確認イムます。

http://tess4j.sourceforge.net/docs/docs-3.0/

+0

ええ、私はすでにそれをしています。問題はjarファイルに "フォルダ"がありません – Ian

+0

質問に編集を追加してこれを表示しました – Ian

+1

JARファイルに 'tessdata'をパッケージ化した場合は、まずローカルファイルシステムに展開してデータパスを設定する必要がありますそれに。 – nguyenq

0

I

  1. は、以下の

    Tesseract instance = new Tesseract(); 
    instance.setDatapath("."); 
    String result = instance.doOCR(imageFile); 
    String fileName = imageFile.getName().replace(".jpg", ""); 
    System.out.println("Parsed Image " + fileName); 
    return result; 
    
  2. にsetDatapathを変え、私のjarファイルと同じディレクトリにtessdataフォルダを置くとき、それはランダムに仕事を始めました

3.プロジェクトを右クリックし、java - > runnable jarを選択し、オプション "Generated Jarsに必要なライブラリを抽出する"を設定してEclipseからエクスポートしました。

(サイドノート、私はもうプロジェクト内にある必要はありません早くやっていたように環境設定)

私は本当に私はこれを試してみましたと思ったが、私は何かが間違っている必要がありますね。私は自分のプロジェクトからtessdataを削除し、jarファイルが実行されている場所であればそれをインクルードする必要があります。私はなぜそれが仕事を始めたが、うれしい私はそれをしました

関連する問題