画像認識APIを利用するには
では次に、実際のアプリで画像認識APIのSDKを利用してみましょう。
画像認識API
画像認識APIは、公開されたばかりの最新APIで、画像に写っている物を認識、解析して、その名称などの情報を取得することができます。
認識できるものは、書籍やDVD、CD、PCソフト、ゲームソフト、食品パッケージといった商品です。現在、500万件以上の市販品情報が登録されていて、その名称や関連情報のWebページURL、認識の確からしさを表すスコアなども取得可能です。
画像認識では、3つのAPIが利用できます。
API名 | 処理内容 |
---|---|
画像認識 | 画像に写る商品を認識し、名称を含む商品情報を返却する。 |
認識結果の候補全体に対するフィードバック | 画像認識の結果一覧が妥当だったか否かをフィードバックする。 |
認識結果の各候補に対するフィードバック | 画像認識の個々の結果が妥当だったか否かをフィードバックする。 |
なお認識できる画像ファイルは、JPEG、PNG、GIF、BMP、TIFF形式で、サイズの上限は10MBです。推奨画像サイズは、VGA(640×480)相当ということですが、スマートフォンで撮影した画像程度なら、そのまま処理できるようです。
SDK
画像認識APIのSDKは、APIのページからダウンロードすることができます。
提供されているファイル(執筆時点では、Image_Recognition_SDK_for_Android_v1.0.0.zip)には、ライブラリ本体に、サンプルアプリ、利用ガイドなどが含まれています。
利用ガイド(画像認識SDK for Android利用ガイド_v1.0.0.pdf)には、SDKの使い方が詳しく載っていますので、実際のAPI利用の際には、併せて参考にしてください。
ライブラリについて
SDKで提供されるライブラリファイルは、次のようなファイルで構成されています。
ファイル名 | ライブラリ概要 |
---|---|
docomo-common-android-sdk-1.0.1.jar | docomo SDK共通ライブラリ |
docomo-imagerecognition-android-sdk-1.0.0.jar | 画像認識ライブラリ |
jackson-annotations-2.2.3.jar | Jacksonライブラリ |
jackson-core-2.2.3.jar | 〃 |
jackson-databind-2.2.3.jar | 〃 |
画像認識API用の他に、JSONデータを扱うためのオープンソースライブラリである、Jacksonライブラリが含まれています。
サンプルアプリ
SDKには、サンプルアプリも含まれています。まずは、このサンプルをビルドしてみましょう。サンプルアプリは、Eclipseのプロジェクトとして提供されています。SDKのsampleフォルダにzipファイルがありますので、解凍して、Eclipseにインポートします。
プロジェクトのlibsフォルダには、前述のライブラリファイルが含まれています。プロジェクトからSDKのライブラリを使うには、このように、libsフォルダにコピーするだけです。
APIキーの設定とAPIの実行手順
このアプリを実行するには、先ほど取得したAPIキーの設定が必要です。APIキーは、プロジェクトのRecognitionActivity.javaにある、RecognitionActivityクラスのフィールドに設定します。
// API キー static final String APIKEY = "";
画像認識APIには3つの処理がありますが、いずれも同様のコードで実行することができます。メインとなる画像認識は、次のようなコードで情報を取得できます。resultDataに、結果のJSONデータが格納されていますので、必要に応じて、そのデータから情報を抽出します。
// 画像認識クラスを作成する ImageRecognition recognize = new ImageRecognition(); // 画像認識リクエストデータクラスを用いてパラメータを設定する ImageRecognitionRequestParam requestParam = new ImageRecognitionRequestParam(); requestParam.setRecog(Recog.ALL); requestParam.setFilePath(画像ファイル名); // 画像認識クラスにリクエストデータを渡し、レスポンスデータを取得する ImageRecognitionResultData resultData = recognize.request(requestParam);