Umi-OCR:免费开源离线OCR工具,截图PDF批量识别,保护隐私
2026/9/8 5:49:29 网站建设 项目流程

当业务需要从图片、截图、PDF 里快速提取文字时,很多人的第一反应是打开在线 OCR 网站,或者用微信/钉钉自带的“提取文字”。这类工具虽然方便,但往往有文件数量限制、图片尺寸压缩、网络不稳定、隐私泄露等隐患。尤其是公司内部合同、学习笔记、临时验证码这类敏感内容,放在第三方服务器上总让人不太放心。

本文要介绍的 Umi-OCR,就是一款免费、开源、离线的本地文字识别软件。它支持截图识别、批量图片识别、PDF 批量识别、二维码识别,没有广告,也没有次数限制。文章会从核心概念讲起,带大家完成下载安装、环境准备、日常操作,并补充常见问题和最佳实践。不管你是想替代在线 OCR 的普通用户,还是想在自己的工具链中接入本地 OCR 的开发者,这篇都能给你一套可落地的思路。

1. Umi-OCR 是什么?为什么会需要它

1.1 在线 OCR 的几个痛点

先看一个高频场景:你在网页上看到一段无法复制的文字,或者收到一张带文字的图片,需要转成可编辑文本。使用在线 OCR,流程通常是“上传图片 → 等待处理 → 复制结果”。问题也集中在三个地方:

  • 隐私风险:图片内容会经过第三方服务器,合同、证件、内部资料都有泄露风险。
  • 次数和大小限制:很多免费在线工具限制单张图片 1MB、每天只能识别几次,超过就要付费或等待。
  • 网络依赖:网络不稳定时,识别服务经常连接超时,影响效率。

如果你经常处理截图、扫描件、PDF 文稿,这类问题会被放大很多倍。

1.2 Umi-OCR 的定位

Umi-OCR 是一个运行在本地电脑上的 OCR 工具。它的识别过程不依赖外部网络,图片和 PDF 都在本地处理,所以隐私性有保障;识别引擎采用开源方案,没有内置广告,也不限制使用次数。

从技术实现上看,Umi-OCR 可以理解为“一个图形化外壳 + 多种开源 OCR 引擎的组合体”。它把复杂的模型下载、参数调优、结果排版封装成简单的图形界面,用户选中图片、点击识别,就能得到文本。

1.3 适合哪些人使用

  • 经常做笔记、整理资料的人:截图识别后直接变成文字,配合 Markdown 记录很顺手。
  • 文员、运营、法务等职业用户:处理 PDF 合同、扫描文件时无需逐字手打。
  • 轻度开发人员和自动化爱好者:希望通过命令行、HTTP 接口的方式将 OCR 能力集成到自己的脚本工具中。
  • 注重隐私的用户:所有识别过程都在本地完成,不需要把文件上传给任何平台。

2. 核心功能详解

2.1 截图识别

按下预设的全局热键(默认通常是 F4,具体以当前版本设置为准),屏幕会出现一个选区框,像截图软件一样框选需要识别的区域。松开鼠标后,Umi-OCR 会自动识别选区内的文字,并把结果展示在窗口中。

这个功能特别适合处理网页上的不可复制文字、代码报错信息、视频字幕、软件界面文字等场景。识别结果可以直接复制,也可以发送到主窗口进行编辑。

2.2 批量图片识别

支持一次导入多张图片,例如pngjpgbmpwebp等常见格式。软件会按顺序识别,并在完成后汇总所有结果。你可以选择每张图片单独输出,也可以把识别结果合并成一个大文本块,方便统一处理。

批量识别时,最好保证图片清晰、文字方向正确。对于倾斜的图片,可以在参数设置里开启“自动旋转”或“方向分类”能力,减少手动预处理的工作量。

2.3 PDF 批量识别

PDF 扫描件中的文字本质上是一张张图片,无法直接复制。Umi-OCR 会把 PDF 的每一页转成图像,再逐页识别,最终输出完整文本。

如果你处理的 PDF 本身就是文字版(即“原生 PDF”),并不需要 OCR,直接用阅读器复制即可。只有当 PDF 是扫描件或图片型 PDF 时,才需要走 OCR 流程。

2.4 二维码识别

除了普通文字识别,Umi-OCR 还支持二维码和条形码的读取与生成。你可以在设置中找到二维码工具,通过截图或上传图片的方式,快速解析二维码中的文本内容,也可以反向将一段文字生成二维码。

2.5 离线识别与多语言支持

因为识别模型存放在本地,断网环境下也能正常使用。软件支持简体中文、繁体中文和英文的识别,具体语言支持范围取决于你安装的 OCR 模型。

这里需要特别强调:离线识别不是把“联网能力”去掉了,而是从根源上避免图片内容经过外部服务器。对于敏感数据,离线方案更安心。

3. 环境准备与下载安装

3.1 运行环境说明

Umi-OCR 主要面向 Windows 用户,官方发布时会提供免安装的压缩包,解压后直接运行可执行文件即可。Linux 和 macOS 用户也可以尝试通过源码运行,但需要自己准备 Python 环境、PyQt 等依赖,过程会复杂一些。

版本方面,Umi-OCR 的迭代速度较快,不同版本的下载方式、界面布局和功能入口可能略有差异。本文以常见的 Windows 免安装版为例进行讲解,大家在实操时以官方仓库的 README 和 Release 页说明为准。

3.2 从 GitHub 获取安装包

Umi-OCR 是开源项目,源码托管在 GitHub,项目名字是hiroi-sora/Umi-OCR

如果网络条件允许,最直接的方式是打开 GitHub Releases 页面,选择最新的Umi-OCR-xxx.7zUmi-OCR-xxx.zip压缩包下载。国内用户访问 GitHub 时偶尔会遇到页面打开慢、下载中断等问题,可以尝试以下两种方式:

  • 使用第三方 GitHub 加速服务,例如“ghproxy”这类代理下载链接。搜索“项目名 + 下载加速”就能找到相关服务,把原始 Release 下载地址拼到代理前缀后面,即可加速下载。
  • 关注项目在 Gitee 或其他开源镜像站的同步仓库,部分热门项目会在国内代码托管平台发布同步版本。

无论从哪个渠道下载,建议在运行前对压缩包进行校验,避免文件损坏或被恶意篡改。校验方式以官方发布时提供的 SHA256 哈希为准。

3.3 解压与启动

下载完成后,将压缩包解压到本地目录。免安装版通常不需要执行安装程序,目录结构类似下面这样:

Umi-OCR/ ├─ Umi-OCR.exe ├─ config/ ├─ engines/ ├─ data/ ├─ ...

启动方式非常简单,双击Umi-OCR.exe即可。如果你的 Windows 安全中心或杀毒软件弹出提示,可以检查一下文件签名和哈希值是否正常。开源软件经常被误报,但也不要直接关闭杀毒软件,建议从官方渠道下载并手动添加到信任列表。

若源码方式运行,在项目根目录打开终端,执行:

python main.py

前提是你已经按照requirements.txt安装好依赖,并且本地具备对应版本的 Python 环境。源码方式一般用于二次开发或排查问题,日常使用免安装版更方便。

3.4 首次启动:模型下载与引擎切换

第一次启动时,软件可能会提示你下载 OCR 识别模型。这是因为本地 OCR 引擎需要模型文件才能工作,模型文件会从开源模型仓库下载到本机。

如果你在模型下载阶段遇到速度慢或失败,可以检查网络连接,或者手动从模型托管地址下载后放到指定目录。不同版本的模型存放路径可能不同,建议优先参考官方文档。

Umi-OCR 支持多套 OCR 引擎,例如 PaddleOCR、RapidOCR。它们各有特点:

  • PaddleOCR 系列:百度开源,支持中文效果好,模型体积相对较大,但识别精度较高。
  • RapidOCR 系列:基于 PaddleOCR 模型转换而来,依赖更少,部署更轻量。

可以在软件的“OCR 引擎管理”或“设置”页面切换默认引擎。如果你只是普通使用,保持默认即可。

4. OCR 引擎原理与技术拆解

4.1 OCR 到底是怎么工作的

OCR(Optical Character Recognition,光学字符识别)的核心任务,是把图片中的文字区域检测出来,并转换成计算机可编辑的文本。

一个典型的 OCR 流程可以分为四步:

  1. 图像预处理:灰度化、二值化、降噪、倾斜校正,让文字区域更清晰。
  2. 文字检测:找到图片中所有可能包含文字的区域,也就是“文本框”。
  3. 文字识别:对每个文本框内的字符进行逐一识别。
  4. 后处理:把识别出的字符按顺序组合成行、段落,并输出带位置信息的结果。

Umi-OCR 之所以能支持“截图识别”“批量图片”“PDF 识别”,本质上是围绕上面四个环节,做了图形界面和工程化封装。

4.2 本地离线识别的工作流

当你在 Umi-OCR 中点击“识别”时,软件会把图片交给本机运行的 OCR 引擎,模型推理完成后,再返回识别结果。整个过程不经过任何外部服务器,所以断网也可以使用。

用一张简化的流程表示:

输入图片/截图/PDF页面 ↓ 图像预处理 ↓ 文字检测(目标框) ↓ 文字识别(模型推理) ↓ 输出文本与位置信息 ↓ 在界面中展示或写入文件

由于推理过程消耗的是本机 CPU 资源,识别速度取决于电脑性能和图片分辨率。一般来说,普通办公电脑处理一张截图只需要一两秒;如果图片很大,可能需要等待更长时间。

4.3 给开发者的参考:Python 调用 PaddleOCR

如果你不想通过图形界面,而是想在自己的 Python 脚本里实现类似能力,可以尝试直接使用 PaddleOCR。下面是一个最小可运行的示例:

# -*- coding: utf-8 -*- from paddleocr import PaddleOCR # 创建识别器:使用中文模型,关闭方向分类以提高速度 ocr = PaddleOCR(use_angle_cls=False, lang="ch", show_log=False) result = ocr.ocr("sample.png", cls=False) # 遍历识别结果 for line in result: if not line: continue for item in line: text = item[1][0] confidence = item[1][1] print(f"文本:{text},置信度:{confidence:.2f}")

运行前需要先安装 PaddlePaddle 和 PaddleOCR:

pip install paddlepaddle paddleocr

这段代码可以帮大家理解 OCR 引擎的调用方式。在实际项目里,你需要在识别前对图片做预处理,例如调整分辨率、去除背景干扰,才能获得更好的识别效果。Umi-OCR 已经把类似流程封装成了开箱即用的产品,普通用户不需要关心这些细节。

5. 实操:从零开始使用 Umi-OCR

5.1 界面布局

启动 Umi-OCR 后,会看到一个主窗口。常见模块包括:

  • 左侧工具栏:切换不同功能,例如截图识别、批量识别、PDF 识别、二维码工具。
  • 中间区域:图片预览和识别结果展示。
  • 右侧或底部:识别参数、输出设置。

不同版本的界面细节存在差异,但基本交互逻辑是:选择图片 → 点击识别 → 查看结果 → 复制或保存。

5.2 截图识别操作步骤

  1. 打开 Umi-OCR,确保程序常驻运行。
  2. 按下全局截图快捷键(可在设置中自定义,例如F4)。
  3. 屏幕上出现选区遮罩后,用鼠标框选要识别的区域。
  4. 松开鼠标,软件自动识别。
  5. 识别结果出现在主窗口或临时悬浮窗中,点击“复制”即可。
  6. 粘贴到需要的地方。

如果你发现快捷键没有反应,可能是被其他软件占用了,或者 Umi-OCR 没有在前台运行。可以在设置里换一个快捷键试试。

5.3 批量识别图片

当有多张图片需要转换时,进入“批量识别”功能,把图片文件直接拖入列表,点击开始任务。任务完成后,每一张图片的识别结果会以独立文档或合并文档的形式呈现。

如果识别质量不理想,可以先对图片做以下处理:

  • 将图片转正,避免文字倾斜。
  • 提高图片分辨率,确保文字边缘清晰。
  • 去除复杂背景,只保留文字区域。
  • 尽量使用截图而不是拍照。

批量识别适合处理带有大量图表的文档扫描件,但要注意:如果图片中夹杂表格、公式、手写文字,普通 OCR 引擎的效果可能不如专业工具。

5.4 PDF 识别与导出

在 PDF 识别功能中,选择需要识别的 PDF 文件,软件会先转换页面为图像,再执行 OCR。完成后,可以导出为 TXT、Markdown 或其他格式,方便后续编辑。

需要提醒的是,如果 PDF 文件页数很多,识别时间会比较长。建议先用几页测试效果,再决定是否整本处理。

5.5 二维码识别

打开二维码工具,选择“识别图片中的二维码”,上传包含二维码的图片,即可得到解析结果。反向操作时,输入文字生成二维码,可以保存为图片,方便在电脑和手机之间快速传送文本。

6. 进阶:把本地 OCR 能力接入自己的工作流

6.1 使用命令行和 HTTP API 的思路

Umi-OCR 在部分版本中提供命令行参数或本地 HTTP 服务能力,允许开发者通过脚本发送图片,然后接收识别结果。具体的启动命令、端口、接口路径随着版本更新变化较快,建议以当前版本的官方文档或源码中的示例为准。

下面给出一种通用的调用思路,仅供参考。假设软件开启了本地 HTTP 识别服务,你可以用 Python 的requests库,把图片 POST 到服务端口,然后解析返回的 JSON。关键代码框架如下:

import requests import json # 接口地址请以实际版本文档为准 url = "http://127.0.0.1:8080/api/ocr" with open("demo.png", "rb") as f: files = {"file": ("demo.png", f, "image/png")} resp = requests.post(url, files=files) data = resp.json() print(json.dumps(data, ensure_ascii=False, indent=2))

注意,这只是一个抽象示例,不代表 Umi-OCR 真实接口。实际开发时,你要先看源码中api相关模块或官方文档的网络接口说明,再调整协议和参数。

6.2 在自动化脚本中调用其他本地 OCR 引擎

如果你的自动化项目不便依赖图形界面,又想获得类似的离线 OCR 能力,可以直接用 Python 调用 PaddleOCR、RapidOCR 等库。这在处理“定时识别”“批处理文件”等场景时非常灵活。

示例:批量识别文件夹下所有图片,并输出为同名 txt 文件。

# -*- coding: utf-8 -*- import os from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=False, lang="ch", show_log=False) def recognize_image(img_path: str) -> str: result = ocr.ocr(img_path, cls=False) text_lines = [] if result: for line in result: if line: for item in line: text_lines.append(item[1][0]) return "\n".join(text_lines) if __name__ == "__main__": image_dir = "./imgs" for filename in os.listdir(image_dir): if filename.lower().endswith((".png", ".jpg", ".jpeg", ".bmp", ".webp")): full_path = os.path.join(image_dir, filename) text = recognize_image(full_path) output_path = os.path.splitext(full_path)[0] + ".txt" with open(output_path, "w", encoding="utf-8") as f: f.write(text) print(f"已完成:{filename}")

这类脚本能帮你把 OCR 能力嵌入到文件下载、问卷填写、发票信息提取等真实业务中,但要注意异常处理和并发控制。大批量识别时建议加上线程池或任务队列,避免内存占用过高。

6.3 与 RPA、效率工具配合

Umi-OCR 可以作为 RPA(机器人流程自动化)的一环:截取屏幕 → 识别文字 → 根据文本内容执行下一步操作。例如,自动读取网页上的验证码、读取软件界面里的错误信息、将扫描件内容录入业务系统等。

如果你没有 RPA 平台,也可以用一个 Python 脚本同时完成“调用 Umi-OCR 的截图功能”和“读取识别结果”两个步骤。更简单的做法是直接用 PyAutoGUI 模拟截图,再用 PaddleOCR 识别,然后把结果传给自动化流程。

7. 常见问题与排查思路

7.1 问题对照表

问题现象常见原因解决思路
全局快捷键无反应快捷键被其他软件占用,或 Umi-OCR 未在后台运行打开设置,更换一个不冲突的快捷键
首次启动一直卡在模型下载网络无法访问模型源,或模型源速度慢尝试切换网络环境,或手动下载模型文件并放到指定目录;也可以切换 RapidOCR 等更轻的引擎
识别准确率低图片模糊、文字倾斜、背景复杂预处理图片,提高对比度,保持文字正向;必要时使用更大的模型
批量识别很慢图片分辨率过高,CPU 性能不足批量任务前先压缩图片;文件多时建议拆分任务
PDF 识别结果为空PDF 是文字版而非扫描版,或页面为纯图片确认 PDF 类型;若是扫描版,检查页面是否清晰
软件提示缺少 DLL 或运行库Windows 缺少 VC++ 运行库安装 Visual C++ Redistributable,重启软件
杀毒软件拦截未签名程序被误报从官方渠道下载,校验哈希后添加到信任列表

7.2 识别效果不理想时的调优顺序

  1. 检查图片质量:分辨率要足够,文字不能太小。
  2. 检查文字方向:图片旋转到正常阅读方向。
  3. 检查引擎语言包:确认当前使用的是中文模型还是英文模型。
  4. 更换引擎:如果 PaddleOCR 效果不理想,可以试 RapidOCR。
  5. 后处理:识别后人工校对数字、字母混淆的常见情况,例如0o1l

7.3 GitHub 下载相关的常见问题

  • 页面打不开或下载中断:GitHub 在国内访问不稳定是常见问题,可以换时间段重试,或使用第三方加速服务。
  • 项目更新较快,旧版本存在 Bug:优先选择最新 Release,或查看 Issues 里别人提的问题是否和你一样。
  • 不知道选择哪个安装包:Windows 用户选择名称中包含win的压缩包;如果想尝试源码,就下载 Source code。

8. 最佳实践与工程建议

8.1 普通用户的最佳实践

  • 定期备份 Umi-OCR 的配置文件。软件的自定义设置通常保存在config目录下,重装系统前可以先备份。
  • 不要在识别结果里直接保存含敏感信息的原始截图。如果图片涉及密码、密钥,识别完成后及时清理临时文件。
  • 善用 “粘贴图片到窗口” 的快捷操作。很多时候你可以直接截图后按Ctrl+V把图片粘进去识别,比鼠标拖拽更快。
  • 把常用功能配置好快捷键。截图识别、二维码解析这几类高频操作,用快捷键能明显提升效率。

8.2 开发者接入 OCR 的工程建议

  • 版本锁定:在项目中使用 OCR 依赖时,锁定具体版本号,避免升级带来的模型格式不兼容。
  • 模型下沉到本地:生产环境中把 OCR 模型文件打包到应用目录,避免运行时下载模型导致超时。
  • 异常处理与重试:OCR 可能因为图片损坏、内存不足等原因失败,脚本中要捕获异常并记录日志。
  • 并发控制:多线程调用 OCR 时,注意显存或内存是否充足,设置任务队列限制并发数。
  • 安全边界:如果 OCR 服务通过 HTTP API 对外暴露,必须限制访问 IP,不要默认绑定 0.0.0.0 且不加认证。
  • 数据脱敏:即使 OCR 在本地运行,如果生成的结果很长,也要注意避免在日志中打印全部识别文本。

8.3 大型文档处理建议

对于几百页 PDF 或上千张图片的批量识别,不要一次性全部加载到内存。建议按批次处理:

  1. 第一批测试 10 页,确认效果和耗时。
  2. 根据耗时估算整体任务时长。
  3. 分批执行,并在任务之间加入短延迟,避免电脑过热或内存不足。
  4. 每批任务完成后立即写盘,保存中间结果。
  5. 校验输出文件非空且内容合理,再继续下一批。

9. 总结与后续学习路线

通过本文,我们认识了 Umi-OCR 这款离线 OCR 工具,了解了它的核心功能、安装方式、界面操作方法,也梳理了从截图识别到批量 PDF 识别的完整流程。最关键的是,它所有的识别都在本地完成,不需要把敏感图片上传到任何平台,这对隐私敏感的用户来说是很大的加分项。

如果你是一名普通用户,下一步可以把截图识别快捷键设置好,并在日常工作中尝试用它替代在线 OCR,体验一下本地识别的效率。同时注意定期更新软件和模型,以获得更好的识别准确率。

如果你是一名开发者,建议去 GitHub 阅读 Umi-OCR 的源码和官方文档,重点关注它的引擎管理和配置结构。你还可以把它封装成更贴合自己业务的工具,比如编写一个定时脚本,自动识别某个文件夹下的新截图并生成文字记录。

技术工具的最终价值,是帮我们把重复劳动交给机器。希望 Umi-OCR 能在你的工作和学习中,真正成为一款“用了就回不去”的效率工具。若你手头有更好的 OCR 使用经验,也欢迎在评论区分享你的参数配置或自动化方案,一起让本地 OCR 发挥更大价值。

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

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

立即咨询