在Windows上部署Unlimited-ocr并提供给大模型使用
我在尝试把我的图片转换为文字恰好看到百度开源了Unlimited-ocr项目就想把它部署到自己的Windows电脑上并提供给其他大模型使用。Unlimited-ocr https://github.com/baidu/Unlimited-OCR我开源的代码 https://github.com/tinygone/unlimited-ocr-mcp-server问题先让Claude Code分析了这个github repo给了很多输出意思是可以帮我安装。我本能拒绝因为我自己都没看清楚它会怎么使用更不知道它到底给我安装了啥。我担心的几个问题1、都给我安装到C盘了2、模型不知道下载到哪3、官方的仓库里面几乎没有代码readme里面有一点我也不知道怎么调用它。准备本机是Windows11操作系统Nvidia RTX5070TI显卡CUDA版本是13.1安装了Anaconda所以会使用conda管理python环境。unlimited-ocr官网显示推荐使用python 3.12.3 CUDA12.9但是在pytorch官网安装已经找不到CUDA12.9所以我还是决定把我的CUDA升级一下然后安装最新的CUDA。升级前安装后安装过程1 创建项目目录 D:/aiworkspace/uocr-workspace可选并创建虚拟环境uocrconda create -n uocr python3.12.3 conda activate uocr2 安装pytorch访问官网 https://pytorch.org/get-started 获取最新的安装链接pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu1323 安装其他依赖在uocr-workspace下创建一个requirements.txt文件内容来自repo里面的readme.md我把torch和torchvision删除transformers4.57.1 Pillow12.1.1 matplotlib3.10.8 einops0.8.2 addict2.4.0 easydict1.13 pymupdf1.27.2.2 psutil7.2.2执行如下命令安装依赖pip install -r requirements.txt4 初步验证执行下面的命令python -c import torch; print(torch:, torch.__version__); print(cuda:, torch.cuda.is_available()); print(device:, torch.cuda.get_device_name(0) if torch.cuda.is_available() else CPU only)输出如下说明正常torch: 2.13.0cu132 cuda: True device: NVIDIA GeForce RTX 5070 Ti Laptop GPU5 设置环境变量通过代理访问HuggingFace设置模型下载的目录不然就会下载到C盘。$env:HF_ENDPOINT https://hf-mirror.comecho$env:HF_ENDPOINT$env:HF_HOME E:\hgcacheecho$env:HF_HOME6 创建run_ocr.py内容如下 Unlimited-OCR 推理脚本 用法: # 单张图片gundam 配置适合大图 python run_ocr.py --mode single -i inputs/test.jpg -o outputs # 多张图片 python run_ocr.py --mode multi -i inputs/page1.png inputs/page2.png -o outputs # PDF自动转图后走多页 python run_ocr.py --mode pdf -i inputs/doc.pdf -o outputs --dpi 300 import argparse import os import time import torch from transformers import AutoModel, AutoTokenizer MODEL_NAME baidu/Unlimited-OCR def load_model(): print([1/3] 加载 tokenizer 和模型 ...) t0 time.time() tokenizer AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_codeTrue) model AutoModel.from_pretrained( MODEL_NAME, trust_remote_codeTrue, use_safetensorsTrue, torch_dtypetorch.bfloat16, ) model model.eval().cuda() print(f 模型加载完成耗时 {time.time() - t0:.1f}s) if torch.cuda.is_available(): print(f GPU: {torch.cuda.get_device_name(0)}) return tokenizer, model def infer_single(tokenizer, model, image_file, output_dir): print(f[2/3] 单图推理: {image_file}) model.infer( tokenizer, promptimagedocument parsing., image_fileimage_file, output_pathoutput_dir, base_size1024, image_size640, crop_modeTrue, # gundam 配置 max_length32768, no_repeat_ngram_size35, ngram_window128, save_resultsTrue, ) def infer_multi(tokenizer, model, image_files, output_dir): print(f[2/3] 多页推理: {len(image_files)} 张图) model.infer_multi( tokenizer, promptimageMulti page parsing., image_filesimage_files, output_pathoutput_dir, image_size1024, max_length32768, no_repeat_ngram_size35, ngram_window1024, save_resultsTrue, ) def pdf_to_images(pdf_path, dpi300): import tempfile import fitz # PyMuPDF print(f PDF 转图: {pdf_path} (dpi{dpi})) doc fitz.open(pdf_path) tmp_dir tempfile.mkdtemp(prefixpdf_ocr_) mat fitz.Matrix(dpi / 72, dpi / 72) paths [] for i, page in enumerate(doc): out os.path.join(tmp_dir, fpage_{i1:04d}.png) page.get_pixmap(matrixmat).save(out) paths.append(out) doc.close() print(f 转出 {len(paths)} 页 - {tmp_dir}) return paths def main(): parser argparse.ArgumentParser(descriptionUnlimited-OCR runner) parser.add_argument(--mode, choices[single, multi, pdf], defaultsingle, help推理模式: single单图, multi多图, pdfPDF) parser.add_argument(-i, --inputs, nargs, requiredTrue, help输入文件路径(single/multi 传图片, pdf 传 .pdf)) parser.add_argument(-o, --output, defaultoutputs, help输出目录) parser.add_argument(--dpi, typeint, default300, helpPDF 转图 DPI (仅 pdf 模式)) args parser.parse_args() os.makedirs(args.output, exist_okTrue) tokenizer, model load_model() if args.mode single: infer_single(tokenizer, model, args.inputs[0], args.output) elif args.mode multi: infer_multi(tokenizer, model, args.inputs, args.output) elif args.mode pdf: images pdf_to_images(args.inputs[0], args.dpi) infer_multi(tokenizer, model, images, args.output) print(f[3/3] 完成. 结果目录: {os.path.abspath(args.output)}) if __name__ __main__: t time.time() main() print(f总耗时: {time.time() - t:.1f}s)7 单次调用测试如下命令首先会下载模型程序会先下载模型然后执行识别任务。python run_ocr.py --mode single -i inputs/1.jpg -o outputs8 为了能让大模型调用unlimited-ocr需要运行serve_ocr.py启动一个http服务既兼容OpenAI 兼容 API 服务可以为dify/claude code提供模型服务也可以作为一个独立的http服务。python serve_ocr.py9 创建mcp核心文件是ocr_mcp_server.py然后可以让claude code把这个mcp加入进去。10 引入skill见.claude/skills/uocr11 在Claude Code中执行效果/uocr 识别 inputs/2.png告诉我内容

相关新闻

2026年全平台GEO服务商横评:主流AI引擎适配能力深度对比

2026年全平台GEO服务商横评:主流AI引擎适配能力深度对比

引言随着国内生成式AI应用的快速普及,用户搜索行为已分散到多个主流大模型平台,豆包、元宝、DeepSeek、Kimi、通义千问、百度AI等平台均拥有亿级用户规模,不同平台的用户画像、使用场景存在明显差异。由于不同大模型的算法逻辑、内容偏好、引…

2026/7/22 9:15:47阅读更多 →
深入理解 Go Context:从设计哲学到工程实践

深入理解 Go Context:从设计哲学到工程实践

引言如果你写过 Go 语言的网络服务,你大概率对 context.Context 这个类型不陌生。它出现在几乎每一个 HTTP handler 的签名里,出现在每一次数据库调用的参数列表中,出现在每一个 gRPC 客户端的接口定义上。很多人对它的态度是 "函数签名…

2026/7/22 8:39:06阅读更多 →
【小程序计算机毕业设计案例】基于 SpringBoot 的读研生活咨询服务平台 研究生备考答疑社区小程序的设计与实现(程序+文档+讲解+定制)

【小程序计算机毕业设计案例】基于 SpringBoot 的读研生活咨询服务平台 研究生备考答疑社区小程序的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/22 10:58:46阅读更多 →
C语言200行实现HTTP POST请求解析:从协议原理到代码实战

C语言200行实现HTTP POST请求解析:从协议原理到代码实战

1. 项目概述:为什么要在C语言里“折腾”HTTP服务器?如果你是一个C语言的开发者,或者正在学习系统编程,看到“HTTP服务器”这个词,第一反应可能是:“这玩意儿不是用Python、Go或者Java更简单吗?”…

2026/7/23 5:01:18阅读更多 →
总结 7.22

总结 7.22

今天学了408的网络层,了解了ipv4协议,了解了最开始的abc类地址,了解了全零和全一不能被主机使用,全一代表广播,全零在路由器找不到对应ip地址时使用。然后了解了子网掩码,以及让子网划分成了不同的广播域的…

2026/7/23 5:01:18阅读更多 →
C++字符串类手动实现:从内存管理到STL兼容的完整指南

C++字符串类手动实现:从内存管理到STL兼容的完整指南

1. 项目概述:为什么我们需要自己实现C字符串方法? 在C的世界里, std::string 无疑是处理文本数据的瑞士军刀。标准库为我们封装了丰富的成员函数,从查找、替换到子串操作,几乎无所不能。那么,一个很自然的…

2026/7/23 5:01:18阅读更多 →
纳米P视频用户体验解析:核心功能效果与落地优势全梳理

纳米P视频用户体验解析:核心功能效果与落地优势全梳理

电商内容生产普遍痛点与用户核心疑问随着电商行业流量竞争加剧,短视频、种草笔记、投流素材等内容的更新频率、产出量级要求逐年提升,绝大多数电商商家、品牌营销团队都面临多重内容生产困境。一方面,专业内容制作成本高企,找外部…

2026/7/23 5:01:18阅读更多 →
CDN配置优化实战:提升Web性能的关键策略

CDN配置优化实战:提升Web性能的关键策略

1. CDN配置的核心价值与基础认知第一次接触CDN是在2016年负责一个跨境电商项目时,当时我们的静态资源加载时间长达3秒以上,海外用户流失率居高不下。在接入CDN后的第一周,全球平均加载时间直接降到800毫秒,转化率提升了27%。这个经…

2026/7/23 5:01:18阅读更多 →
技术向善:端侧AI如何让智能门禁“认得”疲惫的你——ZUU中优人脸识别深度解析

技术向善:端侧AI如何让智能门禁“认得”疲惫的你——ZUU中优人脸识别深度解析

作为一名长期关注边缘计算与端侧AI落地的开发者,我一直对“人脸门禁”这个品类有种复杂的感受。市面上方案很多,但真正能稳定应对真实世界复杂场景的,屈指可数。直到最近研究了一家深圳厂商的产品逻辑——ZUU中优的动态双目AI门禁&#xff0c…

2026/7/23 4:59:18阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →