2015年5月22日金曜日

Ingress 「Agent Stats」がデータアップ時サーバエラーで使えないので。。 tesseract-ocrのビルド

Ingress用のAndroidの「Agent Stats」ですが、Ingressのprofileのスクリーンショットを共有でサーバサイトに送信するとOCRで読み取ってくれて、実績を管理してくれるのですが、
人気なのかサーバ過負荷だと思いますが、エラーで全然認識してくれません。><

(本記事は、一般向けではありませんので、「Agent Stats」で検索して来られた方は、
お役に立ちません。すみません。アプリが完成すれば別ですが。)


そこで、自分で作ってみることにしました。「Agent Stats」はサーバサイドでOCRで読み取って
いますが、今回はAndroid端末側でOCR機能を入れて読み取れないかまず試してみました。

第一ステップ:Android端末の方でOCR認識して、データを文字列に置き換えてできるか。
まず、AndroidでOCRライブラリーを探したところ、
https://github.com/rmtheis/tess-two
があり、ネイティブコード(C/C++)で作られています。jniですので、Android NDKが必要になります。
NDKは、Windowsでは面倒くさいので、Linux(CentOS7)上でコンパイル環境を構築することにします。

【ndk-build環境の構築】CentOS7

1.Android NDKのインストール
 1) wget http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin
 2) chmod +x android-ndk-r10e-linux-x86_64.bin
 3) android-ndk-r10e-linux-x86_64.bin
 4) mv android-ndk-r10e /usr/local/
 5) echo 'export PATH=$PATH:/usr/local/android-ndk-r10e' >> .bashrc
 6) echo 'export NDKROOT=/usr/local/android-ndk-r10e' >> .bashrc

2.Android SDKのインストール
 1) wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
 2) tar zxvf android-sdk_r24.2-linux.tgz
 3) mv android-sdk-linux /usr/local/
 4) echo 'export PATH=$PATH:/usr/local/android-sdk-linux/tools/' >> .bashrc
 5) echo 'export PATH=$PATH:/usr/local/android-sdk-linux/platforms' >> .bashrc

3.その他必要モジュール
 ビルド時、/usr/local/android-sdk-linux/build-tools/22.0.1/aapt実行時に必要
 モジュールがなくエラーが出る場合は、必要なモジュールをインストールすること。
 私の環境では、以下3つが必要でした。

  1) yum install ld-linux.so.2
  2) yum install libz.so.1
  3) yum install libstdc++.so.6

【tesseract-ocrのビルド】 作者に感謝。

 1) git clone git://github.com/rmtheis/tess-two tess
 2) cd tess
 3) cd tess-two
 4) ndk-build
 5) android update project --path .
 6) ant release

 成功すると以下にオブジェクトが出来ます。
 ./bin/classes.jar
 ./libs/armeabi-v7a/liblept.so
                           /libtess.so
       /mips/liblept.so
               /libtess.so
       /x86/liblept.so
              /libtess.so

 以上をEclipsプロジェクトのlibsフォルダーにコピーすればもうOCR読み取り
 関数が使えます。

【OCR読み取りツール】EclipsはWindows上で開発しています。
  とりあえずこんな感じで、まずは文字が読めるかみました。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;

Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/Pictures/ingress/profile_20150507_202910_0.png", options);
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

Log.v(TAG, "-- START");

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.setDebug(true);
baseApi.init(DATA_PATH, lang);
baseApi.setImage(bitmap);

String recognizedText = baseApi.getUTF8Text();

baseApi.end();

Log.v(TAG, "-- END);

読み取り画像 テストアプリで読み取り後
すばらしい。読み取れてる!。読み取り時間は、ネイティブコードにしても8秒程度かかります。
(金色のグラディエーションが係ってるタグ欄は文字化けしているけどこれは読み取れなくともいいので)
使えることが分かったので、第二ステップ以降は時間のある時に作成します。
とりあえず、CSVにしてデータをメール転送ならさくっとできそうです。

OCR読み取りの作成部分は今後、仕事にも生かせそうです。


シンガポールの1$コイン

シンガポール旅行で、1$コイン2枚持ち帰りました。
円形の中に八角形の窪みがあり、マーライオンも刻印されています。
綺麗でお守りにもなるかもと、娘に1個あげました。

2013年度以降の新1$コイン


後で知ったのですが、会社の同僚より、風水を意識してデザインしており、
国民全員に風水羅盤の八卦図を持たせる代わりに、この1$コインをいきわたらせ、
結界を張っているとのことです。なので、これはお守り代わりにもなります!。

では、何の為に結界を張っているかといいますと、MRT(地下鉄)を国の中心部である
City Hall駅に通したら、「国の中心部に穴を掘って電車を通すと龍脈が乱れ国が傾く」と
風水師からの宣告があり、回避策として、国民に八卦図を持たせれば良いとの
ことでしたが、いろんな宗教の方がいる人たち全員に八卦図を持たせるわけにはいかず、
代わりに、コインにすれば全員持てるというアイデアでした。すばらしい!


2015年5月17日日曜日

Ingress 長距離リンク 失敗です。

Ingress 長距離リンク33km(私にとって長距離です。ベテランエージェントだと、なにそれですが。)を張ろうと思って、Ingress Intel Mapで確認して、電車&車で移動。
LINK張る段階で張れない><。MAPでは障害なかったはず。
でも、Ingress Intel Map見ると、ピンポイントで途中にLINKが形成されていました。朝にはなかったはずなのに、見落としたか。。


うわ!、見事にここだけピンポイントで被ってる。また今度トライします。

2015年5月16日土曜日

社員旅行 シンガポールIngress その2


社員旅行でシンガポール行ってきました。基本自由行動ですので、Ingressをやりたかったので、単独行動となりました。
(5/12機中泊-5/15)

シンガポール チャンギ空港でSIMカードを買ってネット回線を確保しています。
最初ネットで調べて、SingTel Hi! 4G Prepaid SIM (S$28)を皆さん使われていて、私も現地で、それを購入しようと頼んだのですが、
http://info.singtel.com/personal/phones-plans/mobile/prepaid/hitouristsimcards
のhi!Tourist SIM Cards 30$(7GB 10日有効)を勧められてそちらを購入しました。
アクティベートとかデータプランの申し込みなど面倒なこともする必要がありません。SIMフリー端末Nexus 5に差すだけです。(※結果的には、2GB 5日有効でも十分でしたが、ここでケチってingressできず、
google mapも見れなくなったら面倒なので、30$(7GB 10日有効)で良かったと思います。1日100Mぐらいしか使わなかった。)
このカードは、Facebook,Lineなどのパケット宛ては無料にしてくれます。

交通手段は、徒歩&電車です。プリペイドカードは、これも事前に調べてezlinkでMRTと路線バスに乗れるということで、これを改札口で購入しようとしたのですが、NETS FlashPayを勧められてそれを購入しました。(12$で保証金5$含まれます。)

5/14 2日目
1.Visiting NSU1
 朝の8:30からMTRにのって、CC4 プロムナードからCC24のケントリッジまで42分で着いた。
 シンガポール国立大学関連のミッションでNSU1~17までありますが、事情により1で断念。><
 現地は大学の建物群が多く、GPSのふらつき&ずれで、NSU1だけで40分以上費やしてしまった。

 
 
  ミッション中のOwl Statuedです。目の前にありますが、スキャナーの位置表示ではまだ北に100M離れていることに。。北に100M行っても範囲に入らず、その辺を徘徊して、あと5mの建物のいけるぎりぎりのところで待機。GPSのふらつきをまって偶然範囲にはいるまでまった。(3分)
この調子でやってると、他のNSUシリーズの目途が立たないので諦めことにした。なので散策&HACKに切り替えました。
  ミッション中には、Passphraseを入れる必要がある質問が1つあって、これはSchool of Medicine の名前は何かという質問だった。↓考え中。答えはこの雑誌の表紙にメモリました。
  
 
 とりあえず、NSU1だけでも満足。

2.School of Computing Cluster Dexterity Challenge
  
   
  このミッションは、この場所(大学より南の方角)までたどり着けば、簡単なはずなんですけど。範囲10mに9個ほどの密集するモニュメントをキャプチャー・アップグレードするだけで良いのですが、別な意味で苦戦しました。

 運良く全部中立のポータルになっていて、キャプチャーするだけで良かったのですが、
 密集し過ぎていて最後の中心の1個が選択できない。><
 ingress ver 1.76でタップした時に複数ある場合は、選択できるようにガイド表示される機能がちょうど
 付いたのですが、それでも表示されない。何度もタップしてやっと最後の1個を無事選択できた。
 ingress ver 1.76より前のバージョンの人でこれをクリアーした人はどうやったのだろうか?
 もしかして、ミッション破棄して何度かやり直して選択できるような順番を把握してやったのかも。

 [追記] ミッションの説明には、While it may look nearly impossible to capture these portals, it can be done. It takes time, monk-like patience and a crafty set of fingers to get it right.
「それはこれらのポータルをキャプチャすることはほぼ不可能に見えるかもしれないが、
可能です。それは時間、忍耐がいる。」
と記載されています。なので「熟練」というタイトルなのか。


ミッションはこれで終わり、この場所からCC24のケントリッジ駅まで戻りたかったのでですが、
私有地風の道路で行き止まりが多く、幹線に戻れず。><。その内、次の駅のCC25ハワ・パー・ヴィラの方が近いとMAPで知り、


Pasir Panjang Rd に出れたのでそこを下って行くと!!こんなところがあった!
ここのパーク内は、ポータルの宝庫でこれでもかってぐらいあります。中に入っていないので
道路側からキャプチャー、HUCKできるところやってきました。
なんか、外観が恐ろしくて一人では入る勇気はありませんでした。

帰国後、調べてみると、シンガポールの古くからの観光スポットとして知られる庭園。筋肉疲労などに効く軟膏タイガーバームで巨万の富を築いた胡兄弟によってつくられた「中国神話と伝説の庭園」をコンセプトにした庭園。微笑仏(みしょうぶつ)や福禄寿(ふくろくじゅ)の像でもよく知られている。◇旧称は「タイガーバームガーデン」。 by 世界の観光地名がわかる事典より。

これ知ってたら、入園してたと思います。
さすが、Ingress ! ノープラン&所見でもここまで誘導してくれます。

Pasir Panjang Rd脇にある木に、セミが鳴いていました。最初セミと気づかなかった。
木の下に工事用の何か機械のような物が置いてあってそれが警報音をならしているものと
ばかり思ってました。しかもその音が警報音が爆発残りタイマーのチ、チ、チが短くなっていくし
爆発すんじゃないかと、立ち止まったほどです。

で、よく聞いたら木の上の方ですので、セミだと思います。(セミを見たわけではないので。)

以上。お買い物、食事はご想像にお任せ致します。








社員旅行 シンガポールIngress その1

社員旅行でシンガポール行ってきました。基本自由行動ですので、Ingressをやりたかったので、単独行動となりました。
(5/12機中泊-5/15)

5/13 1日目
1.Marina Bay Sands 

チェクインは、15;00からで、午前7時には付いたので、とりあえずこのミッションをしました。
 GPSはふらついているので、その分面倒です。
 
2.A Sortie in Raffles City
   目的はその南にある、セント・アンドリュース大聖堂ですが、近くにミッションがあったので
 やりました。HACKのみのイージーなものです。
3.Journey to ESP
   このミッションは、複数集めるとメダルアートミッションになっていますが、とりえず1個だけ。





 ミッションの後、教会に行くのですが、白い教会が見えているけどたどり着けない><

 歩道が途切れているし。(工事中で)なんとかぐるっと回ってたどりつけた。
 中に入って、休息&お祈り。(↑セント・アンドリュース大聖堂)

  途中ポータルは山のようにあるので、HACKしながら観光 (観光ガイドにもなるのでいいですね。Ingress!)
 
 (↑War Memorial Park) この日は塔のペンキ塗り替え作業が行われていました。


 15:00にMarina Bay Sandsホテルに戻ってチェックイン部屋は17階でした。
  例の57階のプールでゆっくりと過ごしたかったので、15:00に戻ったのですが、ここでちょっとやらかしてしまいました。
 スマフォ用の外バッテリー等を充電したくて、ベット脇のBF変換コネクターで2Pのコンセントに変換して付けたところ、バシッといってショートさせてしまいました。クーラー等すべて電源ダウン。
そう、ブレーカーが落ちた><。
 フロントに電話して、電源ダウンしたので、復旧させて欲しいと連絡。すぐ直しに行くので、
待っていてねと指示を受けた。
 10分ぐらいして、工事屋さん風のお兄さんが来たので、BF変換コネクターをみせて、power down。 お兄さんはブレーカを復旧させて、BF変換コネクターは使わず、ここに直接指してと
指示されました。(※尚ジェスチャー&片言の英語での会話です。)
 
ここで終われば良かったのですが、電気が分かる人間(私)は余計なことをしてしまいます。
さっきのBF変換コネクターはだめだったけど、もう一個違うのも持ってきたのでこれは大丈夫
だろうと・・・。ダメでした再度ショート&ブレーカダウン。頭の中で57階のプールで優雅にが遠のいていく。。。
再度、フロントに電話。どういうのこれ、power down。。フロント曰く先ほど直しに行ったので、
大丈夫と、いやまたやってしまったので、please repair again. ><
程なく、先ほどのお兄さんが来た。申し訳なく、もう一個のショートした変換コネクターを差し出しました。まあ、呆れた表情でしたがブレーカを直してくれて、transformer持ってくるのでそれまで何もするなと指示を受けました。
で、違うお兄さんが来て、transformerを付けて帰って行きました。(ここではconverterとは言わずに、transformerというらしい)
これで、100Vは問題なく使えます。

※ほんとはここまでする必要なく、2P用のコンセントが部屋にあるのでそこに直接指せばいいのです。

で既に、16:00になっていました。まあ、プールには夜に行きましたけどね。空いてます。





2015年5月12日火曜日

台風来る? シンガポールまで約5,000km 現地晴れ。 Ingress

シンガポールまで約5,000km 現地晴れ。今日の夜、シンガポールに旅行予定ですが、台風の影響で飛行機は飛ぶの?。現地ではIngressミッション予定。

未知の土地を歩くにはピッタリのアプリ、3D行先コンパスです。(作成者は私です。。)
Ingressで知らない道を、スキャナー上のポータルを頼りにぐるぐる回って歩いていると、方角を見失います。
方角に弱い(方向音痴ともいいますが;;)私としては、ingressのスキャナー上にコンパスが表示されていますが、いまいち現実の空間で北を認識できない時に、この3D行先コンパスを使うと、AR表示していますので、迷うことがありません。正にingressをする自分に最適です。!

2015年5月6日水曜日

INGRESS公式バッテリー INGRESS POWER CUBE 12,000mAh 購入しました。

もうINGRESSにはまり過ぎて、INGRESS公式バッテリー INGRESS POWER CUBE 12,000mAh 購入しました。(パズドラはランク464で引退しました。)
これで1日歩き回ってもバッテリー持つかと思います。^^
梱包の中にパスコード付きのカードが入っていていました。very レアアイテムのJARVISとADAです。(AXAが欲しいです。。)

INGRESSの現在のLEVELは7でもう一息で、目標のLEVEL 8です。
連休中はAP1.5倍、UltraStrike出現率2倍でだいぶAPを稼げました。
(来週のシンガポール旅行は楽しみです。それまでにLEVEL 8になってればベストなんですが。
ミッションしてきます。)