ollama部署大模型
Ollama 是目前全球最火的开源工具之一,它的核心作用是让你能在自己的电脑上,像运行普通软件一样运行各种强大的 AI 大模型(如 Llama 3、Gemma、Mistral 等)。简单来说,它把复杂的 AI 模型部署过程简化成了一键安装。
ollama官网地址:https://ollama.com/
1. 下载
打开官网,下载ollama。本机为windows,以windows为例。


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

2. 运行大模型
Ollama 本身没有复杂的图形窗口,主要的交互是在 终端(Terminal) 中完成的。在黑窗口中可以输入以下命令并按回车(以llama3为例)
ollama run llama3
下载完成后,终端会出现 >>> 符号,你现在就可以直接输入中文和 AI 聊天了。
ollama后台启动成功后,windows系统托盘会有ollama羊驼图标,或者我们在浏览器输入http://localhost:11434显示如下:

查看已下载模型命令: ollama list
删除不需要的模型命令:ollama rm 模型名
查看ollama版本:ollama -v
对于目前新版本都是有界面的,可以选择不同模型对话(未下载的模型会下载到本地,cloud的一半也会有免费额度):

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)

时间与识别效果还不错。
再看下本地的部署与传入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参数可以调节在内存中的时间。

浙公网安备 33010602011771号