iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0

昨天我們讓 AI 開口說話(TTS),今天要讓 AI「張開眼睛」!
這就是 Vision API —— 讓 AI 看圖片並理解內容。

Step 1:準備一張圖片

隨便找一張圖片,存成 .jpg

import os
from openai import OpenAI
from dotenv import load_dotenv
import base64
import mimetypes
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 打開圖片
image_path = "test.jpg"
# 讀檔並轉成 data URL
mime, _ = mimetypes.guess_type(image_path)
if mime is None:
    mime = "image/jpeg"  # 預設
with open(image_path, "rb") as f:
    b64 = base64.b64encode(f.read()).decode("utf-8")
data_url = f"data:{mime};base64,{b64}"

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "這張圖片裡有什麼?"},
                {
                    "type": "image_url",
                    "image_url": {"url": data_url}
                },
            ],
        }
    ],
)

print("圖片描述:", response.choices[0].message.content)

本機路徑不能被 API 下載,所以最穩的做法是把圖片讀進來再轉 base64,用 data URI 傳給 Vision。
我先丟了一張籃球比賽的照片.
https://ithelp.ithome.com.tw/upload/images/20251001/20169376gpEkRWqG5o.png
可以看這個結果
https://ithelp.ithome.com.tw/upload/images/20251001/20169376WihizBgLmC.png

我們也可以有更多玩法,例如:
OCR(文字辨識)
{"type": "text", "text": "請讀出圖片中的文字"}
AI 可以讀出圖上的中文字/英文
圖片分類
{"type": "text", "text": "這張圖片是食物、風景還是人物?"}
問答互動
{"type": "text", "text": "這張圖片適合當旅遊海報嗎?為什麼?"}

程式碼的主要意思是
messages 裡可以放文字 + 圖片
圖片要用 {"type": "image_url", "image_url": ...} 格式
可以問 AI 不同問題(描述、分類、OCR、分析)

今天我們學會了 Vision API 入門:
上傳圖片,讓 AI 看懂並描述、可以做 OCR、分類、互動問答
打開了 AI「看世界」的新技能
明天的我們要延伸 Vision 功能
自動幫圖片加標題(Image Captioning),做一個「圖片解說員」!


上一篇
會說話了!文字轉語音(Text-to-Speech)
下一篇
Day 18:圖片會說話!Image Captioning 自動加標題
系列文
AI 三十天,哎呀每天都很難:OpenAI API 生存指南20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言