Ollama 视觉模型:gemma3 图像识别、命令行与 API 调用指南 (Python/JS)

AI
本文详解 Ollama 如何支持视觉模型,通过 gemma3 实现图像识别、分类与问答。提供命令行快速开始及 cURL、Python、JavaScript 多种 API 调用代码示例,帮助开发者快速掌握本地运行视觉模型的核心技术。

视觉模型是一类基于人工智能与计算机视觉技术构建的算法模型,主要用于对图像、视频等视觉类数据进行识别、解析、理解与处理。

视觉模型通过学习海量视觉数据中的特征、结构与规律,能够自动完成图像分类、目标检测、图像分割、人脸识别、场景理解等一系列视觉相关任务,广泛应用于安防监控、自动驾驶、医疗影像分析、内容审核、智能终端交互等多个领域,是实现机器具备视觉感知与认知能力的核心技术载体。

Ollama 支持视觉模型,通过向视觉模型传递图像和文本,模型就能对其看到的内容进行描述、分类和回答相关问题。下面看看 Ollama 如何运行视觉模型:

快速开始

先准备一张图片:

假如图片放在桌面,进入 DOS 窗口,切换到桌面,直接在命令行执行一次与视觉模型对话,如下:

ollama run gemma3 ./code.png whats in this image?

运行效果如下图:

注意,执行上面命令后,由于本地没有下载 gemma3 模型,因此需要下载模型,下载后就可以运行模型了。

使用 Ollama 的 API

提供一个 images 数组。SDK 接受文件路径、URL 或原始字节,而 REST API 则需要 base64 编码的图像数据。

cURL

注意,下面步骤请在 Linux 环境进行,Windows 环境执行会报错:

# 1. 下载一张示例图片
curl -L -o test.jpg "https://upload.wikimedia.org/wikipedia/commons/3/3a/Cat03.jpg"

# 2. 对图像进行编码
IMG=$(base64 < test.jpg | tr -d '\n')

# 3. 将其发送至Ollama
curl -X POST http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
    "model": "gemma3",
    "messages": [{
    "role": "user",
    "content": "What is in this image?",
    "images": ["'"$IMG"'"]
    }],
    "stream": false
}'

Python

记得通过 pip install ollama 安装依赖库:

from ollama import chat
# from pathlib import Path

# 传入图片的路径
path = r'C:\Users\Administrator\Desktop\code.png'

# 你也可以传入经过base64编码的图片数据
# img = base64.b64encode(Path(path).read_bytes()).decode()
# 或者原始字节数据
# img = Path(path).read_bytes()

response = chat(
  model='gemma3',
  messages=[
    {
      'role': 'user',
      'content': '这张图片里有什么?请简洁描述。',
      'images': [path],
    }
  ],
)

print(response)

运行结果:

$ python .\ollama_example10.py

model='gemma3' created_at='2026-04-09T03:17:34.6674915Z' done=True done_reason='stop' total_duration=5347346300 
load_duration=276552300 prompt_eval_count=278 prompt_eval_duration=109138000 eval_count=41 eval_duration=4849456000 
message=Message(role='assistant', content='这张图片展示了一个简单的 C 程序,它使用 `printf` 函数在屏幕上打印 "Hello, World!" 字符串。
这是一个常见的入门程序,用来测试编译器和运行环境是否正常。', thinking=None, images=None, tool_name=None, tool_calls=None) logprobs=None

JavaScript

记得通过 npm install ollama 安装依赖库:

import ollama from 'ollama'

// 图片URL地址
const imagePath = '/absolute/path/to/image.jpg'
// 调用模型
const response = await ollama.chat({
  model: 'gemma3',
  messages: [
    { role: 'user', content: '这张图片里有什么?', images: [imagePath] }
  ],
  stream: false,
})

console.log(response.message.content)

运行结果:

$ node .\ollama_example10.js

{
  model: 'gemma3',
  created_at: '2026-04-09T03:19:37.2727789Z',
  message: {
    role: 'assistant',
    content: '这张图片显示了一个简单的C语言程序,它打印出“Hello, World!”。\n' +
      '\n' +
      '具体来说,代码如下:\n' +
      '\n' +
      '*   **`#include <stdio.h>`**:  这行代码包含了标准输入/输出库的头文件,它提供了诸如 `printf` 之类的函数,用于控制输出。\n' +
      '*   **`int main() { ... }`**: 这是C程序的入口点,所有代码都必须在 `main()` 函数内部。\n' +
      '*   **`printf("Hello, World!\\n");`**:  这行代码使用 `printf` 函数在屏幕上打印出字符串“Hello, World!”。 `\\n` 是一个换行符,确保输出后光标移动到下一行。\n' +
      '*   **`return 0;`**:  这行代码指示程序正常完成。  `0` 通常表示成功。\n' +
      '\n' +
      '这个程序是C语言学习的基础,它展示了如何使用 `printf` 函数向控制台输出文本。'
  },
  done: true,
  done_reason: 'stop',
  total_duration: 26779286500,
  load_duration: 248740200,
  prompt_eval_count: 274,
  prompt_eval_duration: 272540200,
  eval_count: 206,
  eval_duration: 25998279700
}

注意:运行模型可能有点慢,请耐心等待……

  

谁不会休息,谁就不会工作。 —— 列宁
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号