最近需要调用大模型,并将结果保存到excel中,效果如下:
代码:
import base64
from zhipuai import ZhipuAI
import os
import pandas as pd
from openpyxl import Workbook
from openpyxl.drawing.image import Image
from io import BytesIO
# 指定图像所在的文件夹路径
img_folder = r"aaa" # 请根据实际路径修改
# 获取文件夹中的所有图片文件(这里假设所有文件都是图片,可以根据需要调整文件类型)
img_paths = [os.path.join(img_folder, f) for f in os.listdir(img_folder) if f.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.gif'))]
# 初始化API客户端
client = ZhipuAI(api_key="xxx") # 填写您自己的APIKey
# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = "Image Recognition Results"
# 设置表头
ws.append(["Image", "Image Name", "Model Output"])
# 循环处理每张图片
for img_path in img_paths:
# 打开每一张图片并转换为base64
with open(img_path, 'rb') as img_file:
img_base = base64.b64encode(img_file.read()).decode('utf-8')
# 调用API进行模型推理
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": img_base
}
},
{
"type": "text",
"text": "图片中有人吗?"
}
]
}
]
)
# 获取模型返回的结果
model_output = response.choices[0].message
print()
# 将图片插入到Excel中
img = Image(img_path)
img.width = 100 # 设置图片的宽度,可以调整
img.height = 100 # 设置图片的高度,可以调整
# 在Excel表格中插入图片
row = len(ws['A']) + 1 # 获取当前行数,用于将图片插入到正确位置
ws.add_image(img, f"A{row}")
# 将图片的文件名和识别结果添加到表格
ws.append([None, os.path.basename(img_path), model_output.content]) # 图片在A列,文件名和结果在其他列
# 保存Excel文件
excel_path = r"aaa" # 请根据需要修改保存路径
wb.save(excel_path)
print(f"结果已成功保存到 Excel 文件:{excel_path}")