Tesseract-изменить расположение языкового файла

Я делаю проект AIR, который потребует некоторых возможностей OCR, поэтому я решил использовать tesseract (теперь я пытаюсь заставить его работать на Windows).

моя проблема в том, что не удается изменить расположение языкового файла - он всегда пытается посмотреть в моем каталоге установки Tesseract (program files (x86)Tesseract-OCRtessdatamylang.traineddata)

есть ли способ настроить Tesseract для поиска этого файла, где я указываю? например в том же папка как Тессеракт.исполняемый. Я не хочу (или, возможно, событие не может) установить приложение с установщиком AIR. Я пробовал это с версией 3.0 и последней версией SVN.

спасибо

3 ответов


Да, вы можете, установив переменную среды TESSDATA_PREFIX, например:

экспорт TESSDATA_PREFIX= / usr / local/share/

обратите внимание, что путь к каталогу должен заканчиваться на /.


Я решил проблему, переписав исходный код Tesseract (im, используя SVN 597). Как сказал nguyenq, Tesseract пытается искать данные по пути, заданному переменной среды TESSDATA_PREFIX. Если это не найдено, то это делает какой-то обман, который я не понимаю :) . Поэтому, если кому-то нужна портативная версия Tesseract (которая не зависит от установки Tesseract), отредактируйте mainblk.cpp вокруг строки 60, это моя версия:

// 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 directory


Я предлагаю вам не справиться путь к tessdata TESSDATA_PREFIX. вы можете определить путь tessdata в init tesseract. Если вы используете Тессеракт.exe в командной строке используется следующий синтаксис:

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

Если вы используете Тессеракт:: TessBaseApi, в api.метод init() инициализации следующим образом:

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