javaの画像でtesseractを使用してOCRを実行しようとしています。私はTess4Jのような包括的な機能と素材を提供するラッパーがあることを認識していますが、私はそれを正しく設定するのに苦労しています。ランタイムで1行のコマンドを実行するだけで、私はちょっと個人的な小さなプロジェクトであり、他のコンピュータや何かで作業する必要がないので、私はとにかく必要です。端末から実行したときにEclipseから実行したときの実行時execコマンド
私はこのコードを持っている:それはコンパイルされ、端末から直接実行だとき、それは完全に
import java.io.IOException;
public class Test {
public static void main(String[] args) {
System.out.println(scan("full-path-to-test-image"));
}
public static String scan(String imgPath) {
String contents = "";
String cmd = "[full-path-to-tesseract-binary] " + imgPath + " stdout";
try { contents = execCmd(cmd); }
catch (IOException e) { e.printStackTrace(); }
return contents;
}
public static String execCmd(String cmd) throws java.io.IOException {
java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}
動作します。
java.io.IOException: Cannot run program "tesseract": error=2, No such file or directory
何が起こっている:私は日食にまったく同じファイルを開くと、しかし、それはIOExceptionができますか?何か助けてくれてありがとう。
"カレントディレクトリ"と "相対パス"の概念に慣れたいと思うでしょう。これはJavaの概念ではなく、基本的なファイルシステムの概念です。 – VGR
私はあなたが何を示唆しているかは完全にはわかりません。 Tesseractは、プログラムがターミナルまたはeclipseから直接実行されているときは、現在のディレクトリ/作業ディレクトリにはなく、コマンドライン上にあるときは現在のディレクトリに関係なく動作します。 – sc8ing
私は出力を誤解している可能性があります。私はそれがtesseract自体があなたのファイルを見つけることができなかったことを意味するためにそれを取った。しかし、私は間違っているかもしれません。 Eclipseが、端末のシェルとは異なるPATH環境変数を持つ環境で実行されている可能性があります。 – VGR