arrow_back

Cloud ML API を使用して画像内のテキストの抽出、分析、翻訳を行う

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud ML API を使用して画像内のテキストの抽出、分析、翻訳を行う

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP075

Google Cloud セルフペース ラボ

概要

このラボでは、複数の ML API を組み合わせて使用し、ML によってできることを体験します。最初に Cloud Vision API のテキスト検出メソッドを使用し、光学式文字認識(OCR)を利用して画像からテキストを抽出します。次に、そのテキストを Translation API で翻訳する方法と、Natural Language API で分析する方法を学びます。

学習内容

  • Vision API リクエストを作成し、curl で API を呼び出す
  • Vision API のテキスト検出(OCR)メソッドを使用する
  • Translation API を使用して画像から抽出したテキストを翻訳する
  • Natural Language API を使用してテキストを分析する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. API キーを作成する

curl を使用して Vision API にリクエストを送信するため、リクエスト URL に渡す API キーを生成する必要があります。

  1. API キーを作成するには、ナビゲーション メニュー > [API とサービス] > [認証情報] の順に移動します。

ナビゲーション メニューを開いて [API とサービス] サブメニューと [認証情報] オプションがハイライト表示されている

  1. [+ 認証情報を作成] をクリックします。

  2. プルダウン メニューで [API キー] を選択します。

プルダウン メニューで [API キー] オプションがハイライト表示されている

  1. 次に、生成したキーをコピーして [閉じる] をクリックします。

  2. 各リクエストに API キーの値を挿入する必要がないように、環境変数に API キーを保存します。

  3. Cloud Shell で次のコマンドを実行します。<your_api_key> は先ほどコピーしたキーに置き換えます。

export API_KEY=<YOUR_API_KEY>

[進行状況を確認] をクリックして、実行したタスクを確認します。

API キーを作成する

タスク 2. Cloud Storage バケットに画像をアップロードする

Cloud Storage バケットを作成する

画像検出のために Vision API に画像を送信する方法は 2 つあります。base64 でエンコードされた画像文字列を API に送信する方法と、Cloud Storage に保存されたファイルの URL を渡す方法です。このラボでは、Cloud Storage バケットを作成して画像を保存します。

  1. コンソールでナビゲーション メニュー > [Cloud Storage] ブラウザの順に移動し、[+ 作成] をクリックします。

  2. バケットに - バケットという一意の名前を付けます。

  3. バケットに名前を付けたら、[オブジェクトへのアクセスを制御する方法を選択する] をクリックします。

  4. [このバケットに対する公開アクセス禁止を適用する] のボックスの選択を解除します。

  5. [アクセス制御] の下の [きめ細かい管理] を選択して [作成] をクリックします。

バケットに画像をアップロードする

  1. 下のフランス語の看板の画像を右クリックし、[名前を付けて画像を保存] をクリックして、sign.jpg という名前でパソコンに保存します。

Le Bien Public というフランス語の看板

  1. [Cloud Storage] ブラウザで先ほど作成したバケットに移動し、[ファイルをアップロード] をクリックして sign.jpg を選択します。

次に、バケットへのアクセスを非公開にしたままで、ファイルを公開して表示できるようにします。

  1. 画像ファイルのその他アイコンをクリックします。

[オブジェクト] タブに看板の画像ファイルがアップロードされ、その他のオプションのボタンがハイライト表示されている

  1. [アクセス権の編集] を選択します。

  2. [エントリを追加] をクリックして、次のように設定します。

  • [エンティティ] には [Public] を選択します。
  • 名前の値が [allUsers] であることを確認します。
  • アクセスには [Reader] を選択します。

新しく追加されたエントリのエンティティ、名前、アクセスの各項目がハイライト表示されている

  1. [保存] をクリックします。

ファイルに公開アクセス権が設定されます。

これで、ファイルをバケットに保存できました。次は Vision API リクエストを作成し、この画像の URL を渡します。

[進行状況を確認] をクリックして、実行したタスクを確認します。

画像をバケットにアップロードする

タスク 3. Cloud Vision API リクエストを作成する

  1. Cloud Shell 環境で ocr-request.json ファイルを作成した後、以下のコードをそのファイルに追加します。my-bucket-name は、作成したバケットの名前に置き換えます。ファイルを作成するには、任意のコマンドライン エディタ(nanovimemacs)を使用するか、または Cloud Shell で鉛筆アイコンをクリックしてコードエディタを開きます。

鉛筆アイコンが表示されている [エディタを開く] ボタン

  1. ocr-request.json ファイルに次の行を追加します。
{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://my-bucket-name/sign.jpg" } }, "features": [ { "type": "TEXT_DETECTION", "maxResults": 10 } ] } ] }

この後、Cloud Vision API の TEXT_DETECTION 機能を使用します。この機能は、画像に対して光学式文字認識(OCR)を実行してテキストを抽出します。

タスク 4. テキスト検出メソッドを呼び出す

  1. Cloud Shell で、curl を使用して Cloud Vision API を呼び出します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @ocr-request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}

レスポンスの最初の部分は次のようになります。

{ "responses": [ { "textAnnotations": [ { "locale": "fr", "description": "LE BIEN PUBLIC\nles dépêches\nPour Obama,\nla moutarde\nest\nde Dijon\n", "boundingPoly": { "vertices": [ { "x": 138, "y": 40 }, { "x": 622, "y": 40 }, { "x": 622, "y": 795 }, { "x": 138, "y": 795 } ] } }, { "description": "LE", "boundingPoly": { "vertices": [ { "x": 138, "y": 99 }, { "x": 274, "y": 82 }, { "x": 283, "y": 157 }, { "x": 147, "y": 173 } ] } }, { "description": "BIEN", "boundingPoly": { "vertices": [ { "x": 291, "y": 79 }, { "x": 413, "y": 64 }, { "x": 422, "y": 139 }, { "x": 300, "y": 154 } ] } ... ] }] }

OCR メソッドにより、画像から多くのテキストを抽出できます。

textAnnotations で取り出された最初のデータは、API が画像内で見つけたテキストのブロック全体です。これには次のものが含まれます。

  • 言語コード(このケースではフランス語)
  • テキストの文字列
  • 画像内でテキストが見つかった場所を示す境界ボックス

その下には、テキスト内で見つかった単語それぞれについてのオブジェクトが、該当の単語の境界ボックスも含めて示されます。

注: Cloud Vision API には、より多くのテキストを含む画像向けの DOCUMENT_TEXT_DETECTION 機能も備えられています。このレスポンスにはさらに細かい情報が含まれ、テキストはページ、ブロック、段落、単語に分けられます。

フランス語を知らなければ、このテキストの意味はおそらくわかりません。次のステップは翻訳です。

  1. 次の curl コマンドを実行してレスポンスを ocr-response.json ファイルに保存し、後で参照できるようにします。
curl -s -X POST -H "Content-Type: application/json" --data-binary @ocr-request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY} -o ocr-response.json

タスク 5. 画像から抽出したテキストを Translation API に送信する

Translation API では、テキストを 100 以上の言語に翻訳できます。入力テキストの言語を検出することもできます。フランス語のテキストを英語に翻訳するには、テキストとターゲット言語の言語コード(en-US)を Translation API に渡します。

  1. まず、translation-request.json ファイルを作成して、次の行を追加します。
{ "q": "your_text_here", "target": "en" }

q は翻訳する文字列を渡す場所です。

  1. ファイルを保存します。

  2. Cloud Shell で次の Bash コマンドを実行し、前の手順で説明した画像テキストを抽出して、新しい translation-request.json にコピーします(これらはすべて 1 つのコマンドで行われます)。

STR=$(jq .responses[0].textAnnotations[0].description ocr-response.json) && STR="${STR//\"}" && sed -i "s|your_text_here|$STR|g" translation-request.json
  1. これで、Translation API を呼び出す準備が整いました。次のコマンドを実行すると、レスポンスが translation-response.json ファイルにコピーされます。
curl -s -X POST -H "Content-Type: application/json" --data-binary @translation-request.json https://translation.googleapis.com/language/translate/v2?key=${API_KEY} -o translation-response.json
  1. このファイルで Translation API のレスポンスを確認するには、次のコマンドを実行します。
cat translation-response.json

看板の内容が理解しやすくなりました。

{ "data": { "translations": [ { "translatedText": "TO THE PUBLIC GOOD the dispatches For Obama, the mustard is from Dijon", "detectedSourceLanguage": "fr" } ] } }

レスポンスの説明:

  • translatedText には翻訳結果が含まれ、
  • detectedSourceLanguagefr、つまりフランス語の ISO 言語コードです。

Translation API は 100 以上の言語をサポートし、言語サポートのリファレンスでその一覧が示されています。

画像に含まれるテキストを翻訳するだけでなく、詳細に分析したい場合があります。そのような場合は、Natural Language API が役に立ちます。次のステップに進みましょう。

タスク 6. Natural Language API を使用して画像のテキストを分析する

Natural Language API は、エンティティを抽出して感情と構文を分析し、テキストをカテゴリ別に分類することによって、テキストの理解を助けます。analyzeEntities メソッドを使用して、Natural Language API がこの画像のテキストにどのようなエンティティを見つけられるかを見てみましょう。

  1. API リクエストを設定するために、次のような nl-request.json ファイルを作成します。
{ "document":{ "type":"PLAIN_TEXT", "content":"your_text_here" }, "encodingType":"UTF8" }

リクエストでは、送信するテキストについて次の情報を Natural Language API に知らせます。

  • type: サポートされている型の値は PLAIN_TEXT または HTML です。

  • content: 分析のために Natural Language API に送信するテキストを渡します。Natural Language API では、Cloud Storage に保存されているファイルをテキスト処理用に送信することもできます。Cloud Storage からファイルを送信するには、contentgcsContentUri に置き換えて、Cloud Storage に保存されているテキスト ファイルの URI の値を使用します。

  • encodingType: テキストを処理するときに使用するテキスト エンコードの種類を API に指示します。API はこの情報により、特定のエンティティがテキストのどこに出現するかを調べます。

  1. Cloud Shell で次の Bash コマンドを実行し、翻訳されたテキストを Natural Language API リクエストの content ブロックにコピーします。
STR=$(jq .data.translations[0].translatedText translation-response.json) && STR="${STR//\"}" && sed -i "s|your_text_here|$STR|g" nl-request.json

nl-request.json ファイルに、元の画像から翻訳された英語のテキストが含まれるようになりました。いよいよこのテキストを分析します。

  1. 次の curl リクエストを使用して、Natural Language API の analyzeEntities エンドポイントを呼び出します。
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @nl-request.json

レスポンス全体をスクロールすると、Natural Language API によって発見されたエンティティを参照できます。

{ "entities": [ { "name": "dispatches", "type": "OTHER", "metadata": {}, "salience": 0.3560996, "mentions": [ { "text": { "content": "dispatches", "beginOffset": 23 }, "type": "COMMON" } ] }, { "name": "mustard", "type": "OTHER", "metadata": {}, "salience": 0.2878307, "mentions": [ { "text": { "content": "mustard", "beginOffset": 38 }, "type": "COMMON" } ] }, { "name": "Obama", "type": "PERSON", "metadata": { "mid": "/m/02mjmr", "wikipedia_url": "https://en.wikipedia.org/wiki/Barack_Obama" }, "salience": 0.16260329, "mentions": [ { "text": { "content": "Obama", "beginOffset": 31 }, "type": "PROPER" } ] }, { "name": "Dijon", "type": "LOCATION", "metadata": { "mid": "/m/0pbhz", "wikipedia_url": "https://en.wikipedia.org/wiki/Dijon" }, "salience": 0.08129317, "mentions": [ { "text": { "content": "Dijon", "beginOffset": 54 }, "type": "PROPER" } ] } ], "language": "en" }

wikipedia のページを含むエンティティの場合、API はそのページの URL を含むメタデータとエンティティの mid を提供します。mid とは、Google のナレッジグラフでこのエンティティにマッピングされる ID です。詳細情報を取得するには、Knowledge Graph API を呼び出してこの ID を渡します。Natural Language API はすべてのエンティティについて、mentions(テキスト内の出現箇所)、type(タイプ)、および salience(テキスト全体におけるエンティティの重要性を示す [0,1] の範囲)の情報を提供します。Natural Language API では英語以外に言語サポート リファレンスの一覧にある言語もサポートされています。

この画像に限れば重要なエンティティを見つけ出すのは比較的簡単ですが、数千に及ぶ画像のライブラリがある場合、その作業は非常に困難になります。OCR、翻訳、および自然言語処理は、大量の画像データセットから意味を抽出するのに役立ちます。

[進行状況を確認] をクリックして、実行したタスクを確認します。

Natural Language API を使用して画像のテキストを分析する

お疲れさまでした

ここでは、3 つの異なる ML API を組み合わせる方法を学びました。すなわち、Vision API の OCR メソッドで画像からテキストを抽出し、Translation API でそのテキストを英語に翻訳して、Natural Language API でそのテキスト内のエンティティを検出しました。

学習した内容

  • 複数の ML API を組み合わせたユースケース
  • Vision API の OCR リクエストを作成し、curl で API を呼び出す方法
  • Translation API でテキストを翻訳する方法
  • Natural Language API を使用してテキストからエンティティを抽出する方法

クエストを完了する

このセルフペース ラボは、「Integrate with Machine Learning APIs」クエストと「Intro to ML: Image Processing」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

ML API に関する別のラボをお試しください。たとえば、次のようなものがあります。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 10 月 6 日

ラボの最終テスト日: 2023 年 10 月 6 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。