当前位置: 首页 > news >正文

GLM-OCR结合Ollama使用:另一种快速调用GLM-OCR模型的方法

GLM-OCR结合Ollama使用:另一种快速调用GLM-OCR模型的方法

1. 项目概述

GLM-OCR是一个基于GLM-V编码器-解码器架构构建的多模态OCR模型,专为复杂文档理解而设计。它集成了在大规模图文数据上预训练的CogViT视觉编码器、轻量级跨模态连接器以及GLM-0.5B语言解码器,支持文本识别、表格识别和公式识别等多种功能。

传统上,GLM-OCR需要通过Gradio界面或Python API调用,而本文将介绍一种更便捷的方法——通过Ollama库来调用GLM-OCR模型。这种方法简化了部署流程,让开发者能够更快速地集成OCR功能到自己的应用中。

2. 环境准备

2.1 安装Ollama

首先需要安装Ollama库,这是一个用于与本地或远程Ollama服务交互的Python客户端:

pip install ollama

2.2 拉取GLM-OCR模型

使用Ollama命令行工具拉取GLM-OCR模型:

ollama pull glm-ocr:latest

这个过程会自动下载模型文件,下载完成后就可以通过API调用了。

2.3 项目依赖配置

创建一个pyproject.toml文件来管理项目依赖:

[project] name = "glm-ocr-ollama-inference" version = "0.1.0" description = "glm-ocr ollama api inference" readme = "README.md" requires-python = ">=3.13,<3.14" dependencies = [ "markupsafe==3.0.2", "ollama>=0.6.1", "torch", "torchaudio", "torchvision", ] [tool.uv.sources] torch = [ { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, ] torchvision = [ { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, ] [[tool.uv.index]] name = "pytorch-cu128" url = "https://download.pytorch.org/whl/cu128" explicit = true

3. 使用Ollama API调用GLM-OCR

3.1 基本调用方法

创建一个Python脚本(如main.py)来调用GLM-OCR模型:

import asyncio from ollama import Client async def main(): client = Client( host="http://localhost:11434", ) response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "text": "Text Recognition:", "formula": "Formula Recognition:", "table": "Table Recognition:" }""", "images": ["inputs/1.png"], } ], ) print(response) response_text = response["message"]["content"] response_lines = response_text.strip().split("\n") for line in response_lines: print(line) if __name__ == "__main__": asyncio.run(main())

3.2 功能说明

GLM-OCR通过Ollama API支持三种主要功能:

  1. 文本识别:使用"text": "Text Recognition:"作为提示词
  2. 表格识别:使用"table": "Table Recognition:"作为提示词
  3. 公式识别:使用"formula": "Formula Recognition:"作为提示词

3.3 参数说明

  • host: Ollama服务地址,默认为http://localhost:11434
  • model: 使用的模型名称,这里是glm-ocr:latest
  • messages: 包含用户输入和图片路径的列表
  • images: 要识别的图片路径数组

4. 实际应用示例

4.1 文本识别

对于普通文档图片,可以使用文本识别功能:

response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "text": "Text Recognition:" }""", "images": ["document.png"], } ], )

4.2 表格识别

对于包含表格的图片,可以使用表格识别功能:

response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "table": "Table Recognition:" }""", "images": ["table.png"], } ], )

4.3 公式识别

对于包含数学公式的图片,可以使用公式识别功能:

response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "formula": "Formula Recognition:" }""", "images": ["formula.png"], } ], )

5. 性能优化建议

5.1 批量处理

如果需要处理多张图片,可以考虑批量处理以提高效率:

responses = [] for image_path in image_paths: response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "text": "Text Recognition:" }""", "images": [image_path], } ], ) responses.append(response)

5.2 异步处理

利用Python的异步特性可以提高处理效率:

async def process_image(image_path): response = await asyncio.to_thread( client.chat, model="glm-ocr:latest", messages=[ { "role": "user", "content": """{ "text": "Text Recognition:" }""", "images": [image_path], } ], ) return response tasks = [process_image(path) for path in image_paths] results = await asyncio.gather(*tasks)

5.3 结果后处理

GLM-OCR返回的结果可以直接使用,也可以根据需要进行后处理:

def process_ocr_result(response): content = response["message"]["content"] # 自定义处理逻辑 processed = content.replace("\n", "<br>") # 示例:替换换行符 return processed

6. 总结

通过Ollama调用GLM-OCR模型提供了一种简单高效的OCR解决方案,相比传统的部署方式具有以下优势:

  1. 部署简单:无需复杂的服务配置,只需安装Ollama并拉取模型
  2. 调用方便:通过简洁的Python API即可完成OCR功能调用
  3. 功能全面:支持文本、表格、公式等多种识别任务
  4. 性能良好:基于GLM-V架构,识别准确率高

这种方法特别适合需要快速集成OCR功能的应用场景,如文档处理系统、自动化办公工具等。开发者可以根据实际需求,灵活选择识别功能和处理方式。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/556183/

相关文章:

  • FastDFS 高可用方案
  • hadoop+spark+hive地铁智慧交通 地铁交通客流量预测系统 交通数据 地铁运营数据 交通轨道数据 可视化大屏
  • RK3568开发板烧录避坑指南:Maskrom和Loader模式切换失败?手把手教你排查(附串口调试技巧)
  • DIY扩展坞翻车记:用威锋VL162芯片修复Type-C接口信号切换失败
  • 树莓派Qt开发:解决私有头文件缺失引发的编译难题
  • 2026年3月充电桩厂家测评:社区物业降本增效十款高性价比综合选购推荐 - 十大品牌推荐
  • 别再手动查CVE了!用OWASP DependencyCheck给你的Java项目做个免费‘体检’(附Maven集成教程)
  • Vivado COE文件全解析:从进制选择到实际工程应用避坑指南
  • Java语言核心-语法特性-泛型机制详解
  • **发散创新:基于Rust的加固型权限控制系统设计与实战**在现代软件开发中,**安全性**已从“可选
  • wxappUnpacker:让微信小程序源代码重见天日的开发者利器
  • 2025-2026年充电桩品牌推荐:高速服务区大功率快充十大口碑品牌综合调研报告 - 十大品牌推荐
  • 国产射频直采收发器CX8242KA的JESD204C接口配置与优化实践
  • 【开题答辩全过程】以 校园博客系统 为例,包含答辩的问题和答案
  • 如何轻松下载B站视频:bilidown工具完整使用指南
  • 告别硬件!用Proteus8.9和VSPD虚拟串口,5分钟搞定51单片机串口通信仿真
  • 系统进程管理
  • MediaMTX终极指南:3分钟搭建跨协议流媒体服务器,告别视频传输烦恼!
  • 3月26日web前端课堂笔记
  • Linux下Protocompiler安装HAPS UMRBUS驱动避坑指南(附权限问题解决方案)
  • 2026年3月充电桩品牌测评:家用车位安全便捷十款高性价比综合选购推荐 - 十大品牌推荐
  • Scarab:空洞骑士模组高效管理的智能解决方案
  • 喜马拉雅音频本地化解决方案:基于Qt5的开源下载工具技术实践
  • LiteMonitor 插件(无需代码基础)开发完全指南 (v1.0)
  • 从理论到实践:LFM2.5-1.2B-Thinking-GGUF解析卷积神经网络原理的可视化展示
  • 3步掌握Buzz字幕智能分割:从杂乱时间戳到专业级字幕的技术实现
  • 2026评测天祝白牦牛肉源头厂,优质肉品等你挑,天祝白牦牛肉实力厂家推荐口碑分析聚焦技术实力与行业适配性 - 品牌推荐师
  • 从游戏地形到数字孪生:TIN技术是如何默默支撑你身边的3D世界的?
  • 【】ai -claude
  • Vue 3项目实战:5分钟搞定复制粘贴功能(附vue-clipboard3完整配置)