8

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

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

有没有一种方法可以配置 Tesseract 以在我指定的位置查找此文件?例如在与 tesseract.exe 相同的文件夹中。我不想(或者可能无法)使用 AIR 安装程序安装应用程序。我已经用 3.0 版本和最新的 SVN 版本进行了尝试。

谢谢

4

3 回答 3

12

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

导出 TESSDATA_PREFIX=/usr/local/share/

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

于 2011-08-05T16:56:27.277 回答
3

我建议您不要通过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")
于 2017-05-28T01:24:15.640 回答
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 目录中打包东西了

于 2011-08-05T18:24:10.860 回答