用阶跃星辰AI大模型批量识别图片中的文本

2024-07-31 16:30:59 浏览数 (2)

国内大模型公式阶跃星辰推出的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()

运行后,程序识别出了一些内容,但还谈不上可用。

0 人点赞