生成AIアプリを使っての画像の要約(画像の内容をテキスト化)はもはや珍しい話ではなくなったが、Google GenAIを使っても簡単に同様のことを実現できる。
まずはgenaiの設定から。
from google import genai
client = genai.Client()
Googleの公式ドキュメントでもgoogle-generativeaiを使っているコードとgoogle-genaiを使っているコードが混在していて混乱するのだが、最新版はgoogle-genaiの方らしいので、今回もgoogle-genai(Google GenAI SDK)の方を使う。
https://ai.google.dev/gemini-api/docs/migrate?hl=ja
Google GenAI SDKの場合、認証で明示的にapi_keyを渡さなくても環境変数で GEMINI_API_KEY
か GOOGLE_API_KEY
が設定されている場合は自動的にそれを参照して認証してくれるようになった。Clientの引数に api_key
を指定することもできるが、Vertex AI利用への移行のしやすさを考えると明示的に api_key
を指定するより環境変数から読み込ませるようにしておいた方が何かと便利そうだ。
from google.colab import userdata
import os
os.environ["GEMINI_API_KEY"] = userdata.get('GEMINI_API_KEY')
本筋とは離れるがColabを使って検証する場合は、上のような形でSecretsに指定したデータを環境変数にセットしておけばOK。
try:
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=[
"この画像は何ですか?",
types.Part.from_bytes(
data=image_bytes,
mime_type='image/jpeg',
)
]
)
image_description = response.text
print(image_description)
except Exception as e:
print(f"Gemini API呼び出し中にエラーが発生しました: {e}")
要約の作成は generate_content
で行える。 contents
に要約を依頼するプロンプトと対象の画像データを渡す。
画像は types.Part.from_bytes
で mime_type
とあわせて画像のバイト列を渡すことで、Gemini側で画像として認識してもらうことができる。
画像のバイト列はファイルから読み込む場合は、
with open('path/to/small-sample.jpg', 'rb') as f:
image_bytes = f.read()
で読み込めるし、Google Colabでアップロードファイルのデータを使いたい場合は
from google.colab import files
uploaded = files.upload()
image_filename = next(iter(uploaded))
image_bytes = uploaded[image_filename]
のように取得できる。

この画像は、室内にある展示物を捉えたものです。 * **中央手前**には、緑色のアリゲーターかワニを模したぬいぐるみがあります。白いお腹とピンクの開いた口、そして「V」の字の形をした黒い目のように見えるデザインが特徴です。ぬいぐるみは、濃い茶色の木製台座の上に置かれています。その隣には、部分的に別の同様の緑色のぬいぐるみも見えます。 * **右側**には、白いスタンドに立てられた黄色い看板があります。看板には日本語で「熱川バナナワニ園」「好評発売中!前売券」などの文字と、丸い目のワニのキャラクターのイラストが描かれています。これは、伊豆にある有名な観光施設「熱川バナナワニ園」のプロモーションであることが分かります。 * **背景**には、豪華な装飾が施された金色の木製フレームの鏡があり、ぬいぐるみや看板の反射が映り込んでいます。 * これらすべてのアイテムは、大理石のような模様のあるテーブルの上に置かれています。 全体として、熱川バナナワニ園に関連するキャラクターグッズ(ぬいぐるみ)と、その施設の前売券の宣伝看板が展示されている様子を写したものです。
参考