こんにちは!吉井です!
みなさんは画像内のテキストを簡単に検出したいと思ったことはないでしょうか?
画像からテキストを検出する製品は数多くありますが、
今回はGoogle Cloudの「Cloud Vision API」を使用してテキスト検出を行う方法を解説していきます。
本記事でわかること
- Cloud Vision APIの概要
- Cloud Vision APIを使用した画像内のテキスト検出方法
Cloud Vision APIとは
Google Cloud 上で、画像検出が行える機能です。
テキスト検出の他に、画像内のオブジェクトやロゴの検出などもできます。
詳細については、こちらを参照ください。
事前準備
Cloud Vision APにはいろいろな機能がありますが、今回は画像内のテキスト検出について解説していきます。
準備物
- Google Cloudで以下の機能が使用できるプロジェクトを準備します。
・Cloud Storage
・BigQuery
・Cloud Vision API - 検出対象の画像を準備します。
今回は検出対象として、以下の画像を「sample.JPG」という名前で保存して使用します。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-1024x326.png)
BigQueryデータセット作成
・出力結果をBigQueryで確認するため、BigQueryデータセットを準備します。
テーブルを作成できるデータセットがない場合は、事前に作成しておきます。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-56-1024x506.png)
Cloud Storage バケット作成
画像と出力ファイルを格納するためのCloud Storageのバケットを準備します。
使用できるバケットがない場合は、事前に作成しておきます。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-8-1024x412.png)
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-9.png)
・検索対象の画像をCloud Storageにアップロードします。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-10-1024x747.png)
Cloud Vision APIの有効化
Google Cloudにログインし、画面上部の検索ボックスに「Cloud Vision API」を入力し、「Cloud Vision API」をクリックします。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-11-1024x492.png)
「Cloud Vision API」の「有効にする」をクリックすることで、APIを有効にできます。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-23.png)
Cloud Vision APIの実行
Cloud Shellの起動
「Cloud Shellをアクティブにする」をクリックし、CloudShellを起動します。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-48-1024x152.png)
以下のコマンドを実行し、対象のプロジェクトが表示されていることを確認します。
gcloud config list project
以下のメッセージが表示された場合は、「承認」をクリックします。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-24.png)
プロジェクトが表示されていない場合は、以下のコマンドを実行し、プロジェクトを設定します。
※[project-id]には使用するプロジェクトのプロジェクトIDを入力してください。
gcloud config set project [project-id]
テキスト検出の実行
以下のコマンドを実行し、画像からテキストを検出します。
※[cloud storage bucket名]は、画像ファイルをアップロードしたバケットの名前
[ファイル名]は画像ファイルのファイル名です。
gcloud ml vision detect-text gs://[cloud storage bucket名]/[ファイル名]
結果は以下のように、JSON形式で出力されます。
![](https://engineer-boost.com/wp-content/uploads/2023/03/image-1024x565.png)
実行結果の整形
上記のコマンドでテキストの検出はできましたが、
出力結果が、JSON形式ままでは結果が見づらいため、出力結果をBigQueryに取り込み、テーブルとして参照できるようにします。
以下のコマンドを実行し、先ほどのコマンドの実行結果をファイルに出力します。
※[出力ファイル名]は任意のファイル名です。
gcloud ml vision detect-text gs://[cloud storage bucket名]/[ファイル名] > [出力ファイル名]
BigQueryに取り込む際は、JSONL形式にする必要があるため、以下のコマンドを実行し
JSONL形式に変換します。
jq -c '.' [出力ファイル名] > [変換後ファイル名]
以下のコマンドを実行し、[変換後のファイル]をCloud Storageにアップロードします。
gcloud storage cp [変換後ファイル名] gs://[cloud storage bucket名]
![](https://engineer-boost.com/wp-content/uploads/2023/03/image-1-1024x389.png)
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-50.png)
BigQueryの画面で、対象のデータセットを選択し、「テーブルを作成」をクリックします。
以下を設定し、「テーブルを作成」をクリックし、テーブルを作成します。
テーブルの作成元 :Google Cloud Storage
GCSバケットからファイルを選択:[cloud storage bucket名]/[変換後ファイル名]
ファイル形式 :JSONL(改行区切り JSON)
テーブル名 :任意のテーブル名
テーブルタイプ :ネイティブテーブル
スキーマ :■自動検出
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-21-1024x920.png)
テーブル作成後、プレビューを表示することで、出力されたデータを表として確認できます。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-22-1024x415.png)
データ確認
画像から検出されたテキストのみを確認したい場合は、BigQueryのクエリエディタで以下のクエリを実行することで確認できます。
※[データセット名]には、テーブルを作成したデータセットの名前、[テーブル名]には作成したテーブルのテーブル名を入力します。
SELECT
responses.fullTextAnnotation.text,
FROM
`[データセット名].[テーブル名]`,
unnest(responses) as responses
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-26-1024x600.png)
また、クエリ結果については、CSV等でファイルに出力できるので、ファイルに出力することで検出されたテキスト全体を確認できます。
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-52-1024x586.png)
![](https://engineer-boost.com/wp-content/uploads/2023/02/image-29-1024x723.png)
まとめ
Cloud Vision APIを使用することで、テキスト内の文字列を検出できました。
今回の記載した手順のように、Google Cloudの環境があれば、簡単に実行できます。
また、Cloud Vision APIは、テキスト検出以外にも様々なことができるので、興味ある方はぜひ試してみてください。
Google および Google Cloud Platform™ service は Google LLC の商標であり、この記事は Google によって承認されたり、Google と提携したりするものではありません。
コメント