ollama部署大模型

 Ollama 是目前全球最火的开源工具之一,它的核心作用是让你能在自己的电脑上,像运行普通软件一样运行各种强大的 AI 大模型(如 Llama 3、Gemma、Mistral 等)。简单来说,它把复杂的 AI 模型部署过程简化成了一键安装。

 

ollama官网地址:https://ollama.com/

1. 下载

  打开官网,下载ollama。本机为windows,以windows为例。

image

 

360截图20260409104037735

2. 模型查看

  打开官网,可以搜索或查看ollama官网直接支持下载的模型:

image

 

 

2. 运行大模型

  Ollama 本身没有复杂的图形窗口,主要的交互是在 终端(Terminal) 中完成的。在黑窗口中可以输入以下命令并按回车(以llama3为例)

  ollama run llama3

  下载完成后,终端会出现 >>> 符号,你现在就可以直接输入中文和 AI 聊天了。

  ollama后台启动成功后,windows系统托盘会有ollama羊驼图标,或者我们在浏览器输入http://localhost:11434显示如下:

image

 

  查看已下载模型命令: ollama list

  删除不需要的模型命令:ollama rm 模型名

  查看ollama版本:ollama -v

  对于目前新版本都是有界面的,可以选择不同模型对话(未下载的模型会下载到本地,cloud的一半也会有免费额度):

image

3. 代码调用:

调用方式有很多,如下:

  • ollama调用
  • 标准的 requests
  • 使用 OpenAI SDK(伪装成 OpenAI)
  • 使用 curl 命令

  这里给出ollama调用例子:比较简单如下:

pip install ollama

 

import ollama

# 读取你的图片文件
with open('C:/Pictures/1.bmp', 'rb') as f:
    img_data = f.read()

response = ollama.chat(
    model='llava',  # 必须使用带视觉功能的模型
    messages=[{
        'role': 'user',
        'content': '这张图里的线缆有没有明显的断裂?',
        'images': [img_data]
    }]
)

print(response['message']['content'])

  上面例子中使用多模态大模型llava测试了一个图片。

 下面测试一个局域网内调用glm-ocr大模型(在 2026 年,GLM-OCR 已经成为本地 OCR 领域的“神机”,因为它只有 0.9B 的参数量,却能处理极其复杂的表格、公式和多语言文档。):

ollama pull glm-ocr

核心提示词 (Prompt) 技巧

GLM-OCR 预设了几种特定的指令,输入不同的 Prompt 会有不同的效果:

  • 普通识别:使用 Text Recognition:

  • 公式识别:使用 Formula Recognition: (识别 LaTeX)

  • 表格识别:使用 Table Recognition: (返回 Markdown 表格)

import time
from ollama import Client


def ocr_remote_server(image_path, server_ip):
    try:
        # 1. 初始化客户端,指向局域网服务器
        client = Client(host=server_ip)

        # 2. 发起请求
        response = client.chat(
            model='glm-ocr',
            messages=[{
                'role': 'user',
                'content': 'Text Recognition:',  # 保持使用 GLM-OCR 专用触发词
                'images': [image_path]  # 库会自动处理路径或字节流
            }],
            options={
                'num_ctx': 16384,
                'temperature': 0
            }
        )

        return response['message']['content']

    except Exception as e:
        return f"局域网调用出错: {e}"


# --- 测试运行 ---
LAN_SERVER = "http://192.168.76.98:11434"
img_path = r'1_180.png'

print(f"正在请求服务器 {LAN_SERVER} ...")
t1=time.time()
result = ocr_remote_server(img_path, LAN_SERVER)

print("--- GLM-OCR 识别结果 ---")
t2=time.time()
print(result)
print(t2-t1)

image

   时间与识别效果还不错。

  再看下本地的部署与传入numpy数据的图片:

import cv2
import time
import ollama  # 直接使用本地 ollama 库


def ocr_from_cv2_img(cv_img):
    """
    通过 cv2 图像对象直接调用本地 GLM-OCR
    """
    try:
        # 1. 将 OpenCV 的 BGR 图像编码为 JPG 格式的字节流
        # 这是在内存中完成的,不需要写入磁盘
        success, buffer = cv2.imencode('.jpg', cv_img)
        if not success:
            return "图像编码失败"

        img_bytes = buffer.tobytes()

        # 2. 发起请求(默认连接本地 localhost:11434)
        response = ollama.chat(
            model='glm-ocr:q8_0',
            messages=[{
                'role': 'user',
                'content': 'Text Recognition:',  # GLM-OCR 专用触发词
                'images': [img_bytes]  # 直接传入字节流
            }],
            options={
                'num_ctx': 10,  # 根据识别内容量覆盖范围,调节大小,这里只有一个数字要识别,就改为10了,速度快很多,一般可以设置为2048等
                'temperature': 0,  # 识别类任务建议设为 0
            },
       keep_alive=-1  # -1 表示永不自动卸载
##keep_alive='30m' # 模型在内存中保留30分钟,或设为 '1h'、'24h'
) return response['message']['content'] except Exception as e: return f"本地调用出错: {e}" # --- 测试运行 --- if __name__ == "__main__": # 模拟你现在的流程:先用 cv2 读取图片 img_path = 'num.jpg' # 你的图片路径 frame = cv2.imread(img_path) if frame is None: print(f"无法读取图片: {img_path}") else: print(f"正在本地请求 GLM-OCR 识别内存图片...") t1 = time.time() # 直接传入 cv2 读取的对象 result = ocr_from_cv2_img(frame) t2 = time.time() print("\n--- GLM-OCR 识别结果 ---") print(result) print(f"耗时: {round(t2 - t1, 2)} 秒") # 如果你想预览一下处理前的图片 # cv2.imshow("Preview", frame) # cv2.waitKey(0)

  效果还可以。

 

 

 

 

小结:对ollama安装部署大模型作了简单的介绍,使用ollama调用了本地大模型测试图片与文本识别。要注意num_ctx参数,影响识别速度。另外ollama默认5分钟没有调用模型,模型就会从内存中卸载,再次运行又会变慢,使用keep_alive参数可以调节在内存中的时间。

 

posted @ 2026-04-16 21:34  wancy  阅读(186)  评论(0)    收藏  举报