2017-10-13 10 views
0

Tesseract 인스턴스에서 데이터 경로를 명시 적으로 설정해야하지만 환경 변수를 읽지 않으려 고하는 이유는 무엇입니까?경로 변수를 사용하지 않는 Tesseract

제가 정리해 드리죠 :

ITesseract tesseract = new Tesseract(); 
String result = tesseract.doOCR(myImage); 

예외 코드를 에러를 실행 :

Error opening data file ./tessdata/eng.traineddata 
Please make sure the TESSDATA_PREFIX environment variable is set to the 
parent directory of your "tessdata" directory. 

이미 즉,이 설정 지금

echo $TESSDATA_PREFIX returns /usr/share/tessdata/ 

을하고, 내 환경 변수를 설정 한 path 변수를 명시 적으로 내 코드에 넣습니다 (예 :

).
Itesseract tesseract = new Tesseract(); 
tesseract.setDatapath("/usr/share/tessdata/"); 
String result = tesseract.doOCR(myImage); 

WORKS PERFECTLY. 왜? Manjaro를 사용하고 있습니다. 17.0.5

답변

1

라이브러리는 처음에 tessdata 폴더에 번들 된 데이터 파일을 사용하도록 설계되었습니다. 당신은 표준 tessdata 디렉토리에서 읽으려면 다음과 같이 귀하의 경우에는, 당신은 데이터 경로를 설정할 것 :

tesseract.setDatapath(System.getenv("TESSDATA_PREFIX"));

System.getenv 그냥 내가 이미 설정 한 동일한 문자열을 반환합니다
+0

하지만 그것은 하드 코딩되지 않습니다. 그러나 제 질문은 "왜 도서관이 자신의'share' 라이브러리를 찾을 수 없습니까?"라고 말하지 않아도됩니다. –

+1

기본적으로 tess4j는 Tesseract가 아닌 로컬 'tessdata' 폴더를 사용합니다. 'TESSDATA_PREFIX' 변수에 의해 정의 된 경로를 인식하지 못합니다. – nguyenq