You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Gemini API处理并提取图像中的数据?

Google Gemini API 图像分析集成指南

图像提交方式

  • Base64编码:适用于本地图像文件,将图像二进制数据转为Base64字符串后嵌入请求体
  • 公开URL:适用于已托管在公网的图像,直接提供可访问的URL即可,API会自动抓取图像内容

请求核心参数

请求需包含以下关键部分:

  • model:指定支持图像的模型,如gemini-pro-vision(唯一支持图像输入的Gemini基础模型)
  • contents:数组结构,每个元素包含parts数组,可同时传入文本提示和图像数据:
    • 文本提示:{"text": "你的分析指令,比如'提取图片中的所有文字'"}
    • Base64图像:{"inline_data": {"mime_type": "image/jpeg", "data": "base64编码字符串"}}
    • URL图像:{"image_url": {"url": "https://example.com/your-image.jpg"}}
  • key:你的Gemini API密钥,可放在请求URL参数(?key=xxx)或请求头中

响应解析方法

API返回JSON格式响应,核心数据路径为:
response.json()["candidates"][0]["content"]["parts"][0]["text"]

  • candidates:模型返回的结果数组(通常取第一个元素)
  • content.parts.text:模型生成的图像分析文本内容

图像格式与尺寸限制

  • 支持格式:JPEG、PNG、WEBP、HEIC、HEIF
  • 分辨率限制:最大1024x1024像素,超过需先压缩调整
  • 文件大小:单张图像不超过20MB

Python 请求示例

本地图像(Base64编码)

import requests
import base64

API_KEY = "你的Gemini API密钥"
MODEL = "gemini-pro-vision"

# 读取本地图像并转为Base64
with open("local-image.jpg", "rb") as img_file:
    base64_img = base64.b64encode(img_file.read()).decode("utf-8")

# 构建请求体
payload = {
    "contents": [
        {
            "parts": [
                {"text": "描述这张图片,提取其中的物体和文字内容"},
                {"inline_data": {"mime_type": "image/jpeg", "data": base64_img}}
            ]
        }
    ]
}

# 发送请求
resp = requests.post(
    f"https://generativelanguage.googleapis.com/v1/models/{MODEL}:generateContent?key={API_KEY}",
    json=payload
)

# 解析结果
if resp.status_code == 200:
    result_text = resp.json()["candidates"][0]["content"]["parts"][0]["text"]
    print("提取结果:\n", result_text)
else:
    print("请求失败:", resp.json())

公网图像(URL方式)

import requests

API_KEY = "你的Gemini API密钥"
MODEL = "gemini-pro-vision"
IMAGE_URL = "https://example.com/public-image.png"

# 构建请求体
payload = {
    "contents": [
        {
            "parts": [
                {"text": "提取这张图片中的所有文字信息"},
                {"image_url": {"url": IMAGE_URL}}
            ]
        }
    ]
}

# 发送请求
resp = requests.post(
    f"https://generativelanguage.googleapis.com/v1/models/{MODEL}:generateContent?key={API_KEY}",
    json=payload
)

# 解析结果
if resp.status_code == 200:
    result_text = resp.json()["candidates"][0]["content"]["parts"][0]["text"]
    print("提取的文字:\n", result_text)
else:
    print("请求失败:", resp.json())

典型响应格式

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "这张图片展示了一张书桌,上面有一台笔记本电脑,屏幕显示'Project Demo'字样,旁边放着一支黑色钢笔和一个蓝色笔记本。"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 142,
    "candidatesTokenCount": 78,
    "totalTokenCount": 220
  }
}

内容的提问来源于stack exchange,提问作者Arlan Kaliyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:09:53