Umi-OCR 离线 OCR 完全指南:截图、批量图片、扫描版 PDF 识别,从 0 到跑通自动化
【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR
Umi-OCR 是一款免费、开源、完全离线的 OCR 文字识别工具:截图识别、批量图片识别、扫描版 PDF 转可搜索文本、二维码扫码与生成,全部在本机完成。图片不上传、不联网、不注册,识别次数不设上限。
这篇文章按"任务"带你走:先拿到第一个识别结果,再把量扩大到整批图片、整本 PDF,最后把 Umi-OCR 接进你的自动化流程。
能力全景:先看这张地图
| 能力 | 典型场景 | 在哪里操作 |
|---|---|---|
| 截图 OCR | 划选屏幕文字、粘贴聊天记录截图直接识别 | 截图OCR 标签页 |
| 批量 OCR | 一次拖入几百张图片,输出 txt / csv / md 等 | 批量OCR 标签页 |
| 文档识别 | 扫描版 PDF 转双层可搜索 PDF 或纯文本 | 文档识别 标签页 |
| 二维码 | 一图多码扫码,或把文本生成码图片 | 二维码 标签页 |
| 命令行 / HTTP 接口 | 写脚本自动截图识别、传图拿 JSON 结果 | 主程序命令行 / 本地 1224 端口 |
| 全局设置 | 切换 OCR 引擎、界面语言、主题、开机自启 | 全局设置 标签页 |
最短路径上手:3 步拿到第一个结果
- 拿到发布包:从项目 Release 页下载 v2.1.5 的
.7z压缩包(没有解压软件就用.7z.exe自解压包,双击即可解开)。想用源码的话执行:git clone https://gitcode.com/GitHub_Trending/um/Umi-OCR。解压到纯英文路径,例如D:\Tools\Umi-OCR,避免中文和空格。 - 启动:Windows 双击
Umi-OCR.exe,Linux 运行umi-ocr.sh。无需安装,首次启动会按系统语言自动切换界面。 - 识别:打开截图OCR标签页,按页面提示的快捷键唤起截图框,划出文字区域,右侧记录栏立刻出现识别结果。
| 要点 | 说明 |
|---|---|
| 杀毒误报 | 软件内置 OCR 引擎与运行库,部分杀软会误报;启动前把目录加入白名单 |
| 锁定标签页 | 右上角锁形按钮可锁定常用标签,防止日常误触关闭 |
| 界面语言 | 全局设置 → 语言/Language,支持简中、繁中、英文、日文、俄语、葡萄牙语等 |
场景实操一:截图 OCR,屏幕上的字直接拿走
你遇到什么:屏幕上一段文字,想复制进文档,但它是图片、网页截图或视频画面,没法选中。
怎么操作:
- 打开截图OCR 标签页,按快捷键唤起截图框。
- 划出文字区域,松开鼠标,结果出现在右侧记录栏。
- 在记录栏直接编辑文字,划选多条记录可一次复制。
关键细节:不截图也能识别。在别处复制一张图片(比如聊天窗口里的图),切回 Umi-OCR 直接粘贴,效果相同。记录栏支持编辑,省去"识别完再开编辑器整理"这一步。
一个提醒:识别出的文字默认经过排版解析——引擎吐出的是"散装"文本块(一块块零散的文字),由排版解析器决定谁先谁后,横排、竖排(从右到左)都能按阅读顺序输出。方案怎么选,后面"参数调优"一节细讲。
场景实操二:批量图片识别,一次拖入几百张
你遇到什么:手头有几百张截图、拍照文件要转文字,一张张手动识别不现实。
怎么操作:
- 切到批量OCR标签页,把图片直接拖进窗口,没有数量上限。
- 点开始任务,右侧面板逐张显示耗时、置信度和识别结果。
- 跑完按输出格式保存。
| 项目 | 支持范围 |
|---|---|
| 输入格式 | jpg、jpe、jpeg、jfif、png、webp、bmp、tif、tiff |
| 输出格式 | txt、jsonl、md、csv(csv 可直接用 Excel 打开) |
| 长任务 | 任务完成后自动关机/待机;v2.1.2 起支持暂停任务,不退出软件时待机/休眠后可恢复 |
关键细节:批量页右栏设置里可打开忽略区域编辑器——按住右键在图片上画多个矩形框,框住水印、LOGO、页脚可能出现的位置,识别时这些区域内的文字会被自动排除。
一个提醒:这里有一个必须记住的机制:只有整个文本块完全落在框内,才会被忽略,按单个字符不算。所以框要画得足够大,把水印所有可能落位都包住;框小一号,结果里就多一行杂音。
场景实操三:文档识别,把扫描版 PDF 变成可搜索 PDF
你遇到什么:一柜扫描版 PDF、EPUB,能看不能搜,想归档或提取文字。
怎么操作:
- 打开文档识别标签页,拖入文档。支持
pdf、xps、epub、mobi、fb2、cbz六种格式。 - 选择提取方式,跑任务。它的逻辑是"先挑现成的,再补缺的":解析器(底层依赖 PyMuPDF)会区分 PDF 里自带的文本层和扫描图片层——自带文本的页面直接提取,速度快且零识别误差;只有纯扫描页才交给本地 OCR 引擎。你也可以反向操作:整页强制 OCR,或只提取原文本。
- 选择输出成品。
| 输出 | 特点 | 适合场景 |
|---|---|---|
| 双层可搜索 PDF | 底层保留原图,上层叠加透明文字层,外观与扫描件一致但可搜索、可复制 | 历史合同归档、论文数字化 |
| 单层纯文本 PDF(v2.1.2 起) | 文件更小、方便后续编辑 | 只要文字、不在乎原版外观 |
关键细节:文档识别同样支持按页码范围设置忽略区域——把统一位置的页眉页脚一次性排除掉,再配合"任务完成后自动关机/待机",一整柜扫描旧书可以挂夜里跑完。
一个提醒:v2.1.5 修复了提取原文本层时未处理页面旋转的问题。如果你的 PDF 有旋转过方向的页面且识别位置错位,先升级到最新版再下结论。
场景实操四:二维码,扫码和生成一起搞定
你遇到什么:屏幕或图片里有二维码/条形码要读,或者想把一段文本变成码图片。
怎么操作:
- 打开二维码标签页,用截图、粘贴、拖入图片三种方式之一输入,扫码结果立刻显示;一张图里多个码也能一次读出。
- 覆盖 QRCode、EAN13、Code128 等 19 种码制。
- 切到生成方向:选码制和纠错等级,把文本直接输出成二维码图片。
关键细节:命令行下还能指定尺寸批量生成(见下文命令),适合"一个链接一个码"的批量打印场景。
一个提醒:扫码用的输入方式和截图OCR 完全一致——复制图片后粘贴进来即可,不用先存盘。
参数调优:四个设置决定识别质量
现象 | 去哪调 | 怎么调
| 现象 | 去哪调 | 怎么调 |
|---|---|---|
| 长截图/大图识别不完整、缺头少尾 | 页面设置 → 文字识别 → 限制图像边长 | 调高数值(默认 960 会压缩大图)。别靠放大原图解决,过度放大会引入噪声 |
| 代码截图缩进全乱了 | 各标签页"文字识别" → 排版解析方案 | 切到"单栏-保留缩进",行首缩进和行中空格原样保留 |
| 两栏论文输出顺序混乱 | 排版解析方案 | 用"多栏-按自然段换行"(默认值,覆盖大多数场景) |
| 内存占用偏高 | 插件配置(PaddleOCR) | 调低线程数。v2.1.4 起 PaddleOCR 默认内存已限制在系统总内存一半以内 |
| 截图时屏幕闪烁、界面错位 | 全局设置 → 界面和外观 → 渲染器 | 切换渲染方案或直接关闭硬件加速 |
| 识别语言不对 | 各标签页"文字识别" → 识别语言库 | 单独选择或下载对应语言的库 |
排版解析方案全集:
| 方案 | 适用场景 |
|---|---|
| 多栏-按自然段换行 | 两栏/三栏论文、书籍,按段落断行,不确定就选它 |
| 多栏-总是换行 / 无换行 | 每句独立成行 / 强制整段合并成一行 |
| 单栏-按自然段换行 / 总是换行 / 无换行 | 与多栏系列对应,但不区分多栏布局 |
| 单栏-保留缩进 | 代码截图专用 |
| 不做处理 | 引擎原始输出 |
两个容易混淆的概念:
- 界面语言 ≠ 识别语言库。前者管菜单按钮显示什么文字(全局设置里改),后者管 OCR 引擎认哪种文字(各标签页单独选)。界面用中文、日常识别日文书籍,这种组合完全成立。
- OCR 引擎可随时切换。默认内置 Rapid-OCR(兼容性好,遇到报错先换它)和 PaddleOCR(速度稍快)两套引擎,全局设置里切。
接入自动化:命令行与 HTTP 接口
软件运行期间,本地 HTTP 服务默认监听127.0.0.1:1224(仅本地环回,不经过物理网卡,端口可在全局设置中修改)。所有命令行指令都通过这条通道发给后台进程,所以命令行要求 HTTP 服务处于开启状态(默认开启)。
命令行
入口就是主程序Umi-OCR.exe(Linux 为umi-ocr)。所有指令支持前缀简写,如--screenshot可写成--sc。
# 截屏识别,结果直接进剪贴板 umi-ocr --screenshot --clip # 递归识别整个文件夹(含子目录),结果追加到 all.txt umi-ocr --path "D:\scans" "-->>" all.txt # 生成 256x256 二维码图片,末尾数字可单独指定宽和高 umi-ocr --qrcode_create "https://example.com" "D:\qr.png" 256 # 免鼠标划选:截取第 2 块显示器 (50,100) 起点、300x200 区域并识别 umi-ocr --screenshot screen=1 rect=50,100,300,200 # 查看全部指令 umi-ocr --help其中"-->>"等价于--output_append(追加写入),"-->"等价于--output(覆盖写入)。范围截图配合快捷键工具,可以做成"按一下 F10 就识别固定屏幕区域"。
完整参数见 docs/README_CLI.md。
HTTP 接口
需要程序化收结果时(比如命令行管道重定向失效的场景),直接用 HTTP:图片识别接口接收 Base64 图片、返回 JSON 结果,文档识别走"上传 → 轮询状态 → 下载"三步流程。
# 最小示例:传一张 Base64 编码的图片,返回 JSON 识别结果 import requests, json r = requests.post("http://127.0.0.1:1224/api/ocr", json={"base64": b64_image, "options": {"data.format": "text"}}) print(json.loads(r.text)["data"]) # 识别出的纯文本接口文档在 docs/http/api_doc.md,可查的参数还包括排版解析方案、忽略区域坐标等,几十行代码就能封装成"传图 → 返回 JSON"的小服务,接进自己的自动化脚本里。
排错:现象 → 原因 → 解法
命令行指令没有任何反应?两个原因:一是命令行依赖本地 HTTP 服务传递指令,确认全局设置里 HTTP 服务处于开启状态(默认开启);二是入口必须用主程序Umi-OCR.exe,RUN_GUI.bat这类备用启动器不支持命令行。
忽略区域画了,水印文字还在?原因是忽略机制按"整个文本块"判定。检查两点:矩形框是否把整个文本块完整包住(只包住一半不算);配置是否已保存。
旋转方向的扫描件,识别出的文字位置错位?早期版本提取原文本层时未处理页面旋转,v2.1.5 已修复。遇到此问题先升级到最新版。
拖入几万个文件的文件夹,界面卡死?v2.1.5 改进了图片/文档的异步加载机制,超大文件夹会显示加载进度。等进度跑完再操作,不要在加载期间连续提交任务。
长图识别结果缺头少尾?原因是"限制图像边长"默认值 960 较低,超大图片被压缩处理。到页面设置里调高该数值即可,不要直接放大原图。
识别报错或结果明显不准?先在全局设置把引擎切到 Rapid-OCR 试试;仍不行再检查识别语言库是否匹配图中文字。
下一步
下载最新版 v2.1.5,完成两件事:先做一次截图识别拿到第一个结果,再把批量页的忽略区域画好。这两步走完,你手头任何带水印的图片或扫描版 PDF,都能直接产出干净的文本。之后如果想让它无人值守地干活,从"接入自动化"一节的--screenshot --clip命令开始试。
【免费下载链接】Umi-OCROCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。项目地址: https://gitcode.com/GitHub_Trending/um/Umi-OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考