2017-10-13 106 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/ 

现在,设置路径变量明确地在我的代码中,即:

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

工作完美。为什么? 我使用的是Manjaro 17.0.5

回答

1

该库最初设计为使用捆绑在其tessdata文件夹中的数据文件。在你的情况,如果你想从标准tessdata目录中读取,你想设置的数据路径如下:

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

+0

System.getenv只返回我已经设置完全相同的字符串虽然,它不是硬编码的。但是,我的问题围绕着“为什么图书馆无法找到自己的”共享库“而不必明确告诉它在哪里看? –

+1

默认情况下,tess4j使用其本地'tessdata'文件夹,而不是Tesseract的。它不知道由'TESSDATA_PREFIX'变量定义的路径。 – nguyenq