8

OCR機能が必要なAIRプロジェクトを作成しているので、tesseractを使用することにしました(現在、Windowsで動作させようとしています)。

私の問題は、言語ファイルの場所を変更できないことです-常にTesseractインストールディレクトリ(プログラムファイル(x86)\ Tesseract-OCR\tessdata\mylang.traineddata)を調べようとします

指定した場所でこのファイルを探すように Tesseract を構成する方法はありますか? たとえば、tesseract.exe と同じフォルダーにあります。AIR インストーラーを使用してアプリケーションをインストールしたくありません (またはできません)。3.0版と最新のSVN版で試してみました。

ありがとう

4

3 に答える 3

12

はい、TESSDATA_PREFIX 環境変数を設定することで可能です。

export TESSDATA_PREFIX=/usr/local/share/

ディレクトリ パスは / で終わる必要があることに注意してください。

于 2011-08-05T16:56:27.277 に答える
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 に答える