我正在尝试使用tesseract在java中的图像上进行OCR。我意识到像Tess4J这样的包装器提供了更多的功能和东西,但我一直在努力让它正确设置。简单地使用Runtime运行单行命令实际上是我所需要的,因为这只是一个个人的小项目,不需要在其他计算机上工作。
我有这段代码:
20M.ToString("0.00");
当它直接从终端编译和运行时,它可以很好地工作。但是,当我在eclipse中打开完全相同的文件时,它会产生IOException:
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() : "";
}
}
发生了什么事?谢谢你的帮助。
答案 0 :(得分:1)
检查Eclipse中Test类的运行配置中的工作文件夹。我打赌它与你从终端运行相同程序的那个不同。