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

【Ollama】本地OCR

文章目录

  • 1. 简述
  • 2. python简单实现

1. 简述

利用ollama的API接口访问qwen2.5vl,提供提示词和图片,返回提取后的文字/公式,实现本地OCR功能。

2. python简单实现

import base64
import requests
import jsondef image_to_base64(image_path):"""将图像文件转换为 base64 编码字符串"""with open(image_path, "rb") as image_file:# 读取图像并转换为 base64 编码base64_str = base64.b64encode(image_file.read()).decode('utf-8')return base64_strdef ocr_with_qwen25vl(image_path, model="qwen2.5vl", stream=False):"""使用 qwen2.5vl 模型进行 OCR 识别参数:image_path: 图像文件路径model: 模型名称,默认为 qwen2.5vlstream: 是否流式返回结果返回:识别到的文本内容"""# 转换图像为 base64 编码image_base64 = image_to_base64(image_path)# API 请求 URLurl = "http://localhost:11434/api/chat"# 请求参数payload = {"model": model,"messages": [{"role": "user","content": "请识别图像中的所有文本内容,包括格式和排版信息,直接返回识别结果,不要额外解释。","images": [image_base64]  # 多模态模型接收的图像列表}],"stream": stream}try:# 发送 POST 请求response = requests.post(url,headers={"Content-Type": "application/json"},data=json.dumps(payload))response.raise_for_status()  # 检查请求是否成功if stream:# 流式处理响应result = ""for line in response.iter_lines():if line:line_data = json.loads(line)if "message" in line_data and "content" in line_data["message"]:result += line_data["message"]["content"]if line_data.get("done", False):breakreturn resultelse:# 非流式响应response_data = response.json()return response_data["message"]["content"]except requests.exceptions.RequestException as e:print(f"API 请求失败: {e}")return Noneexcept json.JSONDecodeError as e:print(f"响应解析失败: {e}")return None# 使用示例
if __name__ == "__main__":# 替换为你的图像文件路径image_path = R"图片路径"# 调用 OCR 函数ocr_result = ocr_with_qwen25vl(image_path=image_path,model="qwen2.5vl",stream=False  # 非流式模式,一次性获取结果)# 打印识别结果if ocr_result:print("OCR 识别结果:")print(ocr_result)
http://www.xdnf.cn/news/1361143.html

相关文章:

  • 波兰密码破译机bomba:二战密码战的隐形功臣
  • Shell 循环实战:while 与 until 的趣味编程之旅
  • 3.4 磁盘存储器 (答案见原书 P194)
  • 【重学MySQL】八十八、8.0版本核心新特性全解析
  • Unity的Cursor.lockState
  • DeepSeek对采用nginx实现透传以解决OpenShift 4.x 私有数据中心和公有云混合部署一套集群的解答
  • 【SBP】Unity 打包构建管线原理解析于对比
  • 联想win11笔记本音频失效,显示差号(x)
  • 半年网络安全转型学习计划表(每天3小时)
  • 从成本中心到价值创造者:网络安全运维的实施框架与价值流转
  • VMware centos磁盘容量扩容教程
  • Windows 系统下 Android SDK 配置教程
  • 使用 Frida 运行时检测 Android 应用的真实权限状态 (App Ops)
  • 强逆光干扰漏检率↓78%!陌讯多模态融合算法在光伏巡检的实战优化
  • Java全栈开发面试实战:从基础到高并发场景的深度解析
  • Python性能优化实战(二):让循环跑得比博尔特还快
  • 27.编程思想
  • 【golang长途旅行第30站】channel管道------解决线程竞争的好手
  • Teams Bot机器人实时语音识别的多引擎的处理
  • TCP--执行Linux命令(虚拟xshell)
  • 数据建模怎么做?一文讲清数据建模全流程
  • 一、基因组选择(GS)与基因组预测(GP)
  • 网络安全转型书籍清单
  • 【Java开发日记】我们来讲一讲 Channel 和 FileChannel
  • 深度学习之第一课深度学习的入门
  • VirtualBox安装openEuler24.03
  • daily notes[5]
  • 前端 vs 后端请求:核心差异与实战对比
  • 05 线性代数【动手学深度学习v2】
  • 中介者模式与几个C++应用实例