SHOTech Blog

プログラミングに関する記録です

Google ML Kit サンプルを動かしてみた(OCR)

google I/O 2018 で発表されたモバイル向けの機械学習SDKであるML Kitのサンプルがあったので試してみました。

今回使用したサンプルはコードラボで提供されているORCのサンプルです

Recognize text in images with ML Kit for Firebase

とりあえず動かしてみたいだけなので中身のコードについては今回は修正しません。

 

まんまビルドしてAPKファイル作って、手持ちのXperia XZにインストールして実行してみるところまでです。

 

今回OCRにかける画像はこちら

f:id:syota-y1989:20180521122447j:plain

 

 

サンプルをダウンロード

 

f:id:syota-y1989:20180521122813j:plain

緑のリンク「Download source code」からソースコードを入手します。

今回は「text-recognition」の「final」の方を使います。

Firebase上でプロジェクトを作るでjsonファイルをゲット

f:id:syota-y1989:20180521123140j:plain

コンソールを開いたら、新しいプロジェクトを作成しろと書いてあるので、

その通りに作成。とりあえず名前も一緒にします。

f:id:syota-y1989:20180521123244j:plain

f:id:syota-y1989:20180521123516j:plain

これでプロジェクトが作成された。

f:id:syota-y1989:20180521123801j:plain

 

OverviewからAndroidアプリを追加して、パッケージ名を入力します。

f:id:syota-y1989:20180521124237j:plain

画面左上の「Project Overview」をクリックすると、右の画面真ん中に「AndroidアプリにFirebaseを追加」とあるのでそれをクリック

f:id:syota-y1989:20180521124323j:plain

パッケージ名を入れて「アプリ登録」

f:id:syota-y1989:20180521124533j:plain

jsonファイルをダウンロードして「app」のディレクトリにコピーしろとあるのでその通りに実行します。

f:id:syota-y1989:20180521124754j:plain

f:id:syota-y1989:20180521124937j:plain

こんな感じで追加完了。

プラグインを追加

f:id:syota-y1989:20180521125057j:plain

「app」ディレクトリの「build.gradle」を修正して同期しろと記載してあるのでその通りに実行

f:id:syota-y1989:20180521125520j:plain

修正すると画面の右上に「Sync now」と出てるのでそれをクリック

f:id:syota-y1989:20180521125736j:plain

イベントログに「Gradle build finished 」と出てるので完了

実行してみる

f:id:syota-y1989:20180521125936j:plain

finalを使ってる場合は、テキスト認識のロジックが既に追加済みなので、

エミュレータで動かすと実行できます。

さっそくRunしてみる

f:id:syota-y1989:20180521130107j:plain

動いた。「FIND TEXT」を押してみる

f:id:syota-y1989:20180521130205j:plain

ちょっと見にくいですが、ちゃんとできているようです。

 

f:id:syota-y1989:20180521134155j:plain

では、今回読み込ませたい画像を処理できるようにしたいと思いますが、

どうもこのサンプルは完全にアセットに含めてファイル名固定で使用しているようです。

ソースを修正するのは面倒なので、同じファイル名で上書きしてアセットに追加しようと思います。

f:id:syota-y1989:20180521134307j:plain

ファイル「non-latin.jpg」の画像を熊本城に置き換えました。

実機用にAPKファイルを作成

f:id:syota-y1989:20180521134459j:plain

Xperia XZはAndroid8.0なので、コンパイルSDKバージョンを8.0にします。

f:id:syota-y1989:20180521134619j:plain

ついでに、MinとTargetのSDKバージョンも8.0にします

f:id:syota-y1989:20180521134755j:plain

Build>Build APKでこのままAPKファイルを作成します。

PCと繋いでる場合はAPKファイルを作る必要はないのですが、

現在出張先でPCと接続できないためAPKファイルを作っています。(USB忘れた)

f:id:syota-y1989:20180521135012j:plain

APKが出来ました。あとはこれを実機にインストール

 

f:id:syota-y1989:20180521195412p:plain

f:id:syota-y1989:20180521195438p:plain

読み込ませた画像が表示できたので、「FIND TEXT」をタップ

f:id:syota-y1989:20180521195522p:plain

表示領域がなんか被ってますが、まあサンプルなのでとやかくはいうまい。

日本語が検知できていないのは単純にまだ対応していなかっただけだと記憶しています。(間違っていたらごめんなさい)

学習モデルの中身は全く見てないので、今のところ完全にブラックボックスも良いところですが、逆に言うと中身のロジックを知らなくても使えるということなので、この手軽さは良いですね。

大半の人はモデルを作るより、作ったモデルで何かをしたいはずなので。

 

f:id:syota-y1989:20180521200341j:plain

starterの場合はこのように「ToDo」という形で処理が省略されているので後続のステップに従って追加していく必要があります。

ちなみに、クラウドとオンデバイスでは精度とラベルの数などいろいろと違いがあるようです。

今回はとりあえずここまで。

 

追記:クラウドの方のFIND TEXTがなんか動いてなさそう。後続も読めって事のようですね。まあいいや。