Engineer Llfe Dogear

エンジニアリング活動におけるメモやTipsを書くブログ

TesseractをVS2013で動かす

仕事で、TesseractをVS2013で動かす必要があり、VS2013でビルドするなど少し手間がかかりましたので、その手順をメモとして残します。 TesseractはVS2008、VS2010用のLibは存在するのですが、VS2013のものはないようです。 手順に関しては、以下を参考にしました。 http://vorba.ch/2014/tesseract-3.03-vs2013.html

構築手順

  1. vs2013対応のtesseract関連ファイルの取得
    • Cドライブ直下にTesseract-Buildディレクトを作成し、移動
    • ファイルの取得
      • git clone https://github.com/tesseract4java/tesseract-vs2013
  2. 関連ファイルのbuild

    • VS2013のコメンドラインを開く
    • C:¥Tesseract-Build¥tesseract-vs2013へ移動
    • msbuild build.proj を実行
      • ※ 私の場合は、ここで定義したtypedefが利用できないというエラーが発生
      • 発生したファイルをutf-8で保存 or エラー箇所のテキストのインデントなどを修正したらエラーが直りました
    • C:¥Tesseract-Build¥tesseract-vs2013¥releaseにincludeとlibディレクトリとファイルができていることを確認
  3. Tesseractのbuild

    • C:¥Tesseract-Buildに移動
    • tesseractのソースコードをチェックアウト
      • git clone https://code.google.com/p/tesseract-ocr/
    • C:¥Tesseract-Build¥tesseract-ocrへ移動
    • C:¥Tesseract-Build¥tesseract-vs2013にあるパッチファイルを適用
      • git apply ..¥tesseract-vs2013¥vs2013+64bit_support.pach
      • ※ vs2013+64bit_support-git.pathというファイルもあるが、これはsvn用のpatch(名前ミス?)
    • C:¥Tesseract-Build¥tesseract-ocr¥vs2013ディレクトリとslnファイルができていることを確認
    • C:¥Tesseract-Build¥tesseract-vs2013¥release以下のincludeとlibディレクトリをC:¥Tesseract-Build直下へコピー
    • C:¥Tesseract-Build¥tesseract-ocr¥vs2013以下のslnファイルを開く
    • DLL_DEBUG、DLL_Release、LIB_Debug、LIB_Releaseのそれぞれの構成でbuild
      • ※ このとき。equationdetect.cppでエラーが発生
      • このファイルをutf-8で保存しなおして解決(自分のVS2013の文字コード設定が問題かも)
    • C:¥Tesseract-Build¥tesseract-ocr¥vs2013¥bin¥Win32に各構成のlib、dllがあることを確認
  4. VS2013用のlib、dll、includeファイルの配置
    ※ lib、dll、includeファイルの配置は任意のディレクトリとなります。

    • Cドライブ直下に、Tesseract_vc12ディレクトリを作成
    • C:¥Tesseract_vc12に移動し、include、libディレクトリを作成
    • C:¥Tesseract-Build¥tesseract-vs2013¥release¥include以下のファイルすべてをC:¥Tesseract_vc12¥includeディレクトリにコピー
    • C:¥Tesseract-Build¥tesseract-vs2013¥release¥lib¥Win32以下のファイルすべてをC:¥Tesseract_vc12¥libディレクトリにコピー
    • C:¥Tesseract_vc12¥include¥tesseractディレクトリを作成
    • C:¥Tesseract-Build¥tesseract-ocr以下のディレクトのファイルをC:¥Tesseract_vc12¥include¥tesseractにコピー
  5. VS2013へのinclude、libの設定

    • VS2013プロジェクトの作成
    • ソリューションエクスプローラからプロジェクトを選択し、右クリック > プロパティの選択
    • 構成プロパティ > VC++ディレクトリを選択
    • インクルードディレクトリに以下を追加
      • C:¥Tesseract_vc12¥include
      • C:¥Tesseract_vc12¥include¥leptonica
      • C:¥Tesseract_vc12¥include¥tesseract
    • ライブラリディレクトリに以下を追加
      • C:¥Tesseract_vc12¥lib
  6. Tessearctを使ったサンプルの作成と実行
    OcrSample.cppとして以下のソースコードを追加

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main(int argc, char* argv[])
{
    tesseract::TessBaseAPI *baseAPI = new tesseract::TessBaseAPI();
    if (baseAPI->Init(NULL, "eng")) {
        printf("Could not initialize tesseract.\n");
        exit(1);
    }

    Pix *pix = pixRead("sample.jpg");
    baseAPI->SetImage(pix);

    char* outText = baseAPI->GetUTF8Text();
    printf("recognized text: %s", outText);

    baseAPI->Clear();
    baseAPI->End();
    delete[] outText;
    pixDestroy(&pix);

    return 0;
}

実行して、読み込んだ画像中の文字がコンソールに表示されれば成功です。