Tesseract -更改语言文件位置

Tesseract - change language file location

本文关键字:文件 位置 语言 Tesseract      更新时间:2023-10-16

我正在制作一个AIR项目,这将需要一些OCR功能,所以我决定使用tesseract(现在我试图让它在Windows上工作)。

我的问题是,不能改变语言文件的位置-它总是试图查看我的Tesseract安装目录(程序文件(x86)Tesseract- ocr tessdatamylang.traineddata)

是否有一种方法,我可以配置Tesseract寻找我指定的这个文件?例如在与tesseract.exe相同的文件夹中。我不想(或者事件不能)安装应用程序与AIR安装程序。我用3.0版本和最新的SVN版本都试过了。

谢谢

可以,通过设置TESSDATA_PREFIX环境变量,例如:

export TESSDATA_PREFIX =/usr/地方/分享/

注意目录路径必须以/结尾

我建议你不要通过TESSDATA_PREFIX处理tessdata路径。你可以在init tesseract中定义tessdata路径。如果在命令行中使用tesseract.exe,请使用以下语法:

tesseract.exe  --tessdata-dir  tessdataPath  image.png  output  -l  eng

如果你使用tesseract::TessBaseApi,在api.init()中init如下:

api->Init(tessdataPath, language) //api->Init("C:", "eng")

我通过重写Tesseract的源代码(我使用SVN 597)解决了这个问题。正如nyuenq所说,Tesseract试图在TESSDATA_PREFIX环境变量设置的路径上查找数据。如果没有找到,那么它做了一些诡计,我不明白:)。因此,如果有人需要一个可移植版本的Tesseract(不依赖于Tesseract安装),请在第60行左右编辑mainblock .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 executable location"tessdata目录