AIに画像を渡したら、勝手にPythonプログラムが走り出した件。〜Agentic Vision検証レポ〜

こんにちは。SCSKの松渕です。

今回は2026年1月27日に発表されたばかりのGeminiの超強力な新機能、
Agentic Visionについて検証したのでブログ書いていきます!!

はじめに

Agentic Visionとは

端的に言うとGemini 3 の拡張機能です。(flashの機能と広く説明されてますが、proでも利用できました)
Geminiが自ら動的にコードを書いて画像を能動的に『調査』する機能です。

いままでのマルチモーダルAIでは、画像認識は静的なもの(一度見るだけ)でした。
この機能を活用すると、GeminiがPythonコードを自動生成し、特定の領域をクロップ(切り抜き)したり、ズームしたりといった
自律的にアクションをして、結果をさらに観測するというループを回すことができるようになります。

 

なお、Googleがデモを公開しているので、ぜひ一度体験してみてください!!

 

主なユースケース

主なユースケースは以下のように考えられているようです。

1. 精密な検査とズーム

Geminiに処理させたい内容次第では、画像は大きいが処理内容としては一部分だけ必要になることがあります
その際、必要な部分だけをズームすると精度が上がるため、Gemini自身が拡大の必要性を判断して実行します。

 

2. 正確なカウントとアノテーション

飲み会とかで人数カウントする際、10人超えてくるとぱっと見でわからなくなりますよね?
そういうとき、一人ひとりカウントしていくかと思います。
同様に、「数えた」という印を画像につけていくことでカウントを正確にするといったことも可能です。

 

3. アナログデータのデジタル資産化

アナログデータを画像認識し、そのままPythonでグラフ化して可視化する、といった一連の処理が自律的に完結します。
また、Google検索等のグラウンディング機能を併用すれば、画像から読み取ったデータと「世の中の最新トレンドや統計データ」を掛け合わせた分析レポートを自動作成する、といった活用も可能になります。

 

設定方法

試し方としては大きく2つのやり方があります。

1. Google AI Studio で試す(最速30秒)

まずは手元の画像で動かしてみたい、という方はこちらが一番早いです。

  1. モデルの選択: 右側の設定パネルで Gemini 3 Flash を選択します。

  2. ツールの有効化: 同じ設定パネル内にある 「Tools」 セクションを探し、「Code Execution」 のチェックボックスをオンにします。

  3. 画像をアップロード: プロンプト入力欄に解析したい画像を貼り付けます。

  4. 依頼を投げる: 「画像内の〇〇を詳しく調べて」など、精密な調査が必要な指示を出します。

     ズームが必要だとGeminiが判断すれば、勝手にPythonコードが走り、ズームされた画像(クロップ画像)が生成され始めます。

 

2. Vertex AI (Python SDK) で実装する

Google Cloud環境でアプリに組み込む場合は、SDKからツールとして定義します。

Python SDKであれば、gemini API呼び出し時configに以下一行追記するだけです。

tools=[types.Tool(code_execution=types.ToolCodeExecution())]

簡単そう!と思って今回はVertex AI Studioでやってみることにしてみました。
が、意外にもちょっと面倒でした。。。

 

前準備

インプット画像準備

読み取りにくそうなpdfサンプル準備します。手書きの何かの申込書らしきものを作成してみました。
あえて反転させております。

※住所、カード番号、電話番号は架空のものです。

 

Agentic Vision無しで読み取り

失敗例が欲しく、一度Vertex AI Studioで普通に読み取り処理流します。
利用したプロンプトはこちら。システムプロンプトにもう少しちょこちょこ書きましたが割愛。

# 以下の項目を読み取ってください
- ふりがな
- 氏名
- 性別
- 所在地(郵便番号)
- 所在地(住所)
- 電話番号
- メールアドレス
- 申し込みコース
- サービス開始希望日
- 追加オプション ※複数申し込み可能
- お支払い方法  ※単一選択。丸印での選択
- 請求締日  ※「お支払い方法」で請求書払いを選択している場合のみ
- カード名義  ※「お支払い方法」でクレジットカードを選択している場合のみ
- クレジットカード種別  ※「お支払い方法」でクレジットカードを選択している場合のみ   単一選択
- カード番号  ※「お支払い方法」でクレジットカードを選択している場合のみ
- カード有効期限  ※「お支払い方法」でクレジットカードを選択している場合のみ  "XX年XX月" の形式で出力すること
- 請求先名   ※「お支払い方法」で請求書払いを選択している場合のみ

出力結果は以下でした。

{
"ふりがな": "まつぶち けんた",
"氏名": "松渕 健太",
"性別": "男",
"所在地(郵便番号)": "012-3456",
"所在地(住所)": "東京都千代田区千代田1-1-1",
"電話番号": "090-1234-5678",
"メールアドレス": "xxx@gmail.com",
"申し込みコース": "A. プラン1",
"サービス開始希望日": "2026年2月20日",
"追加オプション": [
"追加サービスC"
],
"お支払い方法": "1. クレジットカード",
"請求締日": "",
"カード名義": "Kenta Matsubuchi",
"クレジットカード種別": "VISA",
"カード番号": "123456789012",
"カード有効期限": "26年12月",
"請求先名": "",
"請求先住所": ""
}

あれ。。Agentic Vision無しで成功しちゃった。。Gemini 3 flash 賢すぎないですか?
でもまぁ、突き進みます!!

 

設定と実行

Vertex AI Studioでの実施試みるがNG

Google Cloudの画面から、Vertex AI Studioの画面を開きます。
プロンプトを入れて、資料添付した状態にします。
右上の「コード」ボタンを押下。

 

以下の画面に遷移します。

 

「2.Use the following code in your application to request a model response」のところに1行入力するだけ!
と思ってたら、入力できませんでした。

 

APIキーの発行

ということで、面倒ですがNotebookから実行することにします。
先ほどの画面の上部の「ここですべてのAPIキーを表示するか、新しいAPIキーを作成できます」を押下。

 

設定画面へ遷移するので、「APIキーを作成」を押下。APIキーが作成されます。
「鍵を表示します」をクリックしてAPIキーをコピーしておきます。

 →  →

今回、検証には Google AI Studio で発行したAPIキーを使用しました。非常に便利な一方、間違って公開等してしまった場合には、不正利用されて高額請求が来てしまう等のリスクがあります!!
ソースコードへのべた書きし、そのままGitHubで公開してしまう等の事象はよく聞きますので、十分ご注意ください。

 

Vertex AI Studioの画面に再度戻り、「ノートブックを開く」を押下。

 

Colab EnterpriseのNotebookからの実行

ノートブック画面に遷移します。「YOUR_API_KEY」部分に先ほどコピーしたAPIキーを貼り付けて、まずは実行します。
正常に動きました。

 

次のセクションですが、ノートブックを開く前から入力していたプロンプトがすでに反映された状態かと思います。

 

そのため、generate_content_configの中に「tools=[types.Tool(code_execution=types.ToolCodeExecution())],
の一行だけを追記して実行すればAgentic Visionは動作します!
ただし、私はブログ用に途中での思考や画像加工した出力も出すようにいろいろと変えたので、追記部分太字で記載します。

from google import genai
~~省略~~
text1 = types.Part.from_text(text="""# 以下の項目を読み取ってください。
読み取る上で、画像反転や拡大等必要であれば実施ください。
# 画像出力に関する重要ルール
画像を保存(imwriteなど)したら、必ずその直後に以下のコードを実行して、
画像データを標準出力に書き出してください。これがないと画像が見えません。
~~省略~~

generate_content_config = types.GenerateContentConfig(
temperature = 1,
top_p = 0.95,
max_output_tokens = 65535,
★★以下一行追加★★
tools=[types.Tool(code_execution=types.ToolCodeExecution())],
~~省略~~

for chunk in client.models.generate_content_stream(
model = model,
contents = contents,
config = generate_content_config,
):
for part in chunk.candidates[0].content.parts:

# ★★以下、プロセスの出力のため追加★★
# 1. 思考プロセスの表示(青文字)
if part.thought:
print(f"\033[34m[Thinking]:\033[0m {part.text}")

# 2. 実行したコードの表示(緑文字)
elif part.executable_code:
print(f"\n\033[32m[Action - Python Code]:\033[0m\n{part.executable_code.code}\n")

# 3. 生成された「画像」をその場で表示!
elif part.code_execution_result:
output = part.code_execution_result.output
print(f"[Execution Output]: {output}") # ログとして表示

if output and "FILE_DATA:" in output:
# AIが吐き出したbase64データを探す
for line in output.split("\n"):
if line.startswith("FILE_DATA:"):
_, filename, b64data = line.split(":", 2)
# ローカルに保存
with open(f"debug_{filename}", "wb") as f:
f.write(base64.b64decode(b64data))
print(f"\n★画像を保存しました: debug_{filename}")
# Colabなら表示
display(Image(f"debug_{filename}"))
# ★★ここまでプロセスの出力のため追加★★ 
# 4. 最終回答
elif part.text:
print(part.text, end="")

generate()

 

 

結果確認

実行結果

[Thinking]: **Contemplating Image Processing**
I've been working on extracting data from a scanned form. Right now, I'm focusing on the initial image processing steps. 
I've realized the image needs a 180-degree rotation. After that, I will attempt to identify and segment the various fields within the document, such as the provided "ふ" field.

~~省略~~

[Action - Python Code]:
import cv2
import numpy as np

# Load the image
img = cv2.imread('input_file_0.png')

# Rotate the image 180 degrees
rotated_img = cv2.rotate(img, cv2.ROTATE_180)
cv2.imwrite('rotated_form.png', rotated_img)

~~省略~~

★画像を保存しました: debug_top.png
★画像を保存しました: debug_middle.png
★画像を保存しました: debug_bottom.png
★画像を保存しました: debug_rotated_form.png

[Thinking]: **Examining the Fields**
I'm now able to see the images with much greater clarity. This has led me to re-examine the identified fields. Right now, I'm taking a close look at the details within them, such as `ふりがな`, `氏名`, `性別`, and `所在地(郵便番号)`. The circled "男" for gender is particularly helpful.

~~省略~~

黄色マーカー部分だけ読んでもらえればと思いますが、最初に180度回転させる必要があると判断して
自律的にアクションしているのが見て取れます。ローテーションだけでなく3分割した画像も作っておりますね。
最後に、クリアに見れるようになったと自分でコメントしてます!!

なお、出力されたファイル群は以下の通り。反転が戻った画像と、
1/3ずつに拡大した画像が中間ファイルとして作成されておりました。

 

もちろん最終的な出力JSONは、すべて正しく読み取れておりました。
Agentic Vision使う前から読み取れていたので当然ですが。。。

 

まとめ

今回は、Googleの最新機能であるAgentic Visionを使い、手書きの反転画像をJSON化する検証を行いました。

特に印象的だったのは、Geminiが自ら「画像が逆さまだから180度回転させよう」「文字が小さいから3分割して拡大しよう」と
判断し、Pythonコードを生成・実行したプロセスです。これまでの「ただ画像を見るだけ」のAIとは一線を画す、まさ「意思を持った調査員」のような挙動でした。

また、本来の目的とは違いますが、Gemini 3 flashがそもそも画像認識能力が非常に高いと感じました。
破線〇への○付きや、かすれたチェックボックスをすべて一発で正確に読み取るとは思っていなかったので、その点も非常に驚きでした。

画像解析の「精度」の壁に悩んでいた方は、ぜひ一度このAgentic Visionを試してみてください。きっと、AIが「自分で虫眼鏡を取り出す」瞬間に驚くはずです!

著者について

◆得意領域
 AWS/GoogleCloud/運用性考慮したアーキ検討&PM
 最近は生成AI(Gemini)使ったデータ構造化案件のPMやってます。

◆資格
 ・AWS:All Certifications Engineers(2022/2023/2024)
     現在はSAPのみ
 ・GoogleCloud:All Certifications(2025-)
 ・IPA:SA、PM、NW、DB、SM、登録セキスぺ
 ・Credlyはこちら
  https://www.credly.com/users/kenta-matsubuchi/badges#credly 

◆2025年度やりたいこと
 Google CloudのPartnerTopEngineerを目指して日々勉強中!
 ★2025/11/19 PartnerTopEngineerおよび資格全取得達成!

松渕健太をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Google Cloud)は、Google Cloudの多彩なAIや各種サービスを活用したワンストップソリューションを提供します。SCSKのノウハウや体制を有効活用し、業務課題の解決に必要な全体検討と組み合わせで、最適な業務実装まで支援します。

AI・MLGoogle Cloudクラウドソリューション
シェアする
タイトルとURLをコピーしました