Tesseract가 언어로드 실패 (Tess4j / Java / Netbeans)

Aug 29 2020

저는 현재 OpenCV 및 Tessj4를 사용하여 이미지에서 문자와 숫자를 감지하는 프로그램을 작업 중입니다. 이를 위해 Tesseract (버전 5.0.0 알파)를 다운로드하여 설치했습니다.https://github.com/UB-Mannheim/tesseract/wiki에서 Tess4j API (버전 3.4.8)를 다운로드했습니다. http://tess4j.sourceforge.net .jar 파일 (tess4j-3.4.8.jar + lib 폴더 내의 모든 .jar 파일)을 내 프로젝트에 추가했습니다.

또한 시스템 경로에 tesseract 디렉토리 (C : / Program Files / Tesseract-OCR)를 포함하고 TESSDATA_PREFIX 값 (C : / Program Files / Tesseract-OCR / tessdata)을 환경 변수에 추가했습니다.

그러나이 간단한 4 줄의 코드를 실행하려고하면 다음과 같은 오류가 발생합니다.

Tesseract tesseract = new Tesseract();
tesseract.setDatapath("C:/Program Files/Tesseract-OCR/tessdata");
tesseract.setLanguage("eng");
System.out.println(tesseract.doOCR(new File("screen.png")));

Failed loading language 'eng'
Tesseract couldn't load any languages!
Exception in thread "main" java.lang.Error: Invalid memory access
   at com.sun.jna.Native.invokePointer(Native Method)
   at com.sun.jna.Function.invokePointer(Function.java:470)
   at com.sun.jna.Function.invoke(Function.java:404)
   at com.sun.jna.Function.invoke(Function.java:315)
   at com.sun.jna.Library$Handler.invoke(Library.java:212) at com.sun.proxy.$Proxy0.TessBaseAPIGetUTF8Text(Unknown Source)
   at net.sourceforge.tess4j.Tesseract.getOCRText(Unknown Source)
   at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
   at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
   at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
   at app.Main.main(Main.java:41)

그러나 콘솔을 사용하여 tesseract 프로그램을 실행 한 다음 생성 된 파일의 내용을 읽으면 모두 제대로 작동합니다.

Process p = Runtime.getRuntime().exec("cmd /c tesseract screen.png text -l eng");
while(p.isAlive()) 
   Thread.sleep(5);
    
BufferedReader reader = new BufferedReader(new FileReader(new File("text.txt")));
StringBuilder stringBuilder = new StringBuilder();
String line;
    
while((line = reader.readLine()) != null)
   stringBuilder.append(line).append("\n");
    
reader.close();
System.out.println(stringBuilder.toString().trim());

누구든지이 문제를 해결하는 방법을 알고 있습니까?
고마워, 입 셀론.

답변

1 Ypselon Aug 29 2020 at 20:40

좋아, 어떤 이유로 내 언어 파일이 손상되었음을 알았습니다.
"C : \ Program Files \ Tesseract-OCR \ tessdata"디렉토리에있는 "eng.traineddata"파일을 간단히 교체했습니다.

이제 모든 것이 제대로 작동합니다.