找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28668|回复: 6

[文字编辑] 支持命令行的开源文字识别软件 Umi-OCR 2.1.5

[复制链接]
发表于 2023-11-21 14:01:53 | 显示全部楼层 |阅读模式
软件名称:Umi-OCR
最新版本:2.1.5
更新日期:2025-03-26
使用环境:Windows 7 x64 及以上的系统
软件性质:免费开源/多国语言
官网下载:https://github.com/hiroi-sora/Umi-OCR/releases
网盘下载:https://hiroi-sora.lanzoul.com/s/umi-ocr
软件大小:
Paddle 引擎插件版 127MB (性能好,速度快,占用率高,适合高配机器。不兼容奔腾、赛扬、凌动CPU)
Rapid 引擎插件版 97MB (速度稍慢,内存占用低,适合低配机器,兼容性好)

【功能简介】

全新升级:V2版本重构了绝大部分代码,提供焕然一新的界面和更强大的功能。
免费:本项目所有代码开源,完全免费。
方便:解压即用,离线运行,无需网络。
高效:自带高效率离线OCR引擎。只要电脑性能足够,可以比在线OCR服务更快。
灵活:支持定制界面,支持命令行、HTTP接口等多种调用方式。



【命令行手册】

基础说明

命令行调用入口就是主程序 Umi-OCR.exe 。如果你使用的是备用启动器(如UmiOCR-data/RUN_GUI.bat),可能无法使用命令行。

如上图,必须允许HTTP服务才能使用命令行(默认开启)。主机选择仅本地就行了。
Umi-OCR 依赖HTTP接口进行跨进程通信,将你输入的命令行指令传递给后台的Umi-OCR处理进程。通信过程仅在系统内部的本地环回进行,不会泄露到外部(不经过物理网卡),请放心使用。

获取说明:
  1. Umi-OCR.exe --help
复制代码
软件操控指令

弹出主窗口:
  1. Umi-OCR.exe --show
复制代码
隐藏主窗口:
  1. Umi-OCR.exe --hide
复制代码
关闭软件:
  1. Umi-OCR.exe --quit
复制代码
OCR指令

截屏:
  1. Umi-OCR.exe --screenshot
复制代码
粘贴图片:
  1. Umi-OCR.exe --clipboard
复制代码
指定地址:
  1. Umi-OCR.exe --path "D:/xxx.png"
复制代码
OCR指令均可在控制台回传识别结果。请耐心等待,在一次指令结束前不要输入下一条指令。
OCR指令的参数(如识别语言,是否复制到剪贴板)等同于截图OCR标签页。请在该标签页中修改参数。

指令简写

所有指令支持用前几个字母替代,如--screenshot、--clipboard可以分别简写为--sc、--cl。具体可自己尝试。

高级指令

(仅供有经验的开发者使用)

高级指令代表了一种无限的可能性(笑),允许通过命令行调用每一个标签页(模块)上的每一个函数。但是用法比较复杂,你需要在一定程度上阅读本项目源码才能知道该调用哪个函数。

页面指令

“页面模板”相当于收藏夹,可以从收藏夹中打开一个新页面。
“已打开的页面”可以关闭。

查询当前已打开的页面,及所有页面模板:可以获取 [index]
  1. Umi-OCR.exe --all_pages
复制代码
创建新标签页:[index] 为页面模板序号
  1. Umi-OCR.exe --add_page [index]
复制代码
删除已创建的标签页:[index] 为现有页面序号
  1. Umi-OCR.exe --del_page [index]
复制代码
模块指令

每个标签页,通常会具有两个模块,一个是py,一个是qml。还可能会有一些不依附于标签页的独立py或qml模块。
每个模块上都有一些函数可以被调用。 模块名 [name] 允许简写,如一个模块全称是 "ScreenshotOCR_1" ,那么可用 "ScreenshotOCR" 来代替。
每次程序运行,模块名(的后缀)不一定相同。请使用简写来忽略后缀。

查询当前存在的py和qml模块:可获取 [name]
  1. Umi-OCR.exe --all_modules
复制代码
函数指令

查询某个py模块上有什么可调用的函数: [name] 为模块名
  1. Umi-OCR.exe --call_py [name]
复制代码
查询某个qml模块上有什么可调用的函数: [name] 为模块名
  1. Umi-OCR.exe --call_qml [name]
复制代码
[name] 为模块名,[function] 为函数名, [..paras] 为任意个参数(只支持字符串类型)。
调用py模块上的函数:
  1. Umi-OCR.exe --call_py [name] --func [function] [..paras]
复制代码
调用qml模块上的函数:
  1. Umi-OCR.exe --call_qml [name] --func [function] [..paras]
复制代码
同步调用函数

命令行解析器运行在子线程。为了确保线程安全,会发送到主线程执行命令。所以对于你来说就是异步执行的了,即无法取得函数的返回值。
如果要获取函数返回值,可传入 --thread 指令,同步执行命令。
这种操作较不安全,可能导致功能不正常甚至程序崩溃。
  1. Umi-OCR.exe --call_qml [name] --func [function] --thread [..paras]
复制代码

评分

参与人数 2技术 +2 收起 理由
小白来了 + 1 大佬厉害,感谢分享!
77七 + 1 感谢分享

查看全部评分

发表于 2025-2-25 17:33:18 | 显示全部楼层
感谢分享,收藏一下!!!
发表于 2025-8-10 14:04:11 | 显示全部楼层
回复 1# Batcher
老大知道怎么将识别的文本保存到本地,或者赋值给变量用来判断或者调用吗。



测试了几种方法都无法导出文本信息:
  1. @echo off & setlocal enabledelayedexpansion
  2. taskkill /f /IM Umi-OCR.exe >nul 2>&1

  3. echo,获取方式一:
  4. Umi-OCR.exe --hide
  5. Umi-OCR.exe --path "C:\1.bmp"
  6. Umi-OCR.exe --quit

  7. echo,获取方式二:
  8. Umi-OCR.exe --hide
  9. Umi-OCR.exe --path "C:\1.bmp" >datas.ini
  10. Umi-OCR.exe --quit
  11. type datas.ini

  12. echo,获取方式三:
  13. Umi-OCR.exe --hide
  14. for /f %%a in ('Umi-OCR.exe --path "C:\1.bmp"') do echo,获取数据为:%%a
  15. Umi-OCR.exe --quit

  16. pause
复制代码
发表于 2025-8-10 19:10:10 | 显示全部楼层
本帖最后由 77七 于 2025-8-10 20:40 编辑

回复 3# yakeyun


   
没注意看图片.. 试试这个版本 Umi-OCR_Rapid_v2.0.1

评分

参与人数 1技术 +1 收起 理由
yakeyun + 1 乐于助人

查看全部评分

发表于 2025-8-12 11:12:41 | 显示全部楼层
本帖最后由 yakeyun 于 2025-8-12 12:31 编辑

回复 4# 77七
前提说明,需要保证OCR软件一直要处于运行状态,然后批处理直接调用命令就可以,确保不会存在频繁打开和查杀进程出现的延时误报问题。
同时存在版本兼容问题,下载地址:https://hiroi-sora.lanzoul.com/s/umi-ocr
Umi-OCR_Paddle   不支持批处理命令行调用
Umi-OCR_Rapid     支持批处理命令行调用

方法测试出来了:
  1. Umi-OCR.exe --path "C:\1.bmp" --output test.txt
复制代码
完整代码:
  1. @echo off & setlocal enabledelayedexpansion

  2. echo,获取方式一:
  3. Umi-OCR.exe --path "C:\1.bmp" --output test.txt

  4. for /f %%d in (test.txt) do set ocrdata=%%d
  5. cls & echo,识别数据为:%ocrdata%

  6. pause
复制代码
发表于 2025-8-12 12:25:22 | 显示全部楼层
本帖最后由 yakeyun 于 2025-8-12 12:26 编辑

回复 5# yakeyun

配合模拟按键功能,完全可以替代大漠插件识别模块。
整理出批处理可用的两种方法:
  1. @echo off & setlocal enabledelayedexpansion

  2. echo,使用方法一【识别指向图片为变量】:
  3. Umi-OCR.exe --path "C:\1.bmp" --output test1.txt
  4. for /f %%d in (test1.txt) do set ocr1data=%%d

  5. echo,使用方法二【自动截图并识别为变量】:
  6. chcp 65001 >nul
  7. umi-ocr --screenshot screen=0 rect=0,0,50,150  --output test2.txt
  8. for /f %%d in ('type test2.txt') do set ocr2data=%%d
  9. chcp 936 >nul

  10. cls & echo,方法一识别数据为:%ocr1data%
  11. echo,方法二识别数据为:%ocr2data%

  12. pause
复制代码
发表于 2025-8-12 15:29:52 | 显示全部楼层
回复 5# yakeyun


    不太懂这个是不是和占用内存有关,cmd.exe 处理不了?试了下这样可以成功。paddle版本。
  1. for /f "delims=" %%a in ('powershell -c "D:\Umi-OCR_Paddle_v2.1.5.7z\Umi-OCR_Paddle_v2.1.5\Umi-OCR.exe" --path "d:\1.png"') do echo [%%a]
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:16 , Processed in 0.016240 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表