作りたいアプリでTesseract-OCRを使うことになりました。
このライブラリにはAndroidバイナリがないため、Androidで使うためには独自にビルドが必要ですが、ビルドはどうもLinuxでしかできない(Cygwinではできない)らしいので、Linuxに開発環境を構築しなければいけなくなりました。
Linuxが絡むと大体泥沼にはまるのがわたしの常なのでLinuxには触れたくなかったのですが・・・。他にないのでしかたがない。
で、とりあえずWindows 8のHyper-VにCent OSを入れてみました。なぜCent OSなのかというと、Hyper-V 統合サービス(Linux Integration )というHyper-V用のサービスがMicrosoftより提供されていて、これがCent OSに対応しているため。スナップショットをとっておけばまずくなったときに復元できるので、比較的気は楽です。
で、とりあえずTesseract-OCRのビルドに成功。いろいろ右往左往したのであんまり覚えてないところもありますが、ひとまず手順をメモします。
Cent OS環境の構築
とりあえず環境を構築しLinux統合サービスをインストールするまではレガシーなネットワークアダプタしか使えず再設定の手間が生じるため、そこまでは一切ネットワークに接続しないつもりで。
- ひとまず、Cent OSのISOイメージを入手します。minimal.isoで構わないと思います。
- 仮想マシンを作成します。Hyper-Vマネージャーを起動して、仮想マシンの新規作成を行います。
- セットアップするISOイメージにISOイメージを設定します。
- 仮想マシンを起動し、画面の指示の通りにインストール処理を進める(メッセージは英語のみですが、ちゃんと読んで理解できるレベルだったと思います)
- インストールできたら、こちらの記事を参考にLinux統合サービスをインストールします。NICは何も刺さっていない状態になっていると思うので、Linux統合サービスまでで構いません。
ここまで終わったらいったん仮想マシンをシャットダウンします。この辺でスナップショットを作っておくと良いでしょう。
仮想マシンの最低限の設定を行う
仮想マシンをネットに繋げるようにして、Cent OS標準アプリインストールサービスyumを使えるようにします。
- 仮想マシンの電源を切った状態で、設定画面を開きます。
- ネットワークアダプタを設定します。有線LAN接続の場合はそれぞれに該当するアダプタ、無線LAN接続の場合は先に作成した無線LAN用のアダプタを指定します。
- 仮想マシンの電源を入れて、次の三つのファイルを編集します。この辺は環境によって値が大きく変わる部分ですので、各自検索の上使用されることをお勧めします。なお、DHCPサーバを使うと色々と面倒になりますので独自でIPアドレスを指定してしまうのがオススメです。
- /etc/resolv.conf(なお、特にDNSサーバが近くに無い場合はデフォルトゲートウェイと同じ(ルータ)のIPアドレスを指定しても大丈夫かも?)
- /etc/sysconfig/network-scripts/ifcfg-eth0
- /etc/sysconfig/
- 設定が終わったら一度仮想マシンごと再起動させて、次のアプリをインストール(なお、Cent OSにはSSHが最初からインストールされていますので、このあたりからはSSHクライアントを使って操作しても良いはずです。Poderosaなどだと文字の選択や複数コンソールの表示も出来るようになりますので便利です)
- ant(yumのantはバージョンが古いので、CentOSにantをインストール|個人的な技術メモなどを参考に最新版をインストールする必要があります)
- java(yumでインストールできるJAVAはOpenJDKのため、出来るバイナリがちょこっとずつ違って幸せになれません。インストールはJDK 7u7をCentOSにインストールする手順 - memo.yomukaku.netなどを参照。エラーっぽい文章は出ていますがひとまず気にしなくても良いっぽい)
- make
- gcc
- git
Android SDK/NDKのインストール
GoogleからLinux用のSDK/NDKバイナリを入手します。入手したものはConfigure Android SDK on CentOS 6 x86_64 - echocat - echocatなどを参考に展開・配置します。
GUIを使わないでセットアップする方法はAndroidの会のMLにありました。次のコマンドを利用します。
android update sdk -t platform -u android update sdk -u
結構時間がかかるのでお茶でも飲んで待ちましょう。
とりあえずここまででAndroid SDKのビルド環境は完成しました。いろいろ迷走の上書いているのでどこか抜けているところはあるかもしれません。
とりあえず分からないところがあればTwitterなどで聞いていただければ答えられるかもしれません。
Tesseract-OCRの動作についてはとりあえずビルドはで来たもののうまく動作していない状態(エラーは出さないものの動作もしない状態)。まだうまく出来てないので、でき次第書こうかと思います。