クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

Google Cloud functionsで、Cloud Vision APIを #gcpja


Google Cloud Functionsで、Cloud Vision APIを使ってみました。Cloud Functionsを使う利点は、credentialsをアプリに埋め込む必要がない点(内部でAWSだとIAM Role的にcredentialsを取得してくれる。)

まず、ディレクトリの作成。

 mkdir visiontest; cd visiontest;

次に、ライブラリのインストール。node versionは、v0.12.7を使用。

 npm install --save gcloud 

node.jsのvision APIは以下を参照

https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.36.0/vision?method=detectText

Cloud functionsのコードサンプルは以下になります。


var gcloud = require('gcloud')({
projectId: 'xxxxxxxxxx'
});

exports.visiontest = function (context, data){
var vision = gcloud.vision();
if ( data != null ){
var gcs = gcloud.storage();
var myBucket = gcs.bucket('vision-load-image');
var file = myBucket.file(data.name);

vision.detectText(file, function(err, text, apiResponse) {
console.log('text ', text);
data = null;

});
}
context.success();
}

functionsをデプロイ。

gcloud alpha functions deploy visiontest --bucket deploy-bucket --trigger-gs-uri vision-load-image

以前デジカメで撮影した画像をGCSバケットにアップロード。

IMAG0105

gsutil cp IMAG0105.jpg gs://vision-load-image/

Stackdriver loggingに、解析結果が表示されることがわかります。おもけに、精度も高い。コマンドでアップロードする場合は、1度のみ実行されるのだが、Cyberduckで画像ファイルをドラッグドロップすると、なぜうか2回functionsが実行される。

stackdriverlog

GCSに登録された画像を画像解析結果をBigQueryに蓄積していくようなことが可能になります。

安価なOCRシステムが構築できる!?チュートリアルも公開されています。

https://cloud.google.com/functions/docs/tutorials/ocr

今はまだnodeのAPIが公開されていないSpeech APIもよくよくは使えるようになるのかなあ。(GCSに音声ファイルをアップロードすると、音声ファイルを解析して結果を返すとか)

2016/9/22 Update

packages.jsonをデプロイするフォルダに置いておけば、npm install –save gloud等不要です。0.29.0からVision APIのfunctionが使えるようです。

{
"name": "visiontest",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"gcloud": "^0.37.0",
"node-uuid": "^1.4.7"
}
}

コメントは受け付けていません。