読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

ImageIdentifyをREST APIとして使う

Twitter友達からWolfram Language Image Identification Projectを教えていただきました。こんな記事がありますね。

http://gigazine.net/news/20150527-wolfram-language-image-identification-project/

で、これをREST APIとして使えるかどうか調査しました。結果は「できる」です。

Wolfram Language Image Identification Projectは、よくわかりませんが、Wolfram Programming Cloudの実力を示すデモサイトのようです。

https://programming.wolframcloud.com/app/

以下、登録が終わってサインインして、新しいノートブックが使えるようになった状態から、 Image Identification REST APIを作る手順です。

1. 画像URLから識別を行う関数を定義する

f[url_]:=Module[{image=Import[url]},ImageIdentify[image]]

(入力を評価するには、Shift + returnです。)

2. 定義した関数でREST APIをデプロイする

api = CloudDeploy[APIFunction[{"url"->"String"}, f[#url]&,"JPG"]]

入力を評価すると、デプロイされたURLが表示されます。

3. REST APIパーミッションをPublicにする
(デフォルトではPrivateです)

SetOptions[api, Permissions->"Public"]

以上で出来上がりです。
2で取得したURLに?url=<特定したい写真のURLをURLエスケープしたもの>を足してアクセスすると、特定結果が得られます。


直接、写真データをPOSTして得られるようにしたかったのですが、Wolfram言語は今のところ、RESET APIに関してGETしかサポートしていないようです。