Files
2026-07-13 12:07:56 +08:00

258 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[Translate to English](https://github-com.translate.goog/hiroi-sora/Umi-OCR/blob/main/docs/README_CLI.md?_x_tr_sl=zh-CN&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)
- 命令行手册
- [HTTP接口手册](http/README.md)
# 命令行手册
### 基础说明
命令行调用入口就是主程序 `Umi-OCR.exe` 。如果你使用的是备用启动器(如`UmiOCR-data/RUN_GUI.bat`),可能无法使用命令行。
![Umi-OCR-全局页-服务.png](https://tupian.li/images/2023/10/25/653907e9bac06.png)
如上图,必须允许HTTP服务才能使用命令行(默认开启)。主机选择 **仅本地** 就行了。
> Umi-OCR 依赖HTTP接口进行跨进程通信,将你输入的命令行指令传递给后台的Umi-OCR处理进程。通信过程仅在系统内部的本地环回进行,不会泄露到外部(不经过物理网卡),请放心使用。
**获取说明**`umi-ocr --help`
### 软件操控指令
**弹出主窗口**`umi-ocr --show`
**隐藏主窗口**`umi-ocr --hide`
**关闭软件**`umi-ocr --quit`
**重新加载配置文件**`umi-ocr --reload` `v2.1.5`以上版本支持)
> Umi-OCR 的配置文件是 `./UmiOCR-data/.settings` ini格式;软件界面上设置的参数将会保存到此文件。允许手动修改配置文件,然后使用 `--reload` 指令来重新加载该配置文件并刷新软件设置界面。
### OCR指令
**鼠标截屏**`umi-ocr --screenshot`
<details>
<summary><b>范围截屏</b>(无需鼠标划选)</summary>
</br>
自动对指定屏幕、指定区域进行截屏。
**范围截屏** 指令:
```bash
umi-ocr --screenshot screen=0 rect=x,y,w,h
```
范围截屏控制参数:
- `screen`: 要截图的显示器编号(多个显示器时有效),从0开始。缺省为0。
- `rect`: 截图范围矩形框,`x坐标,y坐标,w宽度,h高度`。缺省为全屏。
注意:
- 这两个参数的前面无需加`--`
- 这两个参数至少要填一个,才能触发范围截图。没有任一参数时,执行鼠标截屏。
示例1:截取第1个显示器的全屏
```bash
umi-ocr --screenshot screen=0
```
示例2:截取第2个显示器,从左上角 (50,100) 开始,大小为 300x200 的矩形区域
```bash
umi-ocr --screenshot screen=1 rect=50,100,300,200
```
示例3:与 [HotkeysCMD](https://github.com/hiroi-sora/HotkeysCMD) 工具配合,实现点击 **快捷键** 进行范围截图。
向 HotkeysCMD 的配置文件中添加这一行,表示点击 `F10` 时进行范围截图:
```bash
F10 umi-ocr --screenshot screen=0 rect=50,100,300,200
```
更多快捷键定义方式,详见 [HotkeysCMD](https://github.com/hiroi-sora/HotkeysCMD) 文档。
</details></br>
**粘贴图片**`umi-ocr --clipboard`
**指定路径**`umi-ocr --path "D:/xxx.png"`
- 可传入文件夹的路径。将搜索文件夹中所有图片(包括嵌套子文件夹),并输出所有识别结果。
- 可传入多个路径。请用双引号`""`包裹单个路径,不同路径间用空格 ` ` 隔开。
**指定多个路径** 示例:`umi-ocr --path "D:/img1.png" "D:/img2.png" "D:/image/test"`
提示:
- 多图识别时,耗时较长;一次命令结束前不要输入下一个命令。
- 对于截屏、粘贴、路径指令,OCR参数(如识别语言,是否复制到剪贴板、是否弹出主窗口)采用`截图OCR`标签页的设定。如果不希望命令行任务弹出主窗口,请在`截图OCR`标签页中关闭该选项。
### 二维码指令
**识别二维码**`umi-ocr --qrcode_read "D:/xxx.png"`
- 与OCR指令一致,二维码识别的指令也支持传入多个图片&文件夹路径。
**生成二维码**`umi-ocr --qrcode_create "文本内容" "D:/输出图片.jpeg"`
- 默认的图片宽高为最小适配长度。也可以在指令后方加上数字,手动指定图片宽高:
例,同时指定宽高为128像素:`umi-ocr --qrcode_create "文本内容" "D:/输出图片.jpeg" 128`
例,宽128,高256像素:`umi-ocr --qrcode_create "文本内容" "D:/输出图片.jpeg" 128 256`
### 关于指令简写
- 所有指令支持用前几个字母替代,如`--screenshot``--clipboard`可以分别简写为`--sc``--clipbo`。具体可自己尝试。
- 对于大部分系统,支持使用小写文件名+省略`.exe`来调用程序。即 `umi-ocr --sc` 等价于 `Umi-OCR.exe --sc`
---
### 命令行结果输出
- **复制到剪贴板** ` --clip`
- **输出到文件(覆盖)** ` --output "file.txt"`
- **输出到文件(追加)** ` --output_append "file.txt"`
也可以使用箭头符号:
- `"-->"` 等价于 `--output`
- `"-->>"` 等价于 `--output_append`
例:
```bash
umi-ocr --screenshot --clip
umi-ocr --screenshot --output test.txt
umi-ocr --screenshot "-->" test.txt
```
> 注:由于运行环境的一些限制,Umi-OCR 暂时无法重定向输出流,系统管道重定向符`>`、管道操作符`|`可能失效。
> 如果需要用程序 调用命令行指令,但是发现无法收到回传,可使用 [HTTP转发命令行](http/argv.md#/argv) 代替。
---
## 高级指令
(仅供有经验的开发者使用)
高级指令代表了一种无限的可能性(笑),允许通过命令行调用任意标签页(模块)上的任意函数。但是用法比较复杂,你需要在一定程度上阅读本项目源码才能知道该调用哪个函数、传入什么参数。
### 页面指令
> “页面模板”相当于收藏夹,可以从收藏夹中打开一个新页面。
> “已打开的页面”可以关闭。
查询当前已打开的页面,及所有页面模板:可以获取 [index]
```
umi-ocr --all_pages
```
创建新标签页:[index] 为页面模板序号
```
umi-ocr --add_page [index]
```
删除已创建的标签页:[index] 为现有页面序号
```
umi-ocr --del_page [index]
```
### 模块指令
> 每个标签页,通常会具有两个模块,一个是py,一个是qml。还可能会有一些不依附于标签页的独立py或qml模块。
> 每个模块上都有一些函数可以被调用。
> 模块名 [name] 允许简写,如一个模块全称是 "ScreenshotOCR_1" ,那么可用 "ScreenshotOCR" 来代替。
> 每次程序运行,模块名(的后缀)不一定相同。请使用简写来忽略后缀。
查询当前存在的py和qml模块:可获取 [name]
```
umi-ocr --all_modules
```
### 函数指令
查询某个py模块上有什么可调用的函数: [name] 为模块名
```
umi-ocr --call_py [name]
```
查询某个qml模块上有什么可调用的函数: [name] 为模块名
```
umi-ocr --call_qml [name]
```
调用py模块上的函数:
- [name] 为模块名,[function] 为函数名。 [..paras] 为任意个参数。
- paras 输入字符串。会根据文本结构,自动转为4种变量类型: `int``float``list``dict`
```
umi-ocr --call_py [name] --func [function] [..paras]
```
调用qml模块上的函数:
```
umi-ocr --call_qml [name] --func [function] [..paras]
```
示例,调用二维码页qml模块的路径扫码函数,传入路径列表:
```
umi-ocr --call_qml QRCode --func scanPaths '[\"D:/Pictures/Screenshots/test/二维码/1111.png\",\"D:/Pictures/Screenshots/test/二维码/2222.png\"]'
```
### 同步调用函数
> 命令行解析器运行在子线程。为了确保线程安全,默认转到主线程执行命令。所以对于你来说就是异步执行的了,即无法取得函数的返回值。
> 如果要获取函数返回值,可传入 --thread 指令,同步执行命令。
> 这种操作较不安全,可能导致功能不正常甚至程序崩溃。
```
umi-ocr --call_qml [name] --func [function] --thread [..paras]
```
---
### 高级指令示例:
示例目标:将一些PDF文档添加到软件,生成双层可搜索PDF。
(提示:这个例子只是用来演示高级指令能做到什么事情。PDF文档识别可以直接调用 [HTTP接口](http/api_doc.md) 。)
做法:
##### 1. (可选)如果当前没有打开`批量文档`标签页,那么打开它:
- 1.1. 查询当前所有页面模板:
```bash
umi-ocr --all_pages
```
- 1.2. 已知`BatchDOC`标签页的 `template_index``3`。创建该标签页:
```bash
umi-ocr --add_page 3
```
- 1.3. 检查 `BatchDOC` 模块是否已存在:
```bash
umi-ocr --all_modules
```
- 发现在`Qml modules`中,已存在 `BatchDOC_1` ,那么就是正确的。
##### 2. 将多个文档的路径,输入软件:
- 假设想要添加以下的文件:
```bash
C:\Users\My\Desktop\111.epub
C:\Users\My\Desktop\222.pdf
```
- 使用以下指令,输入文档路径:(路径中`\`需要改为`/`
```bash
umi-ocr --call_qml BatchDOC --func addDocs '[ \"C:/Users/My/Desktop/111.epub\", \"C:/Users/My/Desktop/222.pdf\"]'
```
关于`addDocs`后面路径参数的格式:
- 在 Powershell 中,最外层为单引号`'`,且左双引号前面必须有空格。即:`'[■\"path_1\",■\"path_2\",■\"path_3\"]'` (将`■`替换为空格` `)。单个路径为`'[■\"路径1\"]'`
- 在 Terminal (终端)中,最外层为双引号`"`。即:`"[\"path_1\",\"path_2\",\"path_3\"]"`
- 这是 Windows 解析命令行参数的规则限制,与 Umi 自身的设计无关。
##### 3. 启动任务:
```bash
umi-ocr --call_qml BatchDOC --func docStart
```
- 暂时无法通过CLI更改保存文件的类型(默认为 双层可搜索PDF )。想要添加其他保存类型,必须在软件界面中勾选。