国内大模型公式阶跃星辰推出的Step-1V是一款千亿参数的多模态大模型, 该模型在多个领域表现出色,特别是在图像理解、多轮指令跟随、数学能力、逻辑推理和文本创作等方面。多模态大模型在文本大模型的基础上,增加了多模输入能力,如语音、图像、视频等,并将它们融合在一起,以实现更全面、更准确的理解和推理。Step-1V不仅在技术上取得了显著进展,还在实际应用中展现了强大的性能。例如,在内容生成、理解分析、联网搜索和长文理解等方面表现优异。
step-1v该模型拥有强大的图像理解能力,暂时只开放文本和图像输入,且仅支持文本生成。上下文长度分别为8k和32k。收入图像的分辨率长或宽不能超过4096像素 ,支持的图像格式:JPG/JPEG、PNG、静态GIF、WebP。
现在用图片格式表格来测试下其表现。
在ChatGPT中输入提示词:
写一个Python脚本,完成一个OCR的任务,具体步骤如下:
打开文件夹:D:downloads世界人工智能大会WAIC2024展商名录
读取里面所有的png图片;
用step-1v-8k大模型将图片中的表格内容识别出来,保存为excel表格,表格名称为图片文件名,保存在同一个文件夹中;
注意:
每一步都要输出信息到屏幕上
直接使用requests库与stepfun API进行交互,绕过OpenAI客户端。
step-1v-8k大模型的api_key为:"XXX"
step-1v-8k大模型的代码示例:
# -*- coding: utf8 -*-
import base64
import requests
from openai import OpenAI
client = OpenAI(api_key="STEP_API_KEY", base_url="https://api.stepfun.com/v1")
# 加载图片到内存,仅演示。按需改成读文件等
r = requests.get("https://www.stepfun.com/assets/section-1-CTe4nZiO.webp")
r.raise_for_status()
image_str = base64.b64encode(r.content).decode('ascii')
completion = client.chat.completions.create(
model="step-1v-8k",
messages=[
{
"role": "system",
"content": "你是由阶跃星辰提供的AI聊天助手,你除了擅长中文,英文,以及多种其他语言的对话以外,还能够根据用户提供的图片,对内容进行精准的内容文本描述。在保证用户数据安全的前提下,你能对用户的问题和请求,作出快速和精准的回答。同时,你的回答和建议应该拒绝黄赌毒,暴力恐怖主义的内容",
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "用优雅的语言描述这张图片",
},
{
"type": "image_url",
"image_url": {
"url": "data:image/webp;base64,%s" % (image_str),
},
},
],
},
],
)
print(completion)
ChatGPT生成的源代码:
import os
import base64
import requests
import pandas as pd
from io import StringIO
# Set the API key and base URL for the stepfun API
api_key = "XXX"
base_url = "https://api.stepfun.com/v1/chat/completions"
# Set the folder path
folder_path = r"D:downloads世界人工智能大会WAIC2024展商名录"
# Function to perform OCR on an image and save the output to Excel
def process_image(image_path):
# Load image
with open(image_path, "rb") as image_file:
image_str = base64.b64encode(image_file.read()).decode('ascii')
# Perform OCR
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
data = {
"model": "step-1v-8k",
"messages": [
{
"role": "system",
"content": "你是由阶跃星辰提供的AI聊天助手,你除了擅长中文,英文,以及多种其他语言的对话以外,还能够根据用户提供的图片,对内容进行精准的内容文本描述。在保证用户数据安全的前提下,你能对用户的问题和请求,作出快速和精准的回答。同时,你的回答和建议应该拒绝黄赌毒,暴力恐怖主义的内容",
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "识别这张图片中的表格内容",
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_str}",
},
},
],
},
],
}
response = requests.post(base_url, headers=headers, json=data)
response.raise_for_status()
completion = response.json()
# Extract the table content from the response
table_content = completion["choices"][0]["message"]["content"]
# Convert the table content to a pandas DataFrame
df = pd.read_csv(StringIO(table_content), sep="t")
# Save the DataFrame to an Excel file
output_path = os.path.splitext(image_path)[0] ".xlsx"
df.to_excel(output_path, index=False)
print(f"Saved OCR result to: {output_path}")
# Main function to process all images in the folder
def main():
print(f"Opening folder: {folder_path}")
# List all png images in the folder
images = [f for f in os.listdir(folder_path) if f.lower().endswith(".png")]
print(f"Found {len(images)} images to process.")
# Process each image
for image in images:
image_path = os.path.join(folder_path, image)
print(f"Processing image: {image_path}")
process_image(image_path)
print("Completed processing all images.")
if __name__ == "__main__":
main()
运行后,程序识别出了一些内容,但还谈不上可用。