Umi-OCR:开源本地文字识别工具,支持截图批量处理与API集成
2026/9/7 13:01:26 网站建设 项目流程

不联网、不注册、无广告、没次数限制,还能截图识别、批量处理图片和 PDF,甚至识别二维码——这是很多人对 Umi-OCR 的第一印象。它来自 GitHub 开源社区,本质是一个本地 OCR 工具:文字识别全部在本地完成,数据不离开电脑,隐私性比在线 OCR 强不少。

在整理这篇文章之前,我把用户真正关心的几个点拆了一遍:能不能离线用、CPU 能不能跑、批量任务快不快、能不能通过 API 接到自己的自动化脚本里,以及下载和启动有没有坑。这篇文章会按“能力速览 -> 适用场景 -> 环境准备 -> 安装启动 -> 功能测试 -> 批量/并发 -> API 集成 -> 性能观察 -> 排错 -> 最佳实践”的顺序完整过一遍。

适合的读者:经常要整理截图文字的人,需要批量把图片/PDF 转成可检索文本的用户,对数据隐私敏感、不想上传云端 OCR 的开发者,以及想找一个可二次集成的开源 OCR 工具的自动化爱好者。

1. 核心能力速览

能力项说明
项目类型免费、开源、离线的本地文字识别软件
开源来源GitHub 开源项目
主要功能截图识别、批量图片识别、批量 PDF 识别、二维码识别
运行方式本地离线运行,无广告、无次数限制
平台支持以 Windows 一键包为主,具体以 GitHub Releases 发布页为准
硬件门槛CPU 可跑;GPU 版需要 NVIDIA 显卡驱动/CUDA,CPU 版对显卡无要求
技术生态与 PaddleOCR 生态关系密切,社区讨论中经常一起出现
API 能力部分版本或插件扩展支持 HTTP API,需要按实际版本确认
批量任务支持批量图片/PDF,通常可配置并发数
推荐场景本地截图文字提取、大量图片/PDF 转文本、数据隐私要求较高的 OCR 场景

关键信息可以在开头就下结论:Umi-OCR 不是那种需要折腾半天环境的深度学习项目,它更接近一个开箱即用的桌面工具。下载安装包、解压、启动,之后就能用快捷键截图识字。普通办公用的 CPU 也能跑,只是大批量处理时速度会慢一些。

2. 适用场景与使用边界

2.1 适合谁

  • 需要把截图里的文字变成可复制文本的人。工作群截图、网页截图、聊天记录截图,按快捷键框选,文字就出来了。
  • 需要批量整理图片资料的人。比如把扫描件、产品图、纸质文档照片成批拖进去,统一导出成 txt 或 Markdown。
  • 需要处理 PDF 的人。多页 PDF 可以直接丢进去识别,输出成文本文件或 Markdown 文档,比逐页截图再识别省非常多时间。
  • 对隐私敏感的用户。OCR 过程在本地完成,图片不会上传到第三方服务器,这是 Umi-OCR 和在线 OCR 最大的区别。

2.2 不适合谁

  • 需要高精度识别复杂表格、数学公式、手写文档的场景。通用 OCR 在这些方向上效果有限,建议选择专门的表格识别引擎或公式识别工具。
  • 需要在手机端使用的人。Umi-OCR 主要面向桌面端,移动端体验需要另外找替代方案。
  • 需要大规模 GPU 高并发集群部署的团队。虽然能通过 API 集成,但它定位是本地桌面工具,不是为服务器集群设计的,建议先验证瓶颈再决定是否上生产。

2.3 使用边界与安全提醒

  • 识别版权书籍、付费文档、他人软件界面截图时,注意只做个人合理使用,需要分发时要获得授权。
  • 包含身份证、银行卡、通讯录等个人敏感信息的截图,识别结果本地生成后同样要按照敏感文件管理,不要随便同步到公开网盘。
  • 如果后续通过 API 暴露识别服务,只允许内网访问,不要直接暴露到公网,避免被滥用或造成数据泄露风险。

3. 环境准备与前置条件

从多数开源桌面工具的常见部署路径看,Umi-OCR 的准备工作不复杂,但有几个前置条件需要先确认。

3.1 检查清单

检查项建议
操作系统优先 Windows 10/11;其他系统需要看项目是否发布了对应安装包
磁盘空间安装包加模型文件会占一定空间,建议预留 2GB 以上,具体以实际版本为准
内存普通 8GB 可运行;识别大图或多页 PDF 时建议 16GB
显卡CPU 版不需要独显;GPU 版需要 NVIDIA 显卡和合适的驱动
网络安装阶段需要下载安装包/模型,之后可完全离线使用
端口如果启用 HTTP API,需要确认端口没有被占用

3.2 显卡与驱动

GPU 版能不能用,很大程度上取决于显卡驱动和推理框架是否匹配。如果机器上有 NVIDIA 显卡,安装对应版本驱动后可以尝试 GPU 版;如果只有核显或者 AMD/Intel 独立显卡,优先选 CPU 版。

热门搜索里经常出现“Intel A770 显卡 OCR 加速”,这说明用户确实关心非 NVIDIA 显卡的加速效果。更稳妥的判断是:Intel 显卡能否参与加速,取决于 OCR 推理框架是否支持对应后端。即使支持,可能也需要实验性配置。实际效果必须在本机跑一遍才能下结论,不要单纯看参数。

3.3 端口占用确认

如果要用 API 接口,启动前可以用通用命令检查端口占用情况。在 Windows 命令行执行:

netstat -ano | findstr "PORT"

PORT替换成你实际要使用的端口。如果输出为空,说明端口可用;如果有输出,就需要在 API 配置中换一个端口。

4. 下载、安装与启动

4.1 下载安装包

首选渠道是 GitHub Releases。打开项目主页,在 Releases 页面下载最新版本的安装包或压缩包。由于本地网络环境不同,GitHub 下载速度可能波动,可以试试以下安全做法:

  • 使用支持断点续传的下载工具,避免下载中途失败后重新开始。
  • 尽量选择官方 Releases 页面里的安装包,不要从第三方论坛下载来路不明的版本,防止被植入额外文件。
  • 下载后可以校验压缩包的 SHA256 等校验值,确认安装包完整性。

4.2 解压与启动

下载完成后,把压缩包解压到磁盘空间充足的目录,例如D:\Tools\Umi-OCR。目录里不要带中文空格等问题路径,虽然大多数情况下没问题,但干净的路径可以避免很多奇怪错误。

启动方式一般是解压后运行主程序,例如:

# Windows 一键包示例,具体程序名以解压目录中实际内容为准 D:\Tools\Umi-OCR\Umi-OCR.exe

首次启动时,程序可能需要加载 OCR 模型文件。如果模型是内置在安装包里的,等待模型加载完成即可;如果模型需要单独下载,程序会在启动界面提示。这一步一定要有点耐心,模型初始化完成后才能进入正常识别状态。

4.3 启动后的界面检查

程序窗口打开后,先确认三件事:

  • 主界面是否正常显示。
  • 截图识别快捷键是否可用。
  • 软件设置的模型/引擎状态是否显示为已就绪或可用状态。

如果启动后提示缺失 DLL、模型文件找不到、引擎加载失败,大概率是安装包解压不完整,或者被安全软件拦截了部分文件。可以把解压目录加入安全软件信任区,再重新解压一次。

5. 功能测试与效果验证

安装完成后,建议按下面的顺序逐项测试,每一分项都能快速判断是否达到预期。

5.1 截图识别测试

测试目的:验证最基本的截图文字提取功能是否正常。

操作步骤:

  1. 在电脑上准备一张包含中文、英文、数字混排的截图。
  2. 使用截图识别快捷键,进入框选模式。
  3. 框选截图中的文字区域。
  4. 等待识别结果出现。

预期结果:框选区域内的文字被识别成可复制的文本,中文和英文都能正确显示。

判断标准:识别结果能直接复制粘贴到记事本,且内容与你框选区域肉眼可见的文字一致。

常见失败原因:

  • 快捷键没有生效:检查程序是否驻留后台,快捷键是否被其他软件占用。
  • 识别结果为空:框选区域太小,或者区域里没有清晰的文字。
  • 显示乱码:输出编码或字体显示问题,先尝试把结果复制到其他编辑器里看。

5.2 批量图片识别测试

测试目的:验证多张图片能否排队识别,并导出成统一格式的文本文件。

操作步骤:

  1. 准备一个文件夹,放入 5 到 10 张不同类型的图片,至少包含中文截图、英文票据或扫描照片。
  2. 打开批量识别功能,把整个文件夹拖进任务列表。
  3. 设置输出目录和导出格式,常见格式有 txt、md、json 等,按自己需求选择。
  4. 启动批量任务,观察任务列表。

预期结果:每张图片生成一个对应的文本文件,文件名能与原图对应,内容基本准确。

判断标准:输出的 txt 或 md 文件可以正常打开,没有明显的缺行漏字。

常见失败原因:

  • 部分图片没有生成输出:可能是图片本身模糊或旋转,需要先预处理。
  • 输出文件全部生成但内容是空的:确认图片是否真的包含文字。
  • 批量任务卡在某一页:需要暂停任务,单独测试这一张图片。

5.3 PDF 识别测试

测试目的:验证多页 PDF 能不能完整转换为文本。

操作步骤:

  1. 准备一个 3 到 10 页的 PDF,最好是文字清晰、没有复杂版式的文档。
  2. 在 PDF 识别功能中导入该文件。
  3. 设置识别语言和导出格式,推荐先导出为 Markdown,方便对比段落结构。
  4. 启动识别并记录耗时。

预期结果:PDF 的每一页都被处理,输出文本能保留基本段落顺序。

判断标准:输出文档中可以搜索到 PDF 中的关键字段。

常见失败原因:

  • 扫描版 PDF 缺字严重:扫描质量太低,建议提高扫描分辨率。
  • 多页处理中途停止:尝试降低并发数,或把 PDF 拆分成多个小文件。
  • 文字重叠、顺序错乱:PDF 本身是图片型还是文字型,以及版式复杂度会影响输出顺序。

5.4 二维码识别测试

测试目的:验证二维码/条形码识别功能。

操作步骤:

  1. 准备包含二维码的图片,或者直接用屏幕截图。
  2. 在二维码识别功能中导入图片。
  3. 查看识别结果。

预期结果:输出二维码内容,例如 URL、文本或其他编码信息。

判断标准:识别出的内容和二维码实际编码内容一致。

常见失败原因:

  • 二维码太小或模糊:放大图片或提高图片分辨率后再试。
  • 二维码被遮挡:确认图片中二维码完整可见。

6. 批量任务与并发设置

批量处理是 Umi-OCR 的核心优势之一。很多人搜“umi ocr 并发设置”,说明在使用中会关注批量任务的执行效率。这里整理几个通用逻辑,具体设置位置要根据软件版本界面找。

6.1 批量任务执行流程

通用的批量处理流程是:

  1. 准备输入目录,把需要识别的图片或 PDF 统一放进去。
  2. 设置输出目录,建议单独建立output_txtoutput_md目录。
  3. 添加任务,可以添加单个文件、整个文件夹,也可以把多个文件拖入任务队列。
  4. 配置识别参数,包括语言、导出格式、并发数。
  5. 启动任务,记录开始时间。
  6. 等待任务完成后,检查输出文件数量和内容。

6.2 并发数设置建议

并发数越高,同时处理的图片越多,CPU 和内存占用也会明显上升。建议按以下顺序尝试:

  • 第一次运行时,先设置为 1,确认单图片识别稳定。
  • 如果 CPU 占用还有余量,逐步提高到 2 或 3。
  • 遇到卡死、内存占用过高、任务反复失败时,降低并发数。

几个观察经验:

  • 图片尺寸越大,并发过高导致内存暴涨的可能性越高。
  • 多页 PDF 本身已经很消耗资源,批量处理时并发数不要一下拉满。
  • 云端虚拟机或低配办公机上起步可以就设 1,不要追求效率而增加不稳定风险。

6.3 任务中断与恢复

批量任务跑很久时,万一软件崩溃或系统重启,正在处理的任务状态会丢失。更稳妥的做法是分批次处理:一个目录几百张图片,可以按 50 张一批拆开,每批完成后检查一次输出,再处理下一批。不要让所有鸡蛋放在一个篮子里,这句话在批量任务里同样适用。

7. 接口 API 与外部程序集成

如果需要在自动化脚本中调用 Umi-OCR,或者想把这个 OCR 能力接入自己的小工具,可以关注 HTTP API 相关功能。需要先说明一点:API 是否可用、路径和参数形式,取决于你使用的具体版本或插件。下面是通用调用模板,实际使用时一定要对照项目文档修改地址、端口和字段名。

7.1 开启 API 服务

通常在软件设置里可以找到“服务”或“HTTP API”相关选项,开启后会监听本机某个端口。建议只监听127.0.0.1,也就是仅允许本机访问,不要暴露到局域网或公网。

7.2 curl 调用示例

curl -X POST "http://127.0.0.1:PORT/api/ocr" \ -H "Content-Type: application/json" \ -d '{"image_base64": "BASE64_ENCODED_IMAGE"}'

说明:PORT替换成实际端口,BASE64_ENCODED_IMAGE替换成图片的 Base64 编码内容。返回结果通常是识别文本或包含识别文本的 JSON,具体以接口文档为准。

7.3 Python 调用示例

下面是一段通用逻辑,核心思路是读取图片、转成 Base64、发送请求、解析返回文本。使用时需要按实际接口字段修改:

import base64 import requests def image_to_base64(image_path): with open(image_path, "rb") as f: return base64.b64encode(f.read()).decode("utf-8") # 需要替换为实际地址和字段名 url = "http://127.0.0.1:PORT/api/ocr" image_path = "test.png" payload = { "image_base64": image_to_base64(image_path) } response = requests.post(url, json=payload, timeout=30) if response.status_code == 200: result = response.json() print("识别结果: ", result) else: print("请求失败: ", response.status_code, response.text)

需要注意:

  • 图片过大会导致请求体很大,建议先压缩裁剪再发送。
  • 超时时间要根据图片大小适当调整,大图识别慢,30 秒可能不够。
  • 如果返回结构不是想象中的字段,先打印完整响应内容再解析。

7.4 批量集成脚本示例

把 API 和批量目录结合,可以用脚本把一个目录里的图片逐个发送到本地 API。下面是一个目录遍历模板:

import os import base64 import requests input_dir = "./input_images" output_dir = "./output_txt" os.makedirs(output_dir, exist_ok=True) url = "http://127.0.0.1:PORT/api/ocr" for filename in os.listdir(input_dir): if not filename.lower().endswith((".png", ".jpg", ".jpeg", ".webp")): continue img_path = os.path.join(input_dir, filename) with open(img_path, "rb") as f: image_b64 = base64.b64encode(f.read()).decode("utf-8") resp = requests.post(url, json={"image_base64": image_b64}, timeout=60) if resp.status_code == 200: # 这里只做示例,实际字段以接口返回为准 text = resp.json().get("text", "") out_path = os.path.join(output_dir, os.path.splitext(filename)[0] + ".txt") with open(out_path, "w", encoding="utf-8") as out: out.write(text) print("完成:", filename) else: print("失败:", filename, resp.status_code)

这是一个面向批量自动化场景的通用结构。如果后续单图片识别不稳定,可以在循环里加重试机制;如果发现内存增长,逐张处理本身不会积累内存,真正需要注意的还是本地 API 服务的稳定性。

8. 资源占用与性能观察

资源占用是本地 OCR 项目绕不开的话题。由于不同机器配置不同,这里不写死显存占用数字,只讲观察方法和判断逻辑。

8.1 怎么看资源占用

任务跑起来后,打开任务管理器,重点观察三个指标:

  • CPU 占用率:CPU 版推理时,CPU 占用会明显上升,尤其大图识别。
  • 内存占用:图片和模型都会占内存,批量任务时内存会叠加。
  • GPU 占用:GPU 版运行时,可以在任务管理器性能页看显卡的“计算”或“专用 GPU 内存”占用。

显存占用不是固定值,而是受图片分辨率、模型语言包、批量大小、推理后端共同影响。不要用别人的显存截图判断自己机器能不能跑,直接本机跑一张大图看实际占用最靠谱。

8.2 CPU 推理 vs GPU 推理

  • CPU 推理:启动简单、没有显卡驱动干扰,但大图和多页 PDF 会慢一些。
  • GPU 推理:换显存和速度,但要提前配好显卡驱动和推理框架环境。
  • 如果你的机器是办公本、轻薄本,建议优先用 CPU 版,先保证稳定。
  • 如果经常处理几百页 PDF,值得花时间把 GPU 版环境调通。

8.3 影响性能的主要因素

  • 图片分辨率:4000×3000 的照片和 800×600 的截图处理时间完全不同。
  • 图片旋转/倾斜:旋转 90°或带有倾斜角度的图片,识别耗时更高。
  • PDF 页数:多页 PDF 是顺序处理还是并发处理,会影响总时长。
  • 并发数:并发越高越快,但内存峰值越高。

8.4 如何降低资源占用

  • 批量任务前先压缩图片尺寸,例如长边控制在 2000px 左右,多数场景识别率下降不明显,速度明显加快。
  • 优先用单并发跑大图,避免多个大图同时加载到内存。
  • 一次只开一个实例,不要重复打开多个程序窗口。

9. 常见问题与排查方法

下面是本地部署和使用 Umi-OCR 时容易遇到的问题,按现象给出排查思路和解决方案。

问题现象可能原因排查方式解决方案
启动后提示缺少 DLL解压不完整、被安全软件删除检查解压目录文件数量,看安全软件隔离区重新解压,并加入信任区
截图快捷键没反应快捷键冲突或程序未驻留后台查看软件设置里的快捷键配置换一组快捷键,或退出冲突软件
识别结果乱码语言包缺失、字体渲染异常切换语言或查看导出编码重新下载语言包,导出为 UTF-8
GPU 版识别报错显卡驱动不匹配、推理框架不支持查看启动日志和错误码换对应版本驱动,或改用 CPU 版
大图识别内存暴涨图片分辨率过高、并发数过大任务管理器观察内存峰值压缩图片尺寸,降低并发数
批量任务卡在某一页单张图片异常或进程假死单独识别这一页,看是否复现删除/修复异常图片,降低并发重试
PDF 输出顺序错乱PDF 复杂版式或扫描质量低对比输出文档与原文提高扫描分辨率,拆分成小文件
API 请求超时图片过大、接口并发过高查看接口日志和响应时间压缩图片、延长超时时间、降低请求频率
GitHub 下载慢或中断网络环境不稳定尝试断点续传,校验文件完整性更换下载方式或寻找官方备用渠道

一个重要的排查原则:只看现象不猜原因。先看日志,再复现,再修改配置。不要一上来就重装。

10. 最佳实践与使用建议

把 Umi-OCR 用作日常工具和把它接入自动化任务,是两种不同的用法,但有一些通用建议可以让你少走弯路。

10.1 文件目录管理

推荐目录结构:

D:\OCR\ ├── input_images\ ├── input_pdf\ ├── output_txt\ ├── output_md\ └── logs\

输入、输出、日志分开管理,避免大批量任务结束后,识别结果和原始图片混在一起无法区分。

10.2 批量任务工程化

  • 每次批量任务开始前,记录一下输入文件数量。
  • 任务结束后,检查输出文件数量是否与输入一致。
  • 对输出结果抽样检查,不要只看文件数量就认为全部成功。
  • 如果是给业务系统提供 OCR 能力,增加重试机制,单张图片失败不影响整体任务。

10.3 接口服务安全

开启 API 时只监听127.0.0.1,不要直接暴露到公网。如果需要在局域网使用,要加访问控制和访问日志,防止被未授权调用。

10.4 版权与隐私合规

  • 识别受版权保护的书籍、文档时,只做个人学习用途。
  • 含有人脸、身份证、手机号等个人信息的图片,识别结果要加强保管。
  • 不要用 OCR 工具绕过平台的内容保护机制。

10.5 保持版本更新

OCR 引擎在持续优化,新版可能带来更好的识别效果、更多的语言支持和更强的批量能力。建议定期关注 GitHub Releases,但更新前先保留当前可用版本,避免新版本有回归问题。

11. 总结与下一步

Umi-OCR 最值得先试的功能是截图识别,打开软件按快捷键框选文字,五秒钟就能判断它适不适合你。最容易踩的坑大概率出现在 GPU 版和并发设置上:GPU 版需要驱动匹配,并发开太猛会拖垮整机。第一次使用时先用 CPU 版跑小批量,稳定之后再逐步加规模。

如果你已经把它用起来了,下一步可以试试这几件事:

  • 把大量图片/PDF 做成定时离线批量转文本任务。
  • 通过接口把 OCR 能力接到自己的文档管理工具或办公脚本里。
  • 对比不同语言模型/识别参数的输出差异,找到适合自己素材的最优配置。

开源 OCR 软件的最大优势不是某个功能玄乎,而是本地离线、可批量、可二次集成,所有环节都能自己掌控。建议收藏备用,等需要批量处理截图或 PDF 时,直接按这篇文章的流程走一遍就行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询