技術資料

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を活用した業務効率化ツールの開発など、実務に沿った形でサポートいたします。お気軽にご相談ください。

mail ご相談・お問い合わせはこちらから 

この記事を書いた人

※上が私です。

奈良市を拠点に、26年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

onelogin/php-samlで実現するPHP SAML認証:基本設定から動作確認まで

2025.09.25

軽量ライブラリである onelogin/php-saml を利用して、PHPでSAML認証を実装する方法を詳しく解説します。Composerによるインストールから、証明書・秘密鍵の準備、設定ファイルの作成、そしてSPのメタデータ生成やSSO・ACSの各スクリプトまで、SAML認証の基本設定と動作確認の一連の流れをサンプルコードを交えて紹介。

onelogin/php-saml PHP SAML認証

PHPで実現するHTML目次自動生成:見出しタグ抽出と目次リンクの出力

2025.07.31

PHPを活用して、HTML文書から見出しタグを抽出し、目次リンクを自動生成する方法を解説します。見出しに自動でIDを付与する仕組みや、抽出した情報をリスト形式で出力するサンプルコードを紹介。効率的なドキュメント構造の整備とSEO対策に繋がる実践的な手法を、わかりやすくまとめています。

HTML PHP

OpenAI API 実践例:Chat Completions API で JSON形式レスポンスを取得する方法

2025.06.04

OpenAI API の Chat Completions API を用いて、レスポンス形式を JSON に固定する実装手法を紹介します。PHP を使った具体的なコード例を通じ、response_format パラメータの設定方法や利用シーン、最新モデルでのオプション利用まで解説しています。

OpenAI API PHP

CodeIgniter 4 クエリビルダ入門 ― 実践的なデータ操作とSQL組み立てのテクニック

2025.05.30

CodeIgniter 4 のクエリビルダの基本から実践的な利用方法までを、具体的なコード例とともに解説します。単純な条件指定から複雑なAND/ORや部分一致検索、IN句など、さまざまな使い方を段階的に学ぶことができます。これにより、SQL文を直接記述せずに柔軟なデータ操作が可能になる手法をご紹介します。

CodeIgniter PHP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP