Google Cloud Vision/APIをPowerPlatform/Automateから呼び出し利用できそうか調査確認

以下GCP、Cloud Vision OCR機能確認。
最終目的:PowerAutomateから呼び出し利用可能可能か?→基本不可(本番利用は非現実的)と判明

<技術情報>
https://cloud.google.com/vision/docs/ocr

<GCP環境セットアップ準備>
デフォルトプロジェクトと別のプロジェクト上でCloudVisionのAPI利用有効化して、そのAPIアカウントでアクセスしないと成功しなかった。

GCPアクセス:https://console.cloud.google.com/

プロジェクトA作成 → デフォルトに設定
別プロジェクトB作成 → こちらでAPIアクセス実施
fault Credentials. The vision.googleapis.com API requires a quota project, which is not set by default

Cloud Vision API有効化
Crendentail設定:OAuth2.0 Client IDs作成、API Keyも作成可能だが、CloudVision/OCRのAPIでは少なくとも使えない。

Client SecretsのJSONファイルダウンロード:ProjectAとB両方
別プロジェクトBのJSONファイル配置場所をOS環境変数(GOOGLE_APPLICATION_CREDENTIALS)に設定
 ex) C:\tmp\client_secret_xxxx
gcloud auth print-access-tokenにてトークン値を確認

gcloud init
gcloud auth login
gcloud auth application-default set-quota-project プロジェクトA
gcloud auth list

<API動作確認>

1)Googleスクリプト:以下テスト→動作OK
gcloud ml vision detect-text gs://test-kmt001/test01.jpg

2)Curl・HTTP
①内部ストレージ画像:成功
curl -X POST -H "Authorization: Bearer アクセストークン値(プロジェクトAのCredentail)" -H "x-goog-user-project: プロジェクトB" -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://vision.googleapis.com/v1/images:annotate"
※アクセストークンはデフォルトプロジェクトAの値を利用

以下はUTF-8でなくてもSJISでもOKだった模様
request.json
{
"requests": [
{
"image": {
"source": {
"imageUri": "gs://test-kmt001/test01.jpg"
}
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}

②画像を投げる:最後なんとか成功
curl -X POST -H "Authorization: Bearer アクセストークン値" -H "x-goog-user-project: プロジェクトB" -H "Content-Type: application/json; charset=utf-8" -d @request2.json "https://vision.googleapis.com/v1/images:annotate"

request2.json
{
"requests": [
{
"image": {
"content": "BASE64_ENCODED_IMAGE"
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}

Base64化は以下コマンドで実施
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE

<わかったこと>
HTTPアクセス可能だが、以下の理由によりPowerAutomateのHTTPアクションからはCloudCloudVisionAPIうまく呼び出し利用できない。
①アクセストークン値が静的でなく1H毎に再取得、都度値を変えないといけない
https://cloud.google.com/docs/authentication/token-types?hl=ja#access
アクセス トークンの有効期間は 1 時間
また、アクセストークン値はGoogleコマンドで都度確認必要
gcloud auth print-access-token

②APIキーはOCR機能では少なくとも使えない。以下試してみたがエラーとなる
curl -X POST https://vision.googleapis.com/v1/images:annotate?key=APIキー値 -d @request.json


この記事が気に入ったらサポートをしてみませんか?