
サンプル・プログラム
GoogleOCR.php | サンプル・プログラム本体 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
1.0.0 | 2023/12/29 | 初版 |
バージョン | 更新日 | 内容 |
---|---|---|
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
1.4.2 | 2024/01/28 | exitIfLessVersion() メッセージ修正 |
1.4.1 | 2023/09/30 | コメントの訂正 |
1.4.0 | 2023/09/09 | $_GET, $_POST参照をfilter_input()関数に置換 |
1.3.0 | 2023/07/11 | roundFloat() 追加 |
準備:Google Cloud Vision APIの有効化
それが済んだら、以下の手順でGoogle Cloud Vision APIを有効化する。



準備:Vision Clientライブラリのダウンロード

Windowsで Composer を利用するには、Installation - Windows から Windows用の Composer-Setup.exe をダウンロードし、実行する。
Composerは php.exe を必要とする。インストール中に php.exe のパス名を聞いてくるので入力する。

Composerをインストールしたら、今回のサンプルプログラムを配置するパスへ移動し、コマンドプロンプトを開き、下記のコマンドを実行する。
composer require google/apiclientこれで Vision Clientライブラリが、\vendor サブディレクトリにインストールされたのだが、実際に動かしてみたところ、SSL証明書の認証がうまく行かないケースがあった。そこで、\vendor サブディレクトリ以下のPHPファイルを検索し、CURLOPT_SSL_VERIFYPEER を FALSE に変更する。
composer require google/cloud-vision
こちらの環境では、"/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php" および "/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php" の2つのファイルに、各々1カ所ずつ変更箇所が見つかった。
解説:テキストの検出
245: // メイン・プログラム ======================================================
246:
247: //Google API クライアントライブラリ
248: require __DIR__ . '/vendor/autoload.php';
249: use Google\Cloud\Vision\V1\ImageAnnotatorClient;
250: //認証情報へのパスを設定
251: putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/credentials.json');
252:
253: //パラメータ
254: $imageFileName = isset($_FILES['upload']['tmp_name']) ? $_FILES['upload']['tmp_name'] : '';
255: $description = $errmsg = '';
256:
257: //画像形式変換
258: if ($imageFileName != '') {
259: $resource = file_get_contents($imageFileName);
260: if ($resource == FALSE) {
261: $errmsg = '指定した画像ファイルが見つかりません.';
262: }
263: //Google Cloud Vision APIクライアントを作成する.
264: $imageAnnotatorClient = new ImageAnnotatorClient();
265: //テキストを検出する.
266: $response = $imageAnnotatorClient->textDetection($resource);
267: $text = $response->getTextAnnotations();
268: $description = $text[0]->getDescription();
269: $imageAnnotatorClient->close();
270: }

OCR機能は、ImageAnnotatorClient クラスを利用する。getDescriptionメソッドを使い、その画像に含まれる全てのテキストを取得することができる。
なお、$textオブジェクトには、画像内のワードの位置情報なども格納されており、フォームの特定位置のテキストだけ検出するような場合に利用できるだろう。

JavaScript部分で、ファイルをドロップする処理は、解説:ファイルのドロップ - PHPで画像ファイルを読み込んでimgタグに埋め込む」を、テキストのコピーは「JavaScriptでクリップボードを使う」を参照願いたい。
参考サイト
- Vision AI:Google
- Google Cloud Vision APIのドキュメント:Gooe
- Vision Clientライブラリ:Google
- Google Cloud Vision APIを使用して画像のテキスト情報を抽出する方法:Bluebear I/O
- Google Cloud Platform - 各種WebAPIの登録方法
上図の実行例は、「PHP 8:Windows版のイントール/Apacheと連携/特長」の画像スナップショットをとって、それをサンプル・プログラムに流し込んだものである。