java의 이미지에서 tesseract를 사용하여 OCR을 수행하려고합니다. 나는 더 많은 기능과 물건을 제공하는 Tess4J와 같은 래퍼가 있다는 것을 알고 있지만 제대로 설정하기 위해 고심하고있다. Runtime으로 한 줄짜리 명령을 실행하는 것만으로도 개인용 프로젝트이므로 다른 컴퓨터 나 다른 컴퓨터에서 작업 할 필요가 없습니다.터미널에서 실행할 때 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