Edited at

OpenCVのOCR(tesseract-ocr)をWindows(64bit)、C++で使う

tesseract-ocrのビルドに苦労したので記載


使うもの(バージョン)


CMakeインストール

Windowsでよく使われるであろうMakeツール。

CMakeのダウンロードから環境にあったものをインストール。 (今回は「Windows win64-x64 Installer」)

インストーラで聞かれるけど環境変数のPATHはお好みで


CPPANインストール

必要なライブラリをまとめてダウンロード&ビルドするツール?

情報が少なくてよくわからん。

CPPANのインデックスからcppan-master-Windows-client.zipをダウンロード&解凍すれば良い。

こちらも環境変数のPATHを・・・


tesseract-ocrビルド


ダウンロード


ビルド手順(tesseractの展開先で実行)


  • cppan.ymlの以下コメントを外し、インストールされているVisual Studioに合わせて変更。


cppan.yml(変更前)

local_settings:

#use_shared_libs: true
#generator: Visual Studio 14 2015 Win64


cppan.yml

local_settings:

#use_shared_libs: true
generator: Visual Studio 15 2017 Win64


  • 以下コマンドをコマンドプロンプトで実行(管理者)

mkdir build && cd build

cppan ..
cmake .. -G "Visual Studio 15 2017 Win64"
cppan --generate .


  • コントロールパネルの地域「管理->システムロケールの変更」から「英語(英国)」を選択して再起動(日本語だとビルドが失敗する)

  • Visual Studioでbuildフォルダに作成されたtesseract.slnを開いてビルド(Debug、Release)

  • ビルドが完了したら日本語に戻していい


インストール


  • buildフォルダにあるcmake_install.cmakeで以下のインストール設定を変更(「C:/Program Files」に権限なくて失敗する)


cmake_install.cmake

# Set the install prefix

if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "C:/tesseract")


  • Visual Studioでbuildフォルダのtesseract.slnを開いてINSTALLプロジェクトのみビルド(Debug、Release)


OpenCVビルド


ダウンロード


ビルド手順


  • CMakeのGUIツールを起動

  • source codeに解凍したopencvフォルダを指定

  • build the binariesにVisual Studioのソリューション作成先フォルダを指定

  • Configureを実行

  • OPENCV_EXTRA_MODULES_PATHに解凍したopenCV_contribのmodulesフォルダを指定

  • 再度Configureを実行

  • contribモジュールが読み込まれるのでBUILD_***となっているモジュールをBUILD_text以外チェックを外す(今回はOCRのみ使用)

  • インストールしたtesseractの設定を以下のように指定する(C:/tesseractにインストールしたとする)

Lept_LIBRARY=C:/tesseract/lib/pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib

Tesseract_INCLUDE_DIR=C:/tesseract/include
Tesseract_LIBRARY=C:/tesseract/lib/tesseract305.lib


  • Configure実行後、Generateでソリューションファイルを作成


  • Visual Studioでbuildフォルダに作成されたtesseract.slnを開いてReleaseビルド(Debugでビルドする場合はtesseract305d.libを指定)



インストール


  • buildフォルダにあるcmake_install.cmakeで以下のインストール設定を変更(「C:/Program Files」に権限なくて失敗する)


cmake_install.cmake

# Set the install prefix

if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "C:/opencv")


  • Visual Studioでbuildフォルダのtesseract.slnを開いてINSTALLプロジェクトのみReleaseビルド(Debugもしているならそちらも実行)


使うための設定

Visual Studioで使用するための設定(プロジェクトのプロパティ)

- 構成プロパティ > デバッグ > 環境に「PATH=C:\opencv\x64\vc15\bin;C:\tesseract\bin;%PATH%」

- 構成プロパティ > VC++ディレクトリ > インクルードディレクトリに「C:\opencv\include」

- 構成プロパティ > VC++ディレクトリ > ライブラリディレクトリに「C:\opencv\x64\vc15\lib」

- 構成プロパティ > リンカー > 入力 > 追加の依存ファイルにC:\opencv\x64\vc15\lib内にあるlibファイルをすべて指定


参考