1. 使用GLM-OCR与Ollama构建Python OCR识别系统
在当今数字化办公场景中,光学字符识别(OCR)技术已经成为从图像中提取文本信息的重要工具。传统OCR方案往往需要复杂的本地部署或付费API接入,而基于开源模型GLM-OCR与Ollama框架的解决方案,为我们提供了一种灵活高效的替代方案。
这套Python实现的核心价值在于:
- 完全本地化运行,无需依赖第三方API服务
- 支持自定义截图区域和识别提示词
- 提供单次识别和自动循环识别两种模式
- 识别结果自动保存为结构化JSON文件
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 安装必要组件
首先需要安装Ollama服务并拉取GLM-OCR模型:
bash复制# 安装Ollama(根据操作系统选择对应版本)
curl -fsSL https://ollama.com/install.sh | sh
# 拉取GLM-OCR模型
ollama pull glm-ocr
Python环境需要安装以下依赖库:
bash复制pip install ollama pyautogui pillow
注意:pyautogui在不同操作系统上可能有额外依赖,如在Linux上需要安装scrot和python3-tk
2.2 基础功能验证
通过简单代码测试服务连通性:
python复制from ollama import chat
response = chat(
model='glm-ocr',
messages=[{'role': 'user', 'content': 'Hello!'}],
)
print(response.message.content)
如果返回类似"你好!"的响应,说明环境配置正确。
3. 核心功能实现解析
3.1 截图与图像处理模块
python复制def capture_screenshot(region=None):
"""支持全屏或指定区域截图"""
try:
if region:
screenshot = pyautogui.screenshot(region=region)
else:
screenshot = pyautogui.screenshot()
return screenshot
except Exception as e:
print(f"[错误] 截图失败: {e}")
return None
def image_to_base64(image):
"""将PIL图像转为base64编码"""
buffer = io.BytesIO()
image.save(buffer, format='PNG')
return base64.b64encode(buffer.getvalue()).decode('utf-8')
关键点说明:
region参数格式为(left, top, width, height)四元组- 图像统一保存为PNG格式保证质量
- base64编码是Ollama API要求的图像传输格式
3.2 OCR识别核心逻辑
python复制def ollama
