我正在制作一个AIR项目,它需要一些OCR功能,所以我决定使用tesseract(现在我试着让它在Windows上工作)。
我的问题是,它无法改变语言文件的位置 - 它总是试图查看我的Tesseract安装目录(程序文件(x86)\ Tesseract-OCR \ tessdata \ mylang.traineddata)
有没有办法可以配置Tesseract来查找我指定的文件?例如,与tesseract.exe在同一文件夹中。我不希望(或者可能是事件不能)使用AIR安装程序安装应用程序。我已经尝试使用3.0版本和最新的SVN版本。
由于
答案 0 :(得分:11)
是的,您可以通过设置TESSDATA_PREFIX环境变量,例如:
导出TESSDATA_PREFIX = / usr / local / share /
请注意,目录路径必须以/.
结尾答案 1 :(得分:2)
我通过重写Tesseract的源代码解决了这个问题(即使用SVN 597)。正如nguyenq所说,Tesseract试图在TESSDATA_PREFIX环境变量设置的路径上查找数据。如果没有找到,那么它做了一些我不明白的诡计:)。 因此,如果任何人需要便携版Tesseract(不依赖于Tesseract安装),请在第60行编辑mainblk.cpp,这是我的版本:
// remove the stuff that Tesseract does to find the installation path
/* if (!getenv("TESSDATA_PREFIX")) {
#ifdef TESSDATA_PREFIX
#define _STR(a) #a
#define _XSTR(a) _STR(a)
datadir = _XSTR(TESSDATA_PREFIX);
#undef _XSTR
#undef _STR
#else
if (argv0 != NULL) {
if (getpath(argv0, dll_module_name, datadir) < 0)
#ifdef __UNIX__
CANTOPENFILE.error("main", ABORT, "%s to get path", argv0);
#else
NO_PATH.error("main", DBG, NULL);
#endif
} else {
datadir = "./";
}
#endif
} else {
datadir = getenv("TESSDATA_PREFIX");
}*/
datadir = "./"; // look for config things in the same folder as the executable.
现在您可以在“tesseract可执行位置”\ tessdata目录
中打包答案 2 :(得分:0)
我建议您不要通过 TESSDATA_PREFIX 处理tessdata路径。你可以在init tesseract中定义tessdata路径。如果在命令行中使用tesseract.exe,请使用以下语法:
tesseract.exe --tessdata-dir tessdataPath image.png output -l eng
如果你在api.init()init中使用 tesseract :: TessBaseApi ,如下所示:
api->Init(tessdataPath, language) //api->Init("C:", "eng")