微信扫码
添加专属顾问
我要投稿
掌握大模型技术,从图片中提取结构化数据不再困难。 核心内容: 1. 环境配置:Python调用大模型的步骤和必要安装 2. Ollama应用:本地运行、创建和共享大型语言模型 3. 实验代码:如何使用Ollama从图片中提取信息
在快速发展的人工智能领域,将视觉功能集成到大型语言模型中,可以用于解读图片语义, 从图片中提取出结构化数据。
在Python中调用大模型, 先要配置好相应的环境。
pip3 install ollama
pip3 install pydantic
pip3 install instructor
Ollama是一款开源应用程序,可让您使用 MacOS、Linux 和 Windows 上的命令行界面在本地运行、创建和共享大型语言模型。
Ollama 可以直接从其库中访问各种 LLM,只需一个命令即可下载。下载后,只需执行一个命令即可开始使用。这对于工作量围绕终端窗口的用户非常有帮助。Ollama的安装、配置、使用的详细教程可阅读 教程 | 如何使用 Ollama 下载 & 使用本地大语言模型
截止2025.2.22, 在 Ollama 网站中公开的 视觉类大模型 有7个, 这里简单介绍其中的两个
打开命令行 cmd (在mac中对应terminal) , 执行安装命令
ollama pull llama3.2-vision:11b
ollama pull minicpm-v:8b
打开命令行 cmd (在mac中对应terminal) , 执行启动服务命令
ollama serve
截图的文件名 test_screen.png
import ollama
#论文的截图文件 test_screen.png
#注意,代码文件与截图文件同处于一个文件夹内
response = ollama.chat(
model='minicpm-v',
messages=[{
'role': 'user',
'content': '这是一篇什么领域的论文?',
'images': ['test_screen.png']
}]
)
print(response)
Run
ChatResponse(model='minicpm-v', created_at='2025-02-22T13:11:25.766017Z', done=True, done_reason='stop', total_duration=12956488125, load_duration=819433041, prompt_eval_count=461, prompt_eval_duration=9630000000, eval_count=147, eval_duration=2499000000, message=Message(role='assistant', content='这张图片是关于一篇题为“开或关在轨:如何(破碎)的线索影响消费者决策”的文章标题页。该文章由杰基·西尔弗曼和亚历山德拉·巴拉斯奇撰写,探讨了消费者行为的新技术追踪的后果。研究发现,在七项研究中,持续的行为轨迹会引发高消费后的强化,并且如果打破了这些轨迹,则会产生相反的效果,从而影响消费者的决策。所用的研究方法包括跟踪、行为分析以及追踪和监测等工具和技术,以了解线索对不同领域(如体育、学习)的影响。关键词列出了文章的焦点领域:断路器、行为追踪和记录、消费者动机、参与度。', images=None, tool_calls=None))
设计更详细的提示prompt, 通过使用typing 和pydantic 设计数据结构,输出为字典类数据。
import instructor
import os
from typing import List
from pydantic import BaseModel
PROMPT = """请分析提供的图片,并从中提取以下信息:
- 标题(title)
- 学科(subject)
- 领域(field)
请以如下格式返回结果:
{
"title": "论文的标题",
"subject": "论文所属学科",
"field": "论文的研究领域",
}"""
#本地已安装大模型minicpm-v
model_name = 'minicpm-v'
base_url = 'http://127.0.0.1:11434/v1'
api_key = 'NA'
#论文的截图文件test_screen.png
#注意,代码文件与截图文件同处于一个文件夹内
image = instructor.Image.from_path("test_screen.png")
client = instructor.from_openai(
OpenAI(
base_url=base_url,
api_key=api_key, # required, but unused
),
mode=instructor.Mode.JSON,
)
classPaper(BaseModel):
title: str
subject: List[str]
field: List[str]
# Create structured output
result = client.chat.completions.create(
model=model_name,
messages=[
{"role": "asistant", "content": PROMPT},
{"role": "user", "content": image},
],
response_model = Paper,
temperature=0.0
)
result.model_dump()
Run
{'title': 'On or Off Track: How (Broken) Streaks Affect Consumer Decisions',
'subject': ['streaks, behavioral tracking and logging, technology, goals and motivation'],
'field': ['consumer behavior', 'marketing research', 'engagement strategies']}
大邓测试发现 结构化输出 很容易出错, 相比之下 非结构化输出 更稳定一些。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-26
刚刚,OpenAI 发布生图神器狙击 Google!一句话 P 图奥特曼现场玩梗,免费能用
2025-03-26
GPT-4o 生图实测:很强(附:20+场景示例 & 缺陷整理)
2025-03-24
0.35秒OCR整页文档,比Qwen2.5 VL高出10%的文档转换多模态模型!
2025-03-24
主流多智能体框架设计原理
2025-03-21
为了致敬Manus,我做了一款产品
2025-03-21
一文搞懂多模态视觉大模型(CLIP和SAM)
2025-03-20
轻量级多模态代理框架 Agno 像搭乐高一样构建私有化AGI中台
2025-03-20
解读: Cline v3.5 在MCP交互上的升级 - 视觉化输出
2024-09-12
2024-06-14
2024-08-06
2024-06-17
2024-05-30
2024-08-30
2024-10-07
2024-11-28
2024-04-21
2024-10-16