こんにちは。新里です。
Google Geminiが最近は色々と出してきていて、触ってみたくなってきました。そこで、Gemini Provision API (マルチモーダル)を使って画像の判別をしてみました。
目次
ワインのラベル判定
勢いでWeb上からワインのラベルをアップロードすると、対象のワインの情報を取得してくる物を作ってみました。プログラムに要した時間は1時間もかからない程度でした。
これはGoogle AI Studioが便利だった…というのもありますね。

ローカルPCからワインのラベルがある画像をアップロードすると、対象のワイン情報を取得するものです。サクッと作ったついでに、GMOインターネットグループが2023年に行っていた「AIしあおうぜ」コンテストに出してみたら受賞にはなりませんでしたが、ピックアップ作品としてチョイスして頂きました。
Google AI Studioが便利
Google AI Studioは現在のところ英語版しかありませんが、いまの所は無料で使えるのでプロンプトやAPIを実験してみるにはお手軽な環境ですね。無料期間が2024年の初頭までみたいなので、いまのうちに使って遊んでみるのも良いです。

Google AI Studioの便利な所が、右上にある「Get code」から各種言語、Google Colabへのリンクもあって、プロンプトでテストしてみた内容をいきなりコード・Google Colab上で実際に動かすことが出来るのがめちゃくちゃ便利でした。
というのもあって、冒頭の1時間で実装できたというのも、この機能があってこそ…というのもあります。この辺のコードに展開する部分は他のサービスでは無いかなーと感じていたり、いかにもGoogleといった感じですね。

ここで生成されたコードを使うと簡単に自分のコードに入れ込めますね。僕の場合、フロントエンドはVue、バックエンドはPythonで作っていたので、組み込んだコードはこんな感じになりました。
class LabelImageView(APIView):
def post(self, request):
file = request.FILES['image']
genai.configure(api_key="your key")
# Set up the model
generation_config = {
"temperature": 0.4,
"top_p": 1,
"top_k": 32,
"max_output_tokens": 4096,
}
safety_settings = [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
]
model = genai.GenerativeModel(model_name="gemini-pro-vision",
generation_config=generation_config,
safety_settings=safety_settings)
image_parts = [
{
"mime_type": "image/png",
"data": file.read()
},
]
prompt_parts = [
"貴方はプロのソムリエです。この画像から銘柄・ビンテージ・畑名・生産者・ワインの説明を取得してきてください。結果はJSON形式で日本語のJSONにまとめてお願いします。\n\n",
image_parts[0],
]
response = model.generate_content(prompt_parts)
json_text = response.text
json_text = json_text.replace('```json', '')
json_text = json_text.replace('```', '')
data = json.loads(json_text)
return JsonResponse(data, safe=False)
PoCなので出力されたコードをほぼ、そのまま使っても全然普通に動きました。画僧ファイルを受け取ってGemini APIに投げているだけですね。最後に謎のreplaceをしているのは、LLMの応答としてそのままjson textを使えなかったので、jsonとして使えるように整形しています。
実は過去にも…
以前にもワインのラベル判定は実験的に検証をしていました。
ワインでもいかが? -Vol.02
この時は特徴点を使ったlabeling、近隣探索などなど…検証を行ってきましたが、うまくヒットさせることが難しかったでした。また、他のマルチモーダルは日本語や多言語が入ってくると、識字率が一気に下がってしまう問題もあります。多言語の文字を認識させるというは、なかなかハードルが高いですね。
Google Vision APIはOCRでも良いパフォーマンスを出しているというのもあって、この手の画像の中の文字認識をマルチモーダルとして扱う場合でも、非常によいパフォーマンスを出してくれました。
ただし、必ずしもラベルを正しく認識しているか?というとそうでもありませんでした。実際の画像とマルチモーダルが出してくる内容の差異を埋めるのは人の役目というわけです。
他の画像では?
他にもGeminiを使ってレシートを読み込みできるか?というのも試してみました。インボイス登録番号をレシートから判別して、実在性をチェックしてデータとして自動保存できるのでは?と。

レシートを色々と何枚か実験的に使ってみましたが、他のマルチモーダルで日本語が入ってきたり、この画像のように濡れ染みがあっても認識できるパフォーマンスを発揮できるのは、現時点では他にはありませんでした。

まさかここまで認識できるとは、かなり驚きです。
マルチモーダルの利活用
単純なOCRだけでは難しい処理がマルチモーダルLLMだと可能だと分かりました。従来は画像の中にある文字を読み取るだけでしたが、コンテキスト・意味がある物として読み取ることが出来る点が大きく違いますね。
画像の要素・コンテキストをプログラムが処理しやすい形式に変換するコンバーターとして、マルチモーダルLLMを使うという方法もアリなのかもしれません。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(594)
-
イベント(237)
-
カルチャー(60)
-
デザイン(70)
TAG
- 5G
- AI
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIエージェント
- AIコーディング
- AI人財
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- CSS
- CTF
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメディア
- GMO大会議
- GMO天秤AI
- Go
- Good Morning
- GPUクラウド
- GTB
- Hack-1グランプリ
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VPN
- VS Code
- XSS
- ZTNA
- アドベントカレンダー
- インターンシップ
- インハウス
- お名前.com
- クリエイターインタビュー
- クリエイティブ
- コンテナ
- サイバーセキュリティ
- サマーインターン
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアサプライチェーン
- チームビルディング
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- プログラミング教育
- ブロックチェーン
- フロントエンド
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- ロボット
- 京大ミートアップ
- 国際ロボット展
- 基礎
- 多拠点開発
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 技術広報
- 技術書典
- 新卒
- 新卒研修
- 映像
- 映像クリエイター
- 暗号
- 業務効率化
- 機械学習
- 決済
- 生成AI
- 脆弱性診断
- 開発者
PICKUP
-
デザインカンファレンス「Yoitoi Summit 2026」をGMOYours・フクラスにて開催!
デザイン
-
攻撃者優位の時代に問われる「使命感」 GMO Flatt Security&GMOサイバーセキュリティ byイエラエが描く、AI時代のセキュリティ構想(後編)ーEngineering Journey
技術情報
-
頂上と裾野の両方から「底上げ」 GMO Flatt Security&GMO サイバーセキュリティ byイエラエが支える、日本のサイバーセキュリティ(前編)ーEngineering Journey
技術情報
-
【開催レポート】八幡小学校 社会科見学 at GMO kitaQ
カルチャー
-
デザインコンテスト「GMO DESIGN AWARD 2026」開催決定!3年目のテーマは「トキメキ」
デザイン
-
ソフトウェアサプライチェーン攻撃から「エンジニアの背中」を守る。Takumi byGMO・「Guard」機能「Runner」機能 開発の舞台裏ーEngineering Journey
技術情報