テキスト検出は、入力された動画内のテキストを検出して抽出する光学式文字認識(OCR)を実行します。
テキスト検出は、Cloud Vision API でサポートされているすべての言語で実行できます。
Cloud Storage 上の動画のテキスト検出をリクエストする
Cloud Storage に保存されたファイル上のテキストを検出するサンプルを以下に示します。
動画アノテーションリクエストを送信する
POST リクエストをvideos:annotate
メソッドに送信する方法を以下に示します。この例では、Google Cloud CLI を使用してアクセス トークンを生成します。gcloud CLI のインストール手順については、Video Intelligence API のクイックスタートをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- INPUT_URI: アノテーションを付けるファイルを含む Cloud Storage バケット(ファイル名を含む)。
gs://
で始まる必要があります。
例:"inputUri": "gs://cloud-videointelligence-demo/assistant.mp4",
- LANGUAGE_CODE:(省略可)例:「en-US」
- PROJECT_NUMBER: Google Cloud プロジェクトの数値識別子。
HTTP メソッドと URL:
POST https://videointelligence.googleapis.com/v1/videos:annotate
リクエストの本文(JSON):
{ "inputUri": "INPUT_URI ", "features": ["TEXT_DETECTION"], "videoContext": { "textDetectionConfig": { "languageHints": ["LANGUAGE_CODE "] } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID " }
レスポンスが成功すると、Video Intelligence API はオペレーションの name
を返します。上記はこのようなレスポンスの例です。project-number
はプロジェクトの番号、operation-id
はリクエストに対して作成された長時間実行オペレーションの ID です。
- PROJECT_NUMBER: プロジェクトの数
- LOCATION_ID: アノテーションを実行する Cloud リージョン。サポート対象のクラウド リージョンは
us-east1
、us-west1
、europe-west1
、asia-east1
です。リージョンを指定しないと、動画ファイルの場所に基づいてリージョンが決まります。 - OPERATION_ID: リクエストに対して作成され、オペレーション開始時にレスポンスで指定された長時間実行オペレーションの ID(例:
12345...
)
アノテーションの結果を取得する
オペレーションの結果を取得するには、次の例のように、動画アノテーションの呼び出しから返されたオペレーション名を使用して GET リクエストを行います。
リクエストのデータを使用する前に、次のように置き換えます。
- OPERATION_NAME: Video Intelligence API によって返されるオペレーションの名前。オペレーション名の形式は
projects/PROJECT_NUMBER/locations/LOCATION_ID/operations/OPERATION_ID
です。 - PROJECT_NUMBER: Google Cloud プロジェクトの数値識別子。
HTTP メソッドと URL:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
"textAnnotations": [ { "text": "Hair Salon", "segments": [ { "segment": { "startTimeOffset": "0.833333s", "endTimeOffset": "2.291666s" }, "confidence": 0.99438506, "frames": [ { "rotatedBoundingBox": { "vertices": [ { "x": 0.7015625, "y": 0.59583336 }, { "x": 0.7984375, "y": 0.59583336 }, { "x": 0.7984375, "y": 0.64166665 }, { "x": 0.7015625, "y": 0.64166665 } ] }, "timeOffset": "0.833333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.041666s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.250s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6319444 }, { "x": 0.70234376, "y": 0.6319444 } ] }, "timeOffset": "1.458333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.666666s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.875s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "2.083333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "2.291666s" } ] } ] }, { "text": "\"Sure, give me one second.\"", "segments": [ { "segment": { "startTimeOffset": "10.625s", "endTimeOffset": "13.333333s" }, "confidence": 0.98716676, "frames": [ { "rotatedBoundingBox": { "vertices": [ { "x": 0.60859376, "y": 0.59583336 }, { "x": 0.8952959, "y": 0.5903528 }, { "x": 0.89560676, "y": 0.6417387 }, { "x": 0.60890454, "y": 0.64721924 } ] }, "timeOffset": "10.625s" }, ... ] }
textAnnotations
リストとして返されます。
注: done フィールドは、値が True の場合にのみ返されます。オペレーションが完了していない場合、レスポンスには含まれません。
アノテーションの結果をダウンロードする
アノテーションを、送信元バケットから送信先バケットにコピーします(ファイルとオブジェクトのコピーをご覧ください)。
gcloud storage cp gcs_uri gs://my-bucket
注: 出力 GCS URI がユーザーによって指定された場合、アノテーションはその GCS URI に格納されます。
Video Intelligence への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Video Intelligence への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
Video Intelligence への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
C#: クライアント ライブラリ ページの C# の設定手順を実行してから、.NET の Video Intelligence のリファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を実行してから、PHP の Video Intelligence のリファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を実行してから、Ruby の Video Intelligence のリファレンス ドキュメントをご覧ください。
ローカル ファイルの動画のテキスト検出をリクエストする
次のサンプルは、ローカルに保存されたファイルのテキスト検出を示しています。
動画アノテーションリクエストを送信する
ローカル動画ファイルにアノテーションを付けるには、動画ファイルの内容を Base64 形式でエンコードします。
リクエストの inputContent
フィールドに Base64 形式でエンコードされたコンテンツを格納します。
動画ファイルのコンテンツを Base64 形式でエンコードする方法については、Base64 エンコードをご覧ください。
POST リクエストをvideos:annotate
メソッドに送信する方法を以下に示します。この例では、Google Cloud CLI を使用してアクセス トークンを生成します。
Google Cloud CLI のインストール手順については、Video Intelligence API のクイックスタートをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- "inputContent": BASE64_ENCODED_CONTENT
以下に例を示します。
"UklGRg41AwBBVkkgTElTVAwBAABoZHJsYXZpaDgAAAA1ggAAxPMBAAAAAAAQCAA..."
- LANGUAGE_CODE:(省略可)例:「en-US」
- PROJECT_NUMBER: Google Cloud プロジェクトの数値識別子。
HTTP メソッドと URL:
POST https://videointelligence.googleapis.com/v1/videos:annotate
リクエストの本文(JSON):
{ "inputContent": "BASE64_ENCODED_CONTENT ", "features": ["TEXT_DETECTION"], "videoContext": { "textDetectionConfig": { "languageHints": ["LANGUAGE_CODE "] } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://videointelligence.googleapis.com/v1/videos:annotate"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://videointelligence.googleapis.com/v1/videos:annotate" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION_ID /operations/OPERATION_ID " }
レスポンスが成功すると、Video Intelligence API はオペレーションの name
を返します。上記はこのようなレスポンスの例です。project-number
はプロジェクトの名前、operation-id
はリクエストに対して作成された長時間実行オペレーションの ID です。
- OPERATION_ID: オペレーションの開始時にレスポンスで提供されます(例:
12345...
)。
アノテーションの結果を取得する
オペレーションの結果を取得するには、次の例のように、動画アノテーションの呼び出しから返されたオペレーション名を使用して GET リクエストを行います。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_NUMBER: Google Cloud プロジェクトの数値識別子。
HTTP メソッドと URL:
GET https://videointelligence.googleapis.com/v1/OPERATION_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project:PROJECT_NUMBER " \
"https://videointelligence.googleapis.com/v1/OPERATION_NAME "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_NUMBER " }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://videointelligence.googleapis.com/v1/OPERATION_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
"textAnnotations": [ { "text": "Hair Salon", "segments": [ { "segment": { "startTimeOffset": "0.833333s", "endTimeOffset": "2.291666s" }, "confidence": 0.99438506, "frames": [ { "rotatedBoundingBox": { "vertices": [ { "x": 0.7015625, "y": 0.59583336 }, { "x": 0.7984375, "y": 0.59583336 }, { "x": 0.7984375, "y": 0.64166665 }, { "x": 0.7015625, "y": 0.64166665 } ] }, "timeOffset": "0.833333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.041666s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.250s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6319444 }, { "x": 0.70234376, "y": 0.6319444 } ] }, "timeOffset": "1.458333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.666666s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "1.875s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "2.083333s" }, { "rotatedBoundingBox": { "vertices": [ { "x": 0.70234376, "y": 0.6 }, { "x": 0.7992188, "y": 0.6 }, { "x": 0.7992188, "y": 0.6333333 }, { "x": 0.70234376, "y": 0.6333333 } ] }, "timeOffset": "2.291666s" } ] } ] }, { "text": "\"Sure, give me one second.\"", "segments": [ { "segment": { "startTimeOffset": "10.625s", "endTimeOffset": "13.333333s" }, "confidence": 0.98716676, "frames": [ { "rotatedBoundingBox": { "vertices": [ { "x": 0.60859376, "y": 0.59583336 }, { "x": 0.8952959, "y": 0.5903528 }, { "x": 0.89560676, "y": 0.6417387 }, { "x": 0.60890454, "y": 0.64721924 } ] }, "timeOffset": "10.625s" }, ... ] }
テキスト検出アノテーションは、textAnnotations
リストとして返されます。注: doneフィールドは、値が True の場合にのみ返されます。オペレーションが完了していない場合、レスポンスには含まれません。
Video Intelligence への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証を設定するをご覧ください。
C#: クライアント ライブラリ ページの C# の設定手順を実行してから、.NET の Video Intelligence のリファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を実行してから、PHP の Video Intelligence のリファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を実行してから、Ruby の Video Intelligence のリファレンス ドキュメントをご覧ください。