PHPで実現するCloud Vision API OCR入門:画像からテキスト抽出の基本
作成日:2025.09.30
Google Cloud Vision API を利用して、PHP で画像からテキストを抽出する OCR 処理の基本的な実装方法を解説します。API の有効化や認証情報の取得、PHP クライアントライブラリのインストール手順から、実際のコード例に基づいた OCR 処理の流れを紹介。
目次
Google の Cloud Vision API を使って、PHP で 画像からテキストを抽出する OCR 処理を行なってみたので、その手順を紹介します。
API の有効化
まず、Google Cloud Platform のコンソールにアクセスし、プロジェクトを作成します。
次に、検索ボックスに「Vision API」と入力し、表示された「Cloud Vision API」を選択して有効化します。
サービスアカウントの作成と認証情報の取得
サービスアカウントの作成と認証情報の取得に関しては、以前 PHPでGoogle Analyticsデータを取得する初心者向けガイド:APIの設定からコード例まで の記事の「サービスアカウントの作成とAPIキーの作成」の項で詳しく説明していますので、そちらを参考にしてください。
PHP クライアントライブラリのインストール
次に、PHP クライアントライブラリをインストールします。Composer を使って以下のコマンドを実行します。
composer require google/cloud-vision
OCR 処理の実装例
以下は、PHP で Cloud Vision API を使って画像からテキストを抽出する例です。
require 'vendor/autoload.php';
use Google\Cloud\Vision\V1\Client\ImageAnnotatorClient;
use Google\Cloud\Vision\V1\AnnotateImageRequest;
use Google\Cloud\Vision\V1\BatchAnnotateImagesRequest;
use Google\Cloud\Vision\V1\Feature;
use Google\Cloud\Vision\V1\Image;
// APIキーのJSONファイルのパス(必ずブラウザではアクセスできない場所に設置すること)
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/credential/xxxxxxxxxx.json');
// クライアント作成
$client = new ImageAnnotatorClient();
// 画像の読み込み
$image = (new Image())
->setContent(file_get_contents('sample.jpg'));
// Feature(OCRを指定)
$feature = (new Feature())
->setType(Feature\Type::TEXT_DETECTION);
// AnnotateImageRequest
$annotateRequest = (new AnnotateImageRequest())
->setImage($image)
->setFeatures([$feature]);
// BatchAnnotateImagesRequest
$batchRequest = (new BatchAnnotateImagesRequest())
->setRequests([$annotateRequest]);
// 実行
$response = $client->batchAnnotateImages($batchRequest);
// 結果の取得
foreach ($response->getResponses() as $res) {
if ($res->getTextAnnotations()->count() > 0) {
echo "検出結果:\n";
echo $res->getTextAnnotations()[0]->getDescription();
} else {
echo "テキストが検出されませんでした。";
}
}
上記のコードでは、まずサービスアカウントの認証情報を環境変数 GOOGLE_APPLICATION_CREDENTIALS
に設定します。次に、ImageAnnotatorClient
クラスのインスタンスを作成し、画像ファイルを読み込みます。
次に、OCR 処理を指定するために Feature
クラスのインスタンスを作成し、タイプを TEXT_DETECTION
に設定します。
その後、AnnotateImageRequest
クラスのインスタンスを作成し、画像とフィーチャーを設定します。さらに、BatchAnnotateImagesRequest
クラスのインスタンスを作成し、リクエストを設定します。
最後に、batchAnnotateImages
メソッドを呼び出して OCR 処理を実行し、結果を取得します。検出されたテキストは getTextAnnotations()
メソッドで取得できます。
この例では、画像ファイル sample.jpg
からテキストを抽出し、検出結果を表示します。
注意点として、Cloud Vision API の使用には料金が発生する場合がありますので、利用前に料金体系を確認してください。また、API の使用制限にも注意してください。
実行結果
試しに、以下の画像を使って OCR 処理を行なってみました。

無印良品のお菓子のパッケージに書かれた成分表示欄です。
上記の画像を sample.jpg
として保存し、先ほどのコードを実行したところ、以下のようにテキストが抽出されました。
検出結果: 無印良品 ポテトスティック 塩レモン 称 スナック菓子 名原 原材料名 フライドポテト (ばれいしょ (中 国)、植物油脂)、 レモンソルト シーズニング (麦芽糖、食塩、 デキストリン、砂糖、たん白加水 分解物、ブラックペッパー末、レ モン果汁粉末、 ジンジャーエキ スパウダー) / 調味料(アミノ 酸等)、酸味料、香料、炭酸Ca、 (一部に大豆を含む) 内容量 58g 賞味期限表面上部に記載 (開封前) 保存方法 直射日光・高温多湿の場所 を避けて保存してください。 販売者 株式会社良品計画 東京都文京区後楽2-5-1 製造所 株式会社 宮田 関東工場 茨城県常総市大生郷町中丸6127-8 本品に含まれるアレルゲン 大豆 soybean ・くるみ・小麦・卵・乳 通の
概ね、正しくテキストが抽出されていました。
続いて、縦書きの文章の抽出精度がどうか試してみたかったので、以下の画像を使って OCR 処理を行なってみました。

上記の画像を sample.jpg
として保存し、先ほどのコードを実行したところ、以下のようにテキストが抽出されました。
検出結果: 「そりゃあ、良かった。一安心だ」 診察室には、 敏夫と静信、高見だけ。 家族はまだ来ていない。怪我をした子供の顔に、 静信は見覚えがなかった。本人が住所と名前を名乗ったものの、家に電話しても誰も出 たんぽ ない。おそらくは、田圃に出るか山に入るかしているのだろう。近所の者に連絡をして、 家族を捜してもらっているところだった。 静信は頷いた。 だんか すく 「にしても」と敏夫は肩を竦める。「解せない話だな。見覚えのない車だったって?」 「村の者じゃないと思う。見覚えのない顔だったし」 「そんな安請け合いをしていいのか? お前、茂樹くんの顔だって知らなかったんだろ う」 敏夫は笑った。 「どうやら檀家ではないようだし、檀家でも子供の顔までは覚えていないけれど。けれ どもあの車は違うと思う。黒のベンツだったから」 ははあ、と敏夫は頷いた。高見も意を得たように頷く。 「なるほど、ベンツは見かけたことがないですねえ。この村で外車っていうと、若先生 の奥さんのBMWぐらいしか思いつきませんからな」 「うちの十和田くんはゴルフに乗ってるし、看護婦の汐見くんはミニだよ」
ルビの部分が邪魔をして、一部変なところがありますが、縦書きの文章もかなり正確に抽出できていることが分かります。
以上、PHP で Google Cloud Vision API を使って画像からテキストを抽出する OCR 処理を行なう方法を紹介しました。Cloud Vision API は他にも顔認識やラベル検出など様々な機能を提供しているので、興味があればドキュメントを参照してみてください。
参考: 画像内のテキストを検出する | Cloud Vision API | Google Cloud
PHPと外部APIを組み合わせたWebアプリ開発をご検討中の方へ
本記事で紹介したCloud Vision APIのような外部サービスとの連携をはじめ、PHPによるAPI連携や画像解析処理を組み込んだWebアプリケーション開発を承っております。
OCR機能の自動化、クラウドAPIを活用した業務効率化ツールの開発など、実務に沿った形でサポートいたします。お気軽にご相談ください。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
onelogin/php-samlで実現するPHP SAML認証:基本設定から動作確認まで
2025.09.25
軽量ライブラリである onelogin/php-saml を利用して、PHPでSAML認証を実装する方法を詳しく解説します。Composerによるインストールから、証明書・秘密鍵の準備、設定ファイルの作成、そしてSPのメタデータ生成やSSO・ACSの各スクリプトまで、SAML認証の基本設定と動作確認の一連の流れをサンプルコードを交えて紹介。
PHPで実現するHTML目次自動生成:見出しタグ抽出と目次リンクの出力
2025.07.31
PHPを活用して、HTML文書から見出しタグを抽出し、目次リンクを自動生成する方法を解説します。見出しに自動でIDを付与する仕組みや、抽出した情報をリスト形式で出力するサンプルコードを紹介。効率的なドキュメント構造の整備とSEO対策に繋がる実践的な手法を、わかりやすくまとめています。
OpenAI API 実践例:Chat Completions API で JSON形式レスポンスを取得する方法
2025.06.04
OpenAI API の Chat Completions API を用いて、レスポンス形式を JSON に固定する実装手法を紹介します。PHP を使った具体的なコード例を通じ、response_format パラメータの設定方法や利用シーン、最新モデルでのオプション利用まで解説しています。
CodeIgniter 4 クエリビルダ入門 ― 実践的なデータ操作とSQL組み立てのテクニック
2025.05.30
CodeIgniter 4 のクエリビルダの基本から実践的な利用方法までを、具体的なコード例とともに解説します。単純な条件指定から複雑なAND/ORや部分一致検索、IN句など、さまざまな使い方を段階的に学ぶことができます。これにより、SQL文を直接記述せずに柔軟なデータ操作が可能になる手法をご紹介します。