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

调用Gemini API传入Prompt与PDF时遇Could not create Blob错误求助

问题解决:Gemini API传入PDF时的Blob创建错误

错误根源

你代码中使用的Part类来自vertexai.generative_models,但当前代码基于google-generativeai(即genai)库开发,两个库的Part对象不兼容,导致模型无法识别传入的PDF数据结构,触发Could not create Blob错误。

解决方案

  1. 替换Part类的导入来源
    使用google-generativeai库内置的Part类型,而非Vertex AI版本的Part。

  2. 确保PDF数据格式正确
    传入Part.from_data()的必须是PDF文件的二进制字节数据,若传入的是文件路径,需先以二进制模式读取。

修正后的完整代码

import google.generativeai as genai
from google.generativeai.types import Part  # 关键:导入正确的Part类

def get_vision_response(pdf_file):
    try:
        genai.configure(api_key=GOOGLE_API_KEY)

        model = genai.GenerativeModel(
            model_name="gemini-1.5-pro-latest",
            system_instruction=[
                "你是一个精准的文本转录助手,能准确识别图像和PDF中的文字并转录。",
                "你的任务是转录提供的PDF文件中的所有文本内容。",
            ],
        )

        # 若pdf_file是文件路径,取消注释以下代码读取为二进制数据
        # with open(pdf_file, "rb") as f:
        #     pdf_data = f.read()
        # pdf_part = Part.from_data(pdf_data, mime_type="application/pdf")
        
        pdf_part = Part.from_data(pdf_file, mime_type="application/pdf")

        prompt = "请转录这份PDF文档中的全部文本内容。"

        full_content = [prompt, pdf_part]
        
        response = model.generate_content(full_content)
        response.resolve()  # 确保响应完全生成
        
        return response.text
        
    except Exception as e:
        print("调用模型时发生错误")
        
        # 保存错误日志(指定utf-8编码避免乱码)
        with open("error_log.txt", "w", encoding="utf-8") as error_file:
            error_file.write(f"发生错误: {str(e)}\n")

额外注意事项

  • 执行pip install -U google-generativeai确保库版本为最新,避免旧版本的兼容性问题。
  • 若传入的pdf_file是文件路径而非二进制数据,必须先读取为字节流再传入Part.from_data()。
  • 添加response.resolve()是为了处理Gemini的流式响应机制,确保所有转录内容生成完毕后再获取结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:33:10