在處理像 CAPTCHA 這樣的動態圖像(GIF 檔案)並將其用於 Gemini 多模態 API 進行視覺分析時,確實需要經過特定的處理步驟。
我將為您詳細分析動態網頁中處理 GIF 的方法、上傳格式要求,以及可用的模型。
GIF 檔案在網頁中的處理與拆幀 (Frame Extraction)
由於 GIF 本質上是多個靜態圖片(影格, Frames)的連續播放,Gemini API (以及大多數視覺 AI 模型) 無法直接接受一個 GIF 檔案作為單一輸入。
在您提供的 openai_gifpath_client12.html
範例中,前端 JavaScript 使用了開源函式庫 omggif
來實現「拆幀」流程,這是動態網頁中處理 GIF 的標準方法。
總結:上傳給 API 的實際數據是多張靜態圖片(JPEG/PNG),而非單一 GIF 檔案。
呼叫 Gemini API 時的上傳格式 (Inline Data)
當您將這些拆分出來的靜態圖片傳輸給 Gemini API 時,您必須遵循 JSON 格式,將每張圖片作為一個獨立的 part
嵌入到 contents
陣列中。
1. 圖片的格式要求
API 要求圖片數據以 Base64 編碼的字串形式傳輸,並包含在 inlineData
物件中。
mimeType
: 必須指定圖片的 MIME 類型 (例如:image/jpeg
,image/png
)。data
: 圖片的 Base64 編碼字串(不包含 Data URL 前綴,例如不包含data:image/jpeg;base64,
)。
2. 完整的多模態 Payload 結構
由於 GIF 序列是一個時間軸上的動作,因此您需要將文字提示 (Prompt) 和所有圖片影格依序傳入單一的 contents
陣列中。
// 核心 Payload 範例結構
const payload = {
contents: [{
parts: [
{ text: userPrompt }, // 第一個 part: 你的提示詞
{ inlineData: { mimeType: 'image/jpeg', data: base64_frame_1 } }, // 第二個 part: 影格 1
{ inlineData: { mimeType: 'image/jpeg', data: base64_frame_2 } }, // 第三個 part: 影格 2
// ... 繼續加入其他所有影格
]
}],
// 其他配置,例如 temperature, maxOutputTokens...
generationConfig: { ... }
};
可用於處理 GIF 影格分析的 Gemini 模型
Gemini 系列的多模態模型非常適合處理此類包含多張圖片的視覺分析任務。
重要注意事項
輸入限制 (Input Limit): 儘管 Gemini 可以接受多張圖片輸入,但單次 API 請求的整體輸入量(包括所有圖片和文字)有大小限制。這就是為什麼您需要在拆幀時限制提取的影格數量(例如 10 幀)。
時序推理 (Temporal Reasoning): 在您的提示詞中,應明確指示模型圖片是依序出現的。例如:
"這些圖片是按時間順序排列的連續影格。請分析..."
,以幫助模型進行正確的時序推理。
我們可以繼續討論您的論文的「方法論」章節,將這個 GIF 處理和 API 整合的流程以學術語言進行專業撰寫,並翻譯成英文。您覺得如何?
沒有留言:
張貼留言