Umi-OCR


NameUmi-OCR JSON
Version 1.2.1 PyPI version JSON
download
home_pagehttps://github.com/yanjlee/Umi-OCR
SummaryUmi-OCR 文字识别工具
upload_time2024-06-01 08:39:48
maintainerNone
docs_urlNone
authoryanjlee
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements psutil pynput pyperclip pywin32 pywin32_ctypes windnd winshell pillow pyinstaller
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <a href="https://github.com/hiroi-sora/Umi-OCR">
    <img width="200" height="128" src="https://tupian.li/images/2022/10/27/icon---256.png" alt="Umi-OCR">
  </a>
</p>

<h1 align="center">Umi-OCR 文字识别工具</h1>

<p align="center">
  <a href="https://github.com/hiroi-sora/Umi-OCR/releases/latest">
    <img src="https://img.shields.io/github/v/release/hiroi-sora/Umi-OCR?style=flat-square" alt="Umi-OCR">
  </a>
  <a href="License">
    <img src="https://img.shields.io/github/license/hiroi-sora/Umi-OCR?style=flat-square" alt="LICENSE">
  </a>
  <a href="#下载">
    <img src="https://img.shields.io/github/downloads/hiroi-sora/Umi-OCR/total?style=flat-square" alt="forks">
  </a>
  <a href="https://star-history.com/#hiroi-sora/Umi-OCR">
    <img src="https://img.shields.io/github/stars/hiroi-sora/Umi-OCR?style=flat-square" alt="stars">
  </a>
  <a href="https://github.com/hiroi-sora/Umi-OCR/forks">
    <img src="https://img.shields.io/github/forks/hiroi-sora/Umi-OCR?style=flat-square" alt="forks">
  </a>
</p>

<div align="center">
  <strong>免费,开源,可批量的离线OCR软件</strong><br>
  <sub>适用于 Windows7 x64 及以上</sub>
</div>

<div align="center">
  <h3>
    <a href="#说明目录">
      使用说明
    </a>
    <span> • </span>
    <a href="#下载">
      下载地址
    </a>
    <span> • </span>
    <a href="#更新日志">
      更新日志
    </a>
    <span> • </span>
    <a href="https://github.com/hiroi-sora/Umi-OCR/issues">
      提交Bug
    </a>
  </h3>
</div>
<br>

- **免费**:本项目所有代码开源,完全免费。
- **方便**:解压即用,离线运行,无需网络。
- **批量**:可批量导入处理图片,结果保存到本地 txt / md / jsonl 多种格式文件。也可以即时截屏识别。
- **高效**:采用 PaddleOCR-json C++ 识别引擎。只要电脑性能足够,通常比在线OCR服务更快。
- **精准**:默认使用PPOCR-v3模型库。除了能准确辨认常规文字,对手写、方向不正、杂乱背景等情景也有不错的识别率。可设置**忽略区域**排除水印、设置**文块后处理**合并排版段落,得到规整的文本。

![](https://tupian.li/images/2023/04/26/6447fe3273efd.png)

![](https://tupian.li/images/2022/09/29/1.3-.png)

## 说明目录

- [简单上手](#简单上手) 截图、批量识别~
- [排版优化](#goto-1) 如何合并一个自然段内的文字?
- [忽略区域](#忽略区域功能) 如何排除截图水印处的文字?
- [多国语言](#添加多国语言) 添加更多PP-OCR支持的语言模型库!
- [命令行调用](#命令行调用) 用命令行或第三方工具来调用Umi-OCR!
- [联动翻译软件](#goto-3) 截图OCR后发送指定按键,触发翻译软件进行翻译
- [更多小技巧](#goto-2)
- [问题排除](#问题排除) 无法启动引擎 / 多屏幕截图异常 ?

## 下载

#### v2.0.0

全新重构的v2预览版本已开放测试,[欢迎体验](https://github.com/hiroi-sora/Umi-OCR_v2)。

#### v1.3.7

Github下载:[Release v1.3.7](https://github.com/hiroi-sora/Umi-OCR/releases/tag/v1.3.7)

蓝奏云下载:[https://hiroi-sora.lanzoul.com/s/umi-ocr](https://hiroi-sora.lanzoul.com/s/umi-ocr)

> 配套 **多国语言识别扩展包** 可导入 `繁中,英,日,韩,俄,德,法` 识别库,请按需下载。

#### 使用源代码

<details>
<summary>展开</summary>

- main分支可能含有开发中的新功能。若您想使用稳定版本,建议切换到[最新的Release分支](https://github.com/hiroi-sora/Umi-OCR/branches)。
- 确保python版本不低于 `3.8` 。建议使用 `3.8.10` ,具有最好的兼容性。
- 安装依赖库:`pip install -r requirements.txt`
- 运行 `main.py` 启动程序。测试无异常后,运行 `to_exe.py` 一键打包。
- 打包后,请将引擎组件 [PaddleOCR-json 整个文件夹](PaddleOCR-json) 放置于exe同目录下!
- 打包后,请将引擎组件 [PaddleOCR-json 整个文件夹](PaddleOCR-json) 放置于exe同目录下!!
- 打包后,请将引擎组件 [PaddleOCR-json 整个文件夹](PaddleOCR-json) 放置于exe同目录下!!!

</details>

## 兼容性(Paddle引擎)

- 支持 Win7 x64 及以上系统。
- CPU必须具有AVX指令集。(凌动、安腾、赛扬和奔腾处理器可能不兼容)
- 若您的CPU不符合以上条件,请使用 [v2](https://github.com/hiroi-sora/Umi-OCR_v2) Rapid引擎版本。

## 前言

关于**忽略指定区域**的特殊功能:

> 类似含水印的视频截图、含有UI/按钮的游戏截图等,往往只需要提取字幕区域的文本,而避免提取到水印和UI文本。本软件可设置忽略某些区域内的文字,来实现这一目的。
> 
> 当有大量的影视和游戏截图需要整理归档,或者想翻找包含某一段台词/字幕的截图;将这些图片提取出文字、然后Ctrl+F是一个很有效的方法。这是开发本软件的初衷。

关于离线OCR引擎 [PaddleOCR-json](https://github.com/hiroi-sora/PaddleOCR-json) :
> 对 [PaddleOCR 2.6 cpu_avx_mkl C++](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6) 的封装。效率高于Python版本PPOCR及部分Python编写的OCR引擎,通常比在线OCR服务更快(省去网络传输的时间)。支持更换Paddle官方模型(兼容v2和v3版本)或自己训练的模型,支持修改PPOCR各项参数。通过添加不同的语言模型,软件可识别多国语言。

## 简单上手

#### 准备

下载压缩包并解压全部文件即可。

#### 截图识别

点击截图按钮或自定义快捷键,唤起截图识别。

![](https://tupian.li/images/2022/09/29/1-w-.png)

可以设置截图后生成一个预览窗口。预览窗口可以被钉在屏幕顶层,或调为半透明,方便对比查看。

#### 粘贴图片到软件

在任何地方(如文件管理器,网页,微信)复制图片,软件上点击粘贴按钮或快捷键,自动识别。

![](https://tupian.li/images/2022/09/29/2-w-.png)

#### 批量识别本地图片文件

将图片或文件夹拖进软件,批量转换文字。也可以点击按钮打开浏览窗口导入。

识别结果将保存到本地。可选生成纯文本txt文件、带链接Markdown文件、原始信息jsonl文件等不同格式。可配置任务完成后执行关机/待机。

![](https://tupian.li/images/2022/09/29/3-w-.png)

<a id="goto-1"></a>

## 文本块后处理(合并段落)

OCR识别出的文本是按“块”划分的,通常一行文字分为一块,有时还会将一行误划分为多块,这给阅读带来了不便。您可以在Umi-OCR设置页的**合并段落**中选择恰当的方案,合并同一行或同一段落内的文字,按正确的顺序排序。

#### 排版方案:

- **单行**:合并同一行的文字,适合绝大部分情景。
- **多行-自然段**:智能识别、合并属于同一段落的文字,适合绝大部分情景。
- **多行-代码段**:尽可能还原原始排版的缩进与空格。适合识别代码片段,或需要保留空格的场景。
- **竖排**:适合竖排排版。需要与同样支持竖排识别的模型库配合使用。

## 忽略区域功能

忽略区域是本软件特色功能,可用于排除图片中水印的干扰,让识别结果只留下所需的文本。

<details>
<summary>展开</summary><BR>

“忽略区域”是指图片上指定位置与大小的矩形区域,完全处于这些区域内的文字块,将被排除。

- 点击 **设置** 选项卡中的 **打开忽略区域编辑器** ,进入编辑器窗口。
- 将任意图片 **拖入** 该窗口,可预览该图片。将新图片拖入窗口可切换预览,但已绘制的忽略区域不会消失;可切换不同图片来仔细调整忽略区域。
- 绘制 **忽略区域** :拖入图片后,点击选中左起第一按钮 **+忽略区域 A** ,然后在图片上按住左键拖拽,绘制矩形区域。可 **撤销** 步骤。
- 绘制完后,点击 **完成** 返回软件主窗口。若不想应用此次绘制,则右上角X,取消。

简单案例见下。

#### 简单排除视频截图中的水印:

1. 打开忽略区域设置窗口,拖入任一张截图。
    稍等约1秒,面板上会显示出图片,识别到的文字区域会被虚线框起来。发现右上角的水印也被识别到了。
![](https://tupian.li/images/2022/03/30/image04bea2a47232088b.png)
2. 点击选择 **+忽略区域 A** 。在画面上按住左键拖拽,绘制方框完全包裹住水印区域,范围可以大一些。可绘制多个方框。
![](https://tupian.li/images/2022/03/30/image4a49b65bbd22c4a6.png)
3. 点击 **完成** 。返回主窗口, **开始任务** 。

#### 排除游戏截图中的两种UI:

- 假设有一组游戏截图,主要分为两类图片,这两类图片的文字位置和UI位置不太相同:
![](https://tupian.li/images/2022/03/30/image1.png)
  - 甲类(上图左)为对话模式,字数少,要保留的台词文本在画面下方,要排除的UI分布于底端。
  - 乙类(上图右)为历史文本模式,字数多,从上到下都有要保留的文本(与甲类UI位置有重合),要排除的UI分布在两侧。
1. 拖入一张甲类图片。选择 **+忽略区域 A** ,绘制方框包裹住要排除的 **底端UI** 。可绘制多个方框。
![](https://tupian.li/images/2022/03/30/image2ad97ff898e39d82f.png)
2. 拖入一张乙类图片。选择 **+识别区域** ,绘制方框包裹住 **小部分要保留的文本** 。注意只要该区域内含有任意保留文本即可,不需要画得很大,不需要包裹住所有保留文本;不能与甲类图中 **可能存在的任何文本** 重合。
![](https://tupian.li/images/2022/03/30/image3.png)
1. 然后选择 **+忽略区域 B** ,绘制方框包裹住乙类图要排除的 **两侧UI** 。可绘制多个方框。
![](https://tupian.li/images/2022/03/30/image4.png)
1. 点击 **完成** 。返回主窗口, **开始任务** 。

#### 忽略区域处理逻辑:

- **忽略区域A** :正常情况下,处于 **忽略区域A** 内的文字 **不会** 输出。
- **识别区域** :当识别区域内存在文本时,**忽略区域A失效** ;即处于忽略区域A内的文字也 **会** 被输出。
- **忽略区域B** :当 **忽略区域A失效** 时,忽略区域B才生效;即处于区域A内的文字 **会** 输出、区域B内的文字 **不会** 输出。
  
    | 识别区域     | 忽略区域A | 忽略区域B |
    | ------------ | --------- | --------- |
    | × 不存在文字 | √ 生效    | × 失效    |
    | √ 存在文字   | × 失效    | √ 生效    |
- “忽略区域配置”只针对一种分辨率生效。假如配置的分辨率是1920x1080,那么批量识别图片时,只有符合1920x1080的图片才会排除干扰文本;1920x1081的图片中的文字会全部输出。
- 拖入预览的图片必须分辨率相同。假如先拖入1920x1080的图片,再拖入其它分辨率的图片;软件会弹窗警告。只有点击 **清空** 删除当前已配置的忽略区域,才能拖入其他分辨率图片,并应用此分辨率。

</details>


## 添加多国语言

<details>
<summary>展开</summary><BR>

##### 方法一:下载 [Umi-OCR 多国语言识别扩展包] ,拷贝到软件目录即可。

[点此跳转下载位置](#下载)

扩展包内置语言:`繁中,英,日,韩,俄,德,法`

##### 方法二:手动下载添加 PP-OCR 模型库

0. 模型分为三种:det检测,cls方向分类,rec识别。其中det和cls是多语言通用的,只需下载新语言的rec识别模型即可。
1. 前往 PP-OCR系列 [V3多语言识别模型列表](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md#23-%E5%A4%9A%E8%AF%AD%E8%A8%80%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B%E6%9B%B4%E5%A4%9A%E8%AF%AD%E8%A8%80%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0%E4%B8%AD) ,下载一组**rec识别**模型。
   - 若V3模型列表里没有找到目标语言,可以去[支持语言列表](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/multi_languages.md#5-%E6%94%AF%E6%8C%81%E8%AF%AD%E7%A7%8D%E5%8F%8A%E7%BC%A9%E5%86%99)查看PPOCR有没有提供这种语言。若有,则可能它暂未推出V3模型,可以先使用旧版V2模型。(V3模型网址中的2.x一路换成更小的数字可以查看旧版页面)
2. 前往 PP-OCR系列 [字典列表](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/ppocr/utils/dict) ,下载对应语言的字典文件。(但V3英文字典`en_dict.txt`不是本目录下的那个,而是在[上一级目录](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppocr/utils/en_dict.txt))
3. 将下载好的文件解压放进软件目录的 `PaddleOCR-json` 文件夹中。
4. 复制一份 `PaddleOCR_json_config_[模板].txt` ,改一下名。(文件名不允许有非英文字符!)
5. 打开复制好的 `PaddleOCR_json_config_XX.txt` ,将 rec路径 `rec_model_dir` 和 字典路径 `rec_char_dict_path` 改成目标语言的文件(夹)的名称。若模型库是v2版本,还必须加上一行 `rec_img_h 32` 。
6. 回到上一层目录 `Umi-OCR` ,打开 `Umi-OCR_config.json` ,在 `"ocrConfig"` 中添加新语言的信息。键为语言名称,值的 `path` 为config txt文件的名称。保持json格式,注意逗号。(修改config.json文件时,请确保未打开软件,否则配置可能被覆盖。)
7. 打开软件,检查设置页的`识别语言`下拉框是否已经能选择该语言。

</details>

<a id="goto-2"></a>

## 进阶操作 & 小技巧

#### 命令行调用

<details>
<summary>展开</summary><BR>

支持通过命令行调用Umi-OCR,执行部分识图任务。

> 若软件未在运行,则命令行会启动软件并执行任务。若软件已在后台运行,则命令行会直接调用后台的软件执行任务。这样多次调用时可以节省初始化的时间。

注意命令行调用入口是程序目录的`extra`中的`umiocr.exe`,而不是软件常规入口(`Umi-OCR 文字识别.exe`)。

⚠︎ **`umiocr.exe`在程序目录的`extra`文件夹中。** ⚠︎

> 命令行语法按照谷歌gflags规则:
> `-命令` 或 `-命令=参数` 或 `-命令 参数`

##### 指令0:启动软件

若软件尚未启动,则任意指令均会启动软件主程序。

##### 指令1:显示窗口

`umiocr.exe`
或
`umiocr.exe -show`

无论主窗口处于什么状态(最小化、收到托盘、被别的窗口覆盖),该指令都会让主窗口弹到最上层。

##### 指令2:隐藏窗口

`umiocr.exe -hide`

将窗口收到托盘区或最小化。

`show`和`hide`这两个指令可以与其它指令混用,如 `umiocr.exe -clipboard -show`

##### 指令3:关闭软件

`umiocr.exe -exit`

##### 指令4:本地图片识别

`umiocr.exe -img=图片.png`

支持图片/文件夹;多个路径以逗号,分隔;含空格的路径加双引号""。如:

`umiocr.exe -img="D:/图库,E:/my img/图片.png"`

若路径含中文,请务必加双引号。

##### 指令5:剪贴板识图

`umiocr.exe -clipboard`

##### 指令6:截屏识图 

`umiocr.exe -screenshot`

##### 指令7:切换识别语言

`umiocr.exe -language=序号`

“序号”为软件设置里各个语言的排序,从0开始。从上往下数,比如简中排第一,那么是`-language=0`。繁中排第二,那么是`-language=1`。英文排第四,`-language=3`。以此类推。


</details>

<a id="goto-3"></a>

#### 复制后发送按键 & 联动翻译软件

<details>
<summary>展开</summary><BR>

##### 发送指定按键

`v1.3.5` 起,支持快捷识图完成并将结果写入剪贴板后,发送一组指定按键,触发翻译软件进行翻译。当然也可以用于触发你的AHK脚本等,实现更多奇奇怪怪的功能。

`v1.3.6` 起,截图联动是一个单独的功能,由独立快捷键触发,与常规的截图OCR互不影响。

这是一个隐藏高级功能,请先勾选设置页底部的`高级选项`,重启软件。设置页的`快捷识图`板块会多出两组条目:

- **截图联动 快捷键**:您可设置一组快捷键,来触发该功能。
- **联动发送按键**:触发识图,并将识别结果写入剪贴板后,可以发送一组指定按键。**次**表示重复发送按键的次数。

经过测试,Umi-OCR可以顺利地与 [CopyTranslator](https://github.com/CopyTranslator/CopyTranslator) 及 [沙拉查词](https://github.com/crimx/ext-saladict) 联动触发翻译,以下是配置方法。

##### 联动 CopyTranslator

1. 下载 [CopyTranslator](https://github.com/CopyTranslator/CopyTranslator)。这里示例所用的版本是 `v11` 。
2. 如果不介意CopyTranslator监听剪贴板(每次剪贴板变动都尝试翻译),那么勾选Umi-OCR的`自动复制结果` 和CopyTranslator的`监听剪贴板`即可。
    ![](https://tupian.li/images/2023/06/20/64915f826f16d.png)

3. 如果不一定始终开启监听剪贴板,又希望Umi-OCR在任何情况下能唤起CopyTranslator,可以这样处理:CopyTranslator在设置里勾选`双Ctrl+C翻译`;Umi-OCR的`联动发送按键`录制为`ctrl+c`,`2`次。
    ![](https://tupian.li/images/2023/06/20/6491611305570.png)

##### 联动 沙拉查词

1. [沙拉查词](https://github.com/crimx/ext-saladict) 是一款浏览器插件,支持Chrome、Edge等浏览器,[这是下载页面](https://saladict.crimx.com/download.html)。下面以Edge浏览器为例讲解配置方法。其他浏览器大同小异。(Firefox支持不完善,不推荐。)
2. 打开沙拉查词的插件设置页面,左边栏选择`基本选项`,右边栏勾选`后台保持运行`。(如果不勾选也能使用,但必须保持浏览器开启。)
3. 左边栏点击`隐私设置`,右边栏点击`设置快捷键`。
    ![](https://tupian.li/images/2023/06/20/649165cae4b87.png)
4. 在弹出的新页面中,将沙拉查词的`在独立窗口中搜索剪贴板内容`设置任意一组快捷键,然后右边改为`全局`。Umi-OCR的`联动发送按键`录制为相同快捷键,`1`次。
    ![](https://tupian.li/images/2023/06/20/649165faa434f.png)
5. 回到沙拉查词的设置页,左边栏点击`权限管理`,勾选`读取剪贴板`。
    ![](https://tupian.li/images/2023/06/20/649165f7dbf18.png)

</details>


#### 自定义计划任务

<details>
<summary>展开</summary><BR>

- 除了默认的自动关机/待机外,您还可创建自己的计划任务,让软件在完成一次批量识别后执行自定义cmd命令。
- 在软件**关闭**的情况下,打开配置文件 `Umi-OCR_config.json` 。也可以先打开软件,点击设置页最底部的 **打开设置文件** ,然后退出软件。
- 在`okMission`中添加一项元素。
- 键为任务名称,值为字典,其中`code`为cmd命令。多条命令可用`&`分隔。例:
    ```
    "我的任务": {"code": "cmd命令1 & 命令2"}
    ```
</details>


#### 内存清理

<details>
<summary>展开</summary><BR>

本功能默认关闭。

供内存占用十分敏感的用户使用,**会有偶尔阻慢任务速度的副作用。** 一般用户无需开启。

若有需要开启,请在设置页拉到底部,勾选`高级选项`,重启软件,然后:`OCR识别引擎设置` → `自动清理内存` → `将任一参数改成>0的值` 。

原理是满足任一条件(内存占用超限,或者一段时间没有执行任务)则重启引擎组件,释放当前引擎占用的所有内存。

![](https://tupian.li/images/2023/03/19/64168bf25e86c.png)

</details>

#### 添加到运行(Win+R快捷键)

<details>
<summary>展开</summary><BR>

1. 在任何地方创建一个文件夹,名字随意,将该文件夹的路径[加入系统环境变量](https://www.bing.com/search?q=win10+%E6%B7%BB%E5%8A%A0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)。
2. 软件创建一个快捷方式,改一个简短的名字,如`umi`。
3. 将快捷方式扔进第1步的文件夹中。
4. 任何时候按下`Win+R`,在弹窗中输入`umi`,即可打开软件。
- 提示:请不要起名为`ocr`,因为系统可能存在同名的注册路径,无法用此指令唤起第三方软件。

</details>


## 问题排除

#### 无法启动引擎

<details>
<summary>展开</summary><BR>

> PaddleOCR引擎暂不支持在没有AVX指令集的CPU上运行,遇到该问题可尝试换用RapidOCR引擎。

> 下图指示如何判断该问题是否由缺失AVX引起。

![CPUAVX.png](https://tupian.li/images/2022/11/04/63651e9eed1df.png)

> 常见的家用CPU一般都支持AVX指令集,如下:

| AVX   | 支持的产品系列                                           | 不支持                                                      |
| ----- | -------------------------------------------------------- | ----------------------------------------------------------- |
| Intel | 酷睿Core,至强Xeon,11代及以后的赛扬Celeron和奔腾Pentium | 凌动Atom,安腾Itanium,10代及以前的赛扬Celeron和奔腾Pentium |
| AMD   | 推土机架构及之后的产品,如锐龙Ryzen、速龙Athlon、FX 等   | K10架构及之前的产品                                         |

> 可通过 [CPU-Z](https://www.cpuid.com/downloads/cpu-z/cpu-z_2.03-cn.zip) 软件查看自己CPU的指令集信息。

</details>

#### 多屏幕截图不正常

<details>
<summary>展开</summary><BR>

> 由于windows缩放对屏幕坐标系带来的影响,若外接多块屏幕,且缩放比例不一致时,可能导致Umi-OCR内置截图模块异常,如画面不完整、窗口变形、识别不出文字等。

若出现这种情况,以下提供三种可替代的解决方案,您可选择一种使用。

1. 在系统设置里的【更改文本、应用等项目的大小】将所有屏幕调到相同数值。见下图左。

![](https://tupian.li/images/2022/09/29/1-1-w--.png)

2. 软件附带了第二套截图方案:调用windows内置的“截图和草图”来完成截图并唤起OCR。可在软件设置里切换。(若系统截图后不能唤起OCR,请确保系统能通过 `win+shift+S` 触发截图,且`自动复制到剪贴板` 的开关不能关闭(默认是打开的)。见上图右。) 
<BR>

3. 禁用软件的DPI缩放。对`Umi-OCR 文字识别.exe`,右键 → 属性 → 兼容性 → 更改更高DPI设置 → 勾选`替代高DPI缩放行为` 。

</details>

#### 未找到引擎组件

请将引擎组件 `PaddleOCR-json 文件夹` 放置于程序入口(main.py或exe)同目录下。

## 效率测试

<details>
<summary>展开</summary><BR>


测试机器:

| CPU      | TDP | RAM | 是否兼容mkldnn |
| -------- | --- | --- | -------------- |
| r5 4600u | 15w | 16g | 无报错         |

测试集:

| 图片张数 | 测试条件                   | 分辨率    | 平均字块数量 | 平均字符数量 | 文字语言 |
| -------- | -------------------------- | --------- | ------------ | ------------ | -------- |
| 100      | 环境相同,多次测量取平均值 | 1920x1080 | 15           | 250          | 简体中文 |

测试结果:

| Umi-OCR版本        | 1.2.5 | 1.2.5 | 1.2.6 | 1.2.6     | 1.2.6   | 1.2.6 |
| ------------------ | ----- | ----- | ----- | --------- | ------- | ----- |
| PaddleOCR-json版本 | 1.1.1 | 1.1.1 | 1.2.0 | **1.2.0** | 1.2.0   | 1.2.0 |
| PP-OCR C++版本     | 2.1   | 2.1   | 2.6   | **2.6**   | 2.6     | 2.6   |
| 是否开启mkldnn     | ✅     |       | ✅     | ✅         | ✅       |       |
| PP-OCR模型库版本   | v2    | v2    | v2    | **v3**    | v3 slim | v3    |
| 总耗时(秒)       | 90    | 120   | 65    | **63**    | 170     | 400   |
| 平均单张耗时(秒) | 0.9   | 1.2   | 0.65  | **0.63**  | 1.7     | 4.0   |
| 内存占用峰值(MB) | 1000  | 350   | 1200  | **1700**  | 5800    | 500   |

结论:

- 在启用mkldnn情况下,`v1.2.6` 及之后的版本,比前代的效率具有显著优势。新版调教倾向于榨干硬件的性能,内存占用高于旧版。
- 不启用mkldnn时,新版本效率不如前代。故您的CPU若不支持mkldnn(极早期AMD型号),可尝试使用 `v1.2.5` 的旧版本Umi-OCR。
- 虽然Paddle官方文档中说经过压缩剪枝蒸馏量化的slim版模型的性能指标会超过传统算法,但实测 v3 slim 模型的性能远不如原始版本,还可能伴随着内存泄漏的问题。也许是 PP-OCR C++ 引擎不适配。在该问题解决之前,Umi-OCR发行版提供原始版本模型。

</details>

## 开发说明

<details>
<summary>展开</summary><BR>

开发者滴碎碎念

- 如果想用接口调用OCR,可试试 [PaddleOCR-json 图片转文字程序](https://github.com/hiroi-sora/PaddleOCR-json#paddleocr-json-%E5%9B%BE%E7%89%87%E8%BD%AC%E6%96%87%E5%AD%97%E7%A8%8B%E5%BA%8F) 。
- PPOCR v2.6 (PaddleOCR-json v1.2.0) 版本提高了批量处理的平均速度,但代价是需要花费更长时间进行初始化。提高了启用mkldnn加速时的识别速度,但代价时不开启加速时效率更低。(CPU只要不是特别早期的AMD,一般都能使用mkldnn,但加速幅度可能不如同档次的Intel。)
- 未来将增加 openblas 版识别引擎,进一步优化AMD的效率。(有 生 之 年)
- 使用`pyinstaller`打包。可以运行根目录下的 [to_exe.py](to_exe.py) 一键打包。
- 配置文件`Umi-OCR_config.json`在第一次运行程序时生成。若想自定义引擎组件的路径,可以修改其中的`ocrToolPath`属性。支持绝对/相对路径。可以实现多个前端共用一套引擎组件。
- `v1.3.0` 几乎重写了整个项目框架,将业务逻辑与UI代码解耦,划分出多个子模块。这些子模块我认为是比较方便拓展的:
  - 文件输出模块 `ocr/output_*.py`
  - 文本块后处理模块 `ocr/tbou/*.py`
- 添加一个新子模块的一般方法是:
  - 在 `utils/config.py` 里添加需要的配置项。在 `_ConfigDict` 里编写配置项参数后,可以自动生成tk.var变量,读、写本地配置文件。程序运行过程中,参数发生更改就会自动写入本地。
  - 在 `ui/win_main.py` 里添加需要的UI。需要tk.var动态变量时,直接 `Config.getTK()` 拿来绑定。
  - 继承模块父类,写业务逻辑。初始化时读入配置,事件方法里写对应的处理。
  - 模块尽量不要有过多对外接口,传参越多越容易乱。要什么去 `Config` 里拿就是了,比如要调用主窗口类的方法就用 `Config.main` ,要参数就 `Config.get()`。
- 反正 `Config` 就是中枢,是各个模块之间、模块与配置之间交流的全局接口。尽量不要跨线程同时读写。我是设计在执行任务时能修改到配置项的UI都给锁定,以免影响任务线程读取。
- 个人喜欢小而美,所以尽量不使用体积大的包。一直用tkinter而不用功能强大的QT也是这个原因,PYQT的体积近50m,几乎是整个项目打包后(不含引擎)的两倍大了。
- 注释超级多,不怕看不懂~ 不过有些代码写得比较丑,请见谅。

</details>

## TODO

<details>
<summary>已完成</summary>

- 输出内容可选为markdown风格并嵌入图片路径。
- 设置项能保存。
- 自动打开输出文件or文件夹。
- 识别剪贴板中的图片。
- 任务进行时,禁用部分设置项。
- 计划任务:完成后自动关机/休眠等。
- 递归导入文件夹。
- 优化适配PaddleOCR v3模型。
- 增加OCR引擎进程常驻后台的模式,大幅缩短剪贴板识图等零碎任务动时间。
- 监控OCR引擎进程内存占用,并可随时强制停止该进程。
- 内置截图。
- 可最小化至系统托盘。
- 优化UI:以图标代替文字按钮。设置项悬停有气泡提示框。
- 自动检测Windows语言是否兼容
- 解决引擎Opencv对不同地区语言Windows的兼容性。
- 优化引擎参数设置。
- 排版后处理:匹配/合并同段落文本,支持横/竖排。
- 可设置窗口弹出模式(锁定置顶)。
- 重新快捷键模块,解决失效和录制不正确的Bug。
- 设置开机自启。
- 创建快捷方式到开始菜单、桌面。
- 多开提示。
- 截图时隐藏窗口。
- 结构输出到每个图片同名的单独txt文件
- 创建开机启动项时,可选`不显示主窗口`。
- OCR结果输出到每个图片同名的单独txt文件。
- 增加独立的设置语言窗口,可在多处点开,便于切换语言。
- 合并段落添加`合并自然段-西文模式`,可在英文段落换行时补充空格。
- 快捷识图可选`自动清空面板`,只显示本次识别结果,且隐藏时间信息。
- 通过命令行控制Umi-OCR。
- 弹出悬浮的识别成功与否的提示。
- 定时或超过限度时自动清理引擎内存占用。

</details>

<details>
<summary>画饼(有生之年)</summary>

- 文本纠错。
- 多国语言。
- 高分屏支持。
- PDF文档识别。
- 对图片重命名。
- 提高初始化速度。
- 忽略区域能保存预设。
- 缩减离线OCR模块的体积。
- 自动检测CPU指令集是否兼容。
- 优化界面设计,分离功能模块到不同标签页。
- 离线OCR模块增加 `no_avx` 和 `openblas` 版本。

</details>

## 更新日志

点击版本号链接可前往对应备份分支。

##### v1.3.7 `2023.10.10`
- Paddle引擎兼容Win7 x64 。

##### [v1.3.6](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.6) `2023.9.26`
- 新功能:更强大的段落合并方案-`单行/多行自然段/多行代码段`。支持自动判断中/英文段落,采取对应的合并规则。
- 移除一些过时的段落合并方案。
- 功能调整:`截图联动` 划分为独立的功能,不受常规截图OCR影响。

##### [v1.3.5](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.5) `2023.6.20`
<!-- 6.5k★ 撒花~ -->
- 新功能:复制识别结果后,可发送指定按键,以便联动唤起翻译器等工具。
- 新功能:命令行增加切换识别语言的指令。
- 修Bug:低配置机器上有概率误报`OCR init timeout: 5s` 。[#154](https://github.com/hiroi-sora/Umi-OCR/issues/154) , [#156](https://github.com/hiroi-sora/Umi-OCR/issues/156)。
- 调整:默认停止任务30秒后释放一次内存。

##### [v1.3.4](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.4) `2023.4.26`
<!-- 一周年纪念! -->
- 新功能:截图预览窗口。
- 新功能:可用方向键微调截图框位置。
- 修Bug:拖入图片时有几率卡退主窗口 [issue #126](https://github.com/hiroi-sora/Umi-OCR/issues/126) 。
- 优化了一些处理流程。

##### [v1.3.3](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.3) `2023.3.19`
<!-- 4.5k★ 撒花~ -->
- 新功能:命令行模式。
- 新功能:识图完成的通知悬浮窗。
- 新功能:自动清理引擎内存。
- 修复了一些BUG,优化了一些UI表现。

##### [v1.3.2](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.2) `2022.12.1`
<!-- 3k★ 撒花~ -->
- 新功能:创建开机启动项时,可选`不显示主窗口`。
- 新功能:OCR结果输出到每个图片同名的单独txt文件。
- 新功能:增加独立的设置语言窗口,可在多处点开,便于切换语言。
- 新功能:合并段落添加`合并自然段-西文模式`,可在英文段落换行时补充空格。
- 新功能:快捷识图可选`自动清空面板`,只显示本次识别结果,且隐藏时间信息。
- 修复了一些BUG。

##### [v1.3.1](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.1) `2022.11.4`
<!-- 2k★ 撒花~ -->
- 修Bug:快捷键模块重写,引入pynput库,舍弃keyboard库,解决几率失效、录制不正确等Bug。
- 新功能:添加开机自启,桌面快捷方式,开始菜单快捷方式。
- 新功能:多开软件时提示。
- 新功能:截图时隐藏窗口。
- 调整UI:使用频率极低的设置项设为隐藏的高级选项。
- 优化:检查引擎组件是否存在。
- 优化:`横排-合并多行-自然段` 优化逻辑,支持0~2全角空格首行缩进。

##### [v1.3.0](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.0) `2022.9.29`
- 新功能:框选截屏。
- 新功能:系统托盘图标。
- 新功能:引擎进程常驻。
- 新功能:文本块后处理模块。
- 新功能:自定义主输出栏字体。
- 新功能:设置窗口弹出模式(保持置顶)。
- 调整UI:自适应Win风格组件。
- 修正了Bug:系统语言兼容性问题 [issue #16](https://github.com/hiroi-sora/Umi-OCR/issues/16) 。
- 修正了Bug:微信图片粘贴问题 [issue #22](https://github.com/hiroi-sora/Umi-OCR/issues/22) 。
- 更新PaddleOCR-json模块至`v1.2.1`,提供剪贴板支持。快捷识图通过剪贴板中转,无需再保存临时文件到硬盘。

##### [v1.2.6](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.2.6) `2022.9.1`
<!-- Takahara Umi酱生日快乐~ -->
- 更新PaddleOCR-json模块至`v1.2.0`,提高识别速度、准确度。
- 调整UI:更方便地用下拉框切换识别语言。
- 调整UI:可以从主窗口任意位置/任意选项卡拖入图片。
- 修正了Bug:提高程序健壮性,增加启动子进程时的更多异常处理情况。
- 修正了Bug:彻底解决了对边缘过窄的图片,识别结果不准确的问题 [issue #7](https://github.com/hiroi-sora/Umi-OCR/issues/7) 。
- 优化适配PP-OCRv3模型,彻底解决了v3版模型比v2慢、不准的问题 [issue #4](https://github.com/hiroi-sora/Umi-OCR/issues/4#issuecomment-1141735773) 。

##### v1.2.5 `2022.7.22`
- 新功能:计划任务。识图完成后执行自动关机等任务。
- 新功能:可选拖入文件夹时递归导入子文件夹中所有图片。
- 调整UI:添加一些配置文件的快捷入口。

##### v1.2.4 `2022.6.4`
- 新功能:可选识别剪贴板图片后自动复制识别的文本。
- 补充功能:快捷键调用剪贴板识图时,若程序窗口被最小化,则恢复前台状态并挪到最前位置。
  
##### v1.2.3 `2022.5.31`
- 新功能:读取剪贴板图片。配置全局快捷键调用该功能。

##### v1.2.2 `2022.4.30`
- 新功能:可选任务完成后自动打开输出文件或目录。

##### v1.2.1 `2022.4.16`
- 更新PaddleOCR-json模块至`v1.1.1`,修正了可能得到错误包围盒的漏洞。

##### v1.2.0 `2022.4.8`
- 可选生成图文链接.md文件,作为索引使用有更佳的观感。
- 修改设置面板的样式,改为滚动面板以容纳更多设置选项。
- 用户修改配置项后可自动保存。

##### v1.1.1 `2022.3.30`
- 修正了Bug:退出忽略区域窗口时,OCR子进程未关闭。

##### v1.1.0 `2022.3.30`
- 新功能:忽略区域窗口以虚线框 展示识别出的文字块。

##### v1.0.0 `2022.3.28`
- “梦开始的地方”

## 感谢

本项目核心引擎组件源自 [PaddlePaddle/PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR):
> Awesome multilingual OCR toolkits based on PaddlePaddle

##### 本项目中所使用的库:

##### [google/python-gflags](https://github.com/google/python-gflags)
> Python implementation of the Google commandline flags module.

##### [moses-palmer/pynput](https://github.com/moses-palmer/pynput)
> This library allows you to control and monitor input devices.

##### [Infinidat/infi.systray](https://github.com/Infinidat/infi.systray)
> A Windows system tray icon with a right-click context menu.

##### [Pwm](https://pmw.sourceforge.net/)
> Pmw is a toolkit for building high-level compound widgets in Python using the Tkinter module.

## Umi-系列图片处理软件

**Umi-OCR 批量图片转文字软件 ◁**

[Umi-CUT 批量图片去黑边/裁剪/压缩软件](https://github.com/hiroi-sora/Umi-CUT)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yanjlee/Umi-OCR",
    "name": "Umi-OCR",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "yanjlee",
    "author_email": "yanjlee@163.com",
    "download_url": "https://files.pythonhosted.org/packages/38/bb/aca336b2fb6fe9642bc9e3c689bd2f4cb9824235e80270786b5d8e991b68/umi_ocr-1.2.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\r\n  <a href=\"https://github.com/hiroi-sora/Umi-OCR\">\r\n    <img width=\"200\" height=\"128\" src=\"https://tupian.li/images/2022/10/27/icon---256.png\" alt=\"Umi-OCR\">\r\n  </a>\r\n</p>\r\n\r\n<h1 align=\"center\">Umi-OCR \u6587\u5b57\u8bc6\u522b\u5de5\u5177</h1>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://github.com/hiroi-sora/Umi-OCR/releases/latest\">\r\n    <img src=\"https://img.shields.io/github/v/release/hiroi-sora/Umi-OCR?style=flat-square\" alt=\"Umi-OCR\">\r\n  </a>\r\n  <a href=\"License\">\r\n    <img src=\"https://img.shields.io/github/license/hiroi-sora/Umi-OCR?style=flat-square\" alt=\"LICENSE\">\r\n  </a>\r\n  <a href=\"#\u4e0b\u8f7d\">\r\n    <img src=\"https://img.shields.io/github/downloads/hiroi-sora/Umi-OCR/total?style=flat-square\" alt=\"forks\">\r\n  </a>\r\n  <a href=\"https://star-history.com/#hiroi-sora/Umi-OCR\">\r\n    <img src=\"https://img.shields.io/github/stars/hiroi-sora/Umi-OCR?style=flat-square\" alt=\"stars\">\r\n  </a>\r\n  <a href=\"https://github.com/hiroi-sora/Umi-OCR/forks\">\r\n    <img src=\"https://img.shields.io/github/forks/hiroi-sora/Umi-OCR?style=flat-square\" alt=\"forks\">\r\n  </a>\r\n</p>\r\n\r\n<div align=\"center\">\r\n  <strong>\u514d\u8d39\uff0c\u5f00\u6e90\uff0c\u53ef\u6279\u91cf\u7684\u79bb\u7ebfOCR\u8f6f\u4ef6</strong><br>\r\n  <sub>\u9002\u7528\u4e8e Windows7 x64 \u53ca\u4ee5\u4e0a</sub>\r\n</div>\r\n\r\n<div align=\"center\">\r\n  <h3>\r\n    <a href=\"#\u8bf4\u660e\u76ee\u5f55\">\r\n      \u4f7f\u7528\u8bf4\u660e\r\n    </a>\r\n    <span> \u2022 </span>\r\n    <a href=\"#\u4e0b\u8f7d\">\r\n      \u4e0b\u8f7d\u5730\u5740\r\n    </a>\r\n    <span> \u2022 </span>\r\n    <a href=\"#\u66f4\u65b0\u65e5\u5fd7\">\r\n      \u66f4\u65b0\u65e5\u5fd7\r\n    </a>\r\n    <span> \u2022 </span>\r\n    <a href=\"https://github.com/hiroi-sora/Umi-OCR/issues\">\r\n      \u63d0\u4ea4Bug\r\n    </a>\r\n  </h3>\r\n</div>\r\n<br>\r\n\r\n- **\u514d\u8d39**\uff1a\u672c\u9879\u76ee\u6240\u6709\u4ee3\u7801\u5f00\u6e90\uff0c\u5b8c\u5168\u514d\u8d39\u3002\r\n- **\u65b9\u4fbf**\uff1a\u89e3\u538b\u5373\u7528\uff0c\u79bb\u7ebf\u8fd0\u884c\uff0c\u65e0\u9700\u7f51\u7edc\u3002\r\n- **\u6279\u91cf**\uff1a\u53ef\u6279\u91cf\u5bfc\u5165\u5904\u7406\u56fe\u7247\uff0c\u7ed3\u679c\u4fdd\u5b58\u5230\u672c\u5730 txt / md / jsonl \u591a\u79cd\u683c\u5f0f\u6587\u4ef6\u3002\u4e5f\u53ef\u4ee5\u5373\u65f6\u622a\u5c4f\u8bc6\u522b\u3002\r\n- **\u9ad8\u6548**\uff1a\u91c7\u7528 PaddleOCR-json C++ \u8bc6\u522b\u5f15\u64ce\u3002\u53ea\u8981\u7535\u8111\u6027\u80fd\u8db3\u591f\uff0c\u901a\u5e38\u6bd4\u5728\u7ebfOCR\u670d\u52a1\u66f4\u5feb\u3002\r\n- **\u7cbe\u51c6**\uff1a\u9ed8\u8ba4\u4f7f\u7528PPOCR-v3\u6a21\u578b\u5e93\u3002\u9664\u4e86\u80fd\u51c6\u786e\u8fa8\u8ba4\u5e38\u89c4\u6587\u5b57\uff0c\u5bf9\u624b\u5199\u3001\u65b9\u5411\u4e0d\u6b63\u3001\u6742\u4e71\u80cc\u666f\u7b49\u60c5\u666f\u4e5f\u6709\u4e0d\u9519\u7684\u8bc6\u522b\u7387\u3002\u53ef\u8bbe\u7f6e**\u5ffd\u7565\u533a\u57df**\u6392\u9664\u6c34\u5370\u3001\u8bbe\u7f6e**\u6587\u5757\u540e\u5904\u7406**\u5408\u5e76\u6392\u7248\u6bb5\u843d\uff0c\u5f97\u5230\u89c4\u6574\u7684\u6587\u672c\u3002\r\n\r\n![](https://tupian.li/images/2023/04/26/6447fe3273efd.png)\r\n\r\n![](https://tupian.li/images/2022/09/29/1.3-.png)\r\n\r\n## \u8bf4\u660e\u76ee\u5f55\r\n\r\n- [\u7b80\u5355\u4e0a\u624b](#\u7b80\u5355\u4e0a\u624b) \u622a\u56fe\u3001\u6279\u91cf\u8bc6\u522b~\r\n- [\u6392\u7248\u4f18\u5316](#goto-1) \u5982\u4f55\u5408\u5e76\u4e00\u4e2a\u81ea\u7136\u6bb5\u5185\u7684\u6587\u5b57\uff1f\r\n- [\u5ffd\u7565\u533a\u57df](#\u5ffd\u7565\u533a\u57df\u529f\u80fd) \u5982\u4f55\u6392\u9664\u622a\u56fe\u6c34\u5370\u5904\u7684\u6587\u5b57\uff1f\r\n- [\u591a\u56fd\u8bed\u8a00](#\u6dfb\u52a0\u591a\u56fd\u8bed\u8a00) \u6dfb\u52a0\u66f4\u591aPP-OCR\u652f\u6301\u7684\u8bed\u8a00\u6a21\u578b\u5e93\uff01\r\n- [\u547d\u4ee4\u884c\u8c03\u7528](#\u547d\u4ee4\u884c\u8c03\u7528) \u7528\u547d\u4ee4\u884c\u6216\u7b2c\u4e09\u65b9\u5de5\u5177\u6765\u8c03\u7528Umi-OCR\uff01\r\n- [\u8054\u52a8\u7ffb\u8bd1\u8f6f\u4ef6](#goto-3) \u622a\u56feOCR\u540e\u53d1\u9001\u6307\u5b9a\u6309\u952e\uff0c\u89e6\u53d1\u7ffb\u8bd1\u8f6f\u4ef6\u8fdb\u884c\u7ffb\u8bd1\r\n- [\u66f4\u591a\u5c0f\u6280\u5de7](#goto-2)\r\n- [\u95ee\u9898\u6392\u9664](#\u95ee\u9898\u6392\u9664) \u65e0\u6cd5\u542f\u52a8\u5f15\u64ce / \u591a\u5c4f\u5e55\u622a\u56fe\u5f02\u5e38 \uff1f\r\n\r\n## \u4e0b\u8f7d\r\n\r\n#### v2.0.0\r\n\r\n\u5168\u65b0\u91cd\u6784\u7684v2\u9884\u89c8\u7248\u672c\u5df2\u5f00\u653e\u6d4b\u8bd5\uff0c[\u6b22\u8fce\u4f53\u9a8c](https://github.com/hiroi-sora/Umi-OCR_v2)\u3002\r\n\r\n#### v1.3.7\r\n\r\nGithub\u4e0b\u8f7d\uff1a[Release v1.3.7](https://github.com/hiroi-sora/Umi-OCR/releases/tag/v1.3.7)\r\n\r\n\u84dd\u594f\u4e91\u4e0b\u8f7d\uff1a[https://hiroi-sora.lanzoul.com/s/umi-ocr](https://hiroi-sora.lanzoul.com/s/umi-ocr)\r\n\r\n> \u914d\u5957 **\u591a\u56fd\u8bed\u8a00\u8bc6\u522b\u6269\u5c55\u5305** \u53ef\u5bfc\u5165 `\u7e41\u4e2d,\u82f1,\u65e5,\u97e9,\u4fc4,\u5fb7,\u6cd5` \u8bc6\u522b\u5e93\uff0c\u8bf7\u6309\u9700\u4e0b\u8f7d\u3002\r\n\r\n#### \u4f7f\u7528\u6e90\u4ee3\u7801\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary>\r\n\r\n- main\u5206\u652f\u53ef\u80fd\u542b\u6709\u5f00\u53d1\u4e2d\u7684\u65b0\u529f\u80fd\u3002\u82e5\u60a8\u60f3\u4f7f\u7528\u7a33\u5b9a\u7248\u672c\uff0c\u5efa\u8bae\u5207\u6362\u5230[\u6700\u65b0\u7684Release\u5206\u652f](https://github.com/hiroi-sora/Umi-OCR/branches)\u3002\r\n- \u786e\u4fddpython\u7248\u672c\u4e0d\u4f4e\u4e8e `3.8` \u3002\u5efa\u8bae\u4f7f\u7528 `3.8.10` \uff0c\u5177\u6709\u6700\u597d\u7684\u517c\u5bb9\u6027\u3002\r\n- \u5b89\u88c5\u4f9d\u8d56\u5e93\uff1a`pip install -r requirements.txt`\r\n- \u8fd0\u884c `main.py` \u542f\u52a8\u7a0b\u5e8f\u3002\u6d4b\u8bd5\u65e0\u5f02\u5e38\u540e\uff0c\u8fd0\u884c `to_exe.py` \u4e00\u952e\u6253\u5305\u3002\r\n- \u6253\u5305\u540e\uff0c\u8bf7\u5c06\u5f15\u64ce\u7ec4\u4ef6 [PaddleOCR-json \u6574\u4e2a\u6587\u4ef6\u5939](PaddleOCR-json) \u653e\u7f6e\u4e8eexe\u540c\u76ee\u5f55\u4e0b\uff01\r\n- \u6253\u5305\u540e\uff0c\u8bf7\u5c06\u5f15\u64ce\u7ec4\u4ef6 [PaddleOCR-json \u6574\u4e2a\u6587\u4ef6\u5939](PaddleOCR-json) \u653e\u7f6e\u4e8eexe\u540c\u76ee\u5f55\u4e0b\uff01\uff01\r\n- \u6253\u5305\u540e\uff0c\u8bf7\u5c06\u5f15\u64ce\u7ec4\u4ef6 [PaddleOCR-json \u6574\u4e2a\u6587\u4ef6\u5939](PaddleOCR-json) \u653e\u7f6e\u4e8eexe\u540c\u76ee\u5f55\u4e0b\uff01\uff01\uff01\r\n\r\n</details>\r\n\r\n## \u517c\u5bb9\u6027\uff08Paddle\u5f15\u64ce\uff09\r\n\r\n- \u652f\u6301 Win7 x64 \u53ca\u4ee5\u4e0a\u7cfb\u7edf\u3002\r\n- CPU\u5fc5\u987b\u5177\u6709AVX\u6307\u4ee4\u96c6\u3002\uff08\u51cc\u52a8\u3001\u5b89\u817e\u3001\u8d5b\u626c\u548c\u5954\u817e\u5904\u7406\u5668\u53ef\u80fd\u4e0d\u517c\u5bb9\uff09\r\n- \u82e5\u60a8\u7684CPU\u4e0d\u7b26\u5408\u4ee5\u4e0a\u6761\u4ef6\uff0c\u8bf7\u4f7f\u7528 [v2](https://github.com/hiroi-sora/Umi-OCR_v2) Rapid\u5f15\u64ce\u7248\u672c\u3002\r\n\r\n## \u524d\u8a00\r\n\r\n\u5173\u4e8e**\u5ffd\u7565\u6307\u5b9a\u533a\u57df**\u7684\u7279\u6b8a\u529f\u80fd\uff1a\r\n\r\n> \u7c7b\u4f3c\u542b\u6c34\u5370\u7684\u89c6\u9891\u622a\u56fe\u3001\u542b\u6709UI/\u6309\u94ae\u7684\u6e38\u620f\u622a\u56fe\u7b49\uff0c\u5f80\u5f80\u53ea\u9700\u8981\u63d0\u53d6\u5b57\u5e55\u533a\u57df\u7684\u6587\u672c\uff0c\u800c\u907f\u514d\u63d0\u53d6\u5230\u6c34\u5370\u548cUI\u6587\u672c\u3002\u672c\u8f6f\u4ef6\u53ef\u8bbe\u7f6e\u5ffd\u7565\u67d0\u4e9b\u533a\u57df\u5185\u7684\u6587\u5b57\uff0c\u6765\u5b9e\u73b0\u8fd9\u4e00\u76ee\u7684\u3002\r\n> \r\n> \u5f53\u6709\u5927\u91cf\u7684\u5f71\u89c6\u548c\u6e38\u620f\u622a\u56fe\u9700\u8981\u6574\u7406\u5f52\u6863\uff0c\u6216\u8005\u60f3\u7ffb\u627e\u5305\u542b\u67d0\u4e00\u6bb5\u53f0\u8bcd/\u5b57\u5e55\u7684\u622a\u56fe\uff1b\u5c06\u8fd9\u4e9b\u56fe\u7247\u63d0\u53d6\u51fa\u6587\u5b57\u3001\u7136\u540eCtrl+F\u662f\u4e00\u4e2a\u5f88\u6709\u6548\u7684\u65b9\u6cd5\u3002\u8fd9\u662f\u5f00\u53d1\u672c\u8f6f\u4ef6\u7684\u521d\u8877\u3002\r\n\r\n\u5173\u4e8e\u79bb\u7ebfOCR\u5f15\u64ce [PaddleOCR-json](https://github.com/hiroi-sora/PaddleOCR-json) \uff1a\r\n> \u5bf9 [PaddleOCR 2.6 cpu_avx_mkl C++](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6) \u7684\u5c01\u88c5\u3002\u6548\u7387\u9ad8\u4e8ePython\u7248\u672cPPOCR\u53ca\u90e8\u5206Python\u7f16\u5199\u7684OCR\u5f15\u64ce\uff0c\u901a\u5e38\u6bd4\u5728\u7ebfOCR\u670d\u52a1\u66f4\u5feb(\u7701\u53bb\u7f51\u7edc\u4f20\u8f93\u7684\u65f6\u95f4)\u3002\u652f\u6301\u66f4\u6362Paddle\u5b98\u65b9\u6a21\u578b\uff08\u517c\u5bb9v2\u548cv3\u7248\u672c\uff09\u6216\u81ea\u5df1\u8bad\u7ec3\u7684\u6a21\u578b\uff0c\u652f\u6301\u4fee\u6539PPOCR\u5404\u9879\u53c2\u6570\u3002\u901a\u8fc7\u6dfb\u52a0\u4e0d\u540c\u7684\u8bed\u8a00\u6a21\u578b\uff0c\u8f6f\u4ef6\u53ef\u8bc6\u522b\u591a\u56fd\u8bed\u8a00\u3002\r\n\r\n## \u7b80\u5355\u4e0a\u624b\r\n\r\n#### \u51c6\u5907\r\n\r\n\u4e0b\u8f7d\u538b\u7f29\u5305\u5e76\u89e3\u538b\u5168\u90e8\u6587\u4ef6\u5373\u53ef\u3002\r\n\r\n#### \u622a\u56fe\u8bc6\u522b\r\n\r\n\u70b9\u51fb\u622a\u56fe\u6309\u94ae\u6216\u81ea\u5b9a\u4e49\u5feb\u6377\u952e\uff0c\u5524\u8d77\u622a\u56fe\u8bc6\u522b\u3002\r\n\r\n![](https://tupian.li/images/2022/09/29/1-w-.png)\r\n\r\n\u53ef\u4ee5\u8bbe\u7f6e\u622a\u56fe\u540e\u751f\u6210\u4e00\u4e2a\u9884\u89c8\u7a97\u53e3\u3002\u9884\u89c8\u7a97\u53e3\u53ef\u4ee5\u88ab\u9489\u5728\u5c4f\u5e55\u9876\u5c42\uff0c\u6216\u8c03\u4e3a\u534a\u900f\u660e\uff0c\u65b9\u4fbf\u5bf9\u6bd4\u67e5\u770b\u3002\r\n\r\n#### \u7c98\u8d34\u56fe\u7247\u5230\u8f6f\u4ef6\r\n\r\n\u5728\u4efb\u4f55\u5730\u65b9\uff08\u5982\u6587\u4ef6\u7ba1\u7406\u5668\uff0c\u7f51\u9875\uff0c\u5fae\u4fe1\uff09\u590d\u5236\u56fe\u7247\uff0c\u8f6f\u4ef6\u4e0a\u70b9\u51fb\u7c98\u8d34\u6309\u94ae\u6216\u5feb\u6377\u952e\uff0c\u81ea\u52a8\u8bc6\u522b\u3002\r\n\r\n![](https://tupian.li/images/2022/09/29/2-w-.png)\r\n\r\n#### \u6279\u91cf\u8bc6\u522b\u672c\u5730\u56fe\u7247\u6587\u4ef6\r\n\r\n\u5c06\u56fe\u7247\u6216\u6587\u4ef6\u5939\u62d6\u8fdb\u8f6f\u4ef6\uff0c\u6279\u91cf\u8f6c\u6362\u6587\u5b57\u3002\u4e5f\u53ef\u4ee5\u70b9\u51fb\u6309\u94ae\u6253\u5f00\u6d4f\u89c8\u7a97\u53e3\u5bfc\u5165\u3002\r\n\r\n\u8bc6\u522b\u7ed3\u679c\u5c06\u4fdd\u5b58\u5230\u672c\u5730\u3002\u53ef\u9009\u751f\u6210\u7eaf\u6587\u672ctxt\u6587\u4ef6\u3001\u5e26\u94fe\u63a5Markdown\u6587\u4ef6\u3001\u539f\u59cb\u4fe1\u606fjsonl\u6587\u4ef6\u7b49\u4e0d\u540c\u683c\u5f0f\u3002\u53ef\u914d\u7f6e\u4efb\u52a1\u5b8c\u6210\u540e\u6267\u884c\u5173\u673a/\u5f85\u673a\u3002\r\n\r\n![](https://tupian.li/images/2022/09/29/3-w-.png)\r\n\r\n<a id=\"goto-1\"></a>\r\n\r\n## \u6587\u672c\u5757\u540e\u5904\u7406\uff08\u5408\u5e76\u6bb5\u843d\uff09\r\n\r\nOCR\u8bc6\u522b\u51fa\u7684\u6587\u672c\u662f\u6309\u201c\u5757\u201d\u5212\u5206\u7684\uff0c\u901a\u5e38\u4e00\u884c\u6587\u5b57\u5206\u4e3a\u4e00\u5757\uff0c\u6709\u65f6\u8fd8\u4f1a\u5c06\u4e00\u884c\u8bef\u5212\u5206\u4e3a\u591a\u5757\uff0c\u8fd9\u7ed9\u9605\u8bfb\u5e26\u6765\u4e86\u4e0d\u4fbf\u3002\u60a8\u53ef\u4ee5\u5728Umi-OCR\u8bbe\u7f6e\u9875\u7684**\u5408\u5e76\u6bb5\u843d**\u4e2d\u9009\u62e9\u6070\u5f53\u7684\u65b9\u6848\uff0c\u5408\u5e76\u540c\u4e00\u884c\u6216\u540c\u4e00\u6bb5\u843d\u5185\u7684\u6587\u5b57\uff0c\u6309\u6b63\u786e\u7684\u987a\u5e8f\u6392\u5e8f\u3002\r\n\r\n#### \u6392\u7248\u65b9\u6848\uff1a\r\n\r\n- **\u5355\u884c**\uff1a\u5408\u5e76\u540c\u4e00\u884c\u7684\u6587\u5b57\uff0c\u9002\u5408\u7edd\u5927\u90e8\u5206\u60c5\u666f\u3002\r\n- **\u591a\u884c-\u81ea\u7136\u6bb5**\uff1a\u667a\u80fd\u8bc6\u522b\u3001\u5408\u5e76\u5c5e\u4e8e\u540c\u4e00\u6bb5\u843d\u7684\u6587\u5b57\uff0c\u9002\u5408\u7edd\u5927\u90e8\u5206\u60c5\u666f\u3002\r\n- **\u591a\u884c-\u4ee3\u7801\u6bb5**\uff1a\u5c3d\u53ef\u80fd\u8fd8\u539f\u539f\u59cb\u6392\u7248\u7684\u7f29\u8fdb\u4e0e\u7a7a\u683c\u3002\u9002\u5408\u8bc6\u522b\u4ee3\u7801\u7247\u6bb5\uff0c\u6216\u9700\u8981\u4fdd\u7559\u7a7a\u683c\u7684\u573a\u666f\u3002\r\n- **\u7ad6\u6392**\uff1a\u9002\u5408\u7ad6\u6392\u6392\u7248\u3002\u9700\u8981\u4e0e\u540c\u6837\u652f\u6301\u7ad6\u6392\u8bc6\u522b\u7684\u6a21\u578b\u5e93\u914d\u5408\u4f7f\u7528\u3002\r\n\r\n## \u5ffd\u7565\u533a\u57df\u529f\u80fd\r\n\r\n\u5ffd\u7565\u533a\u57df\u662f\u672c\u8f6f\u4ef6\u7279\u8272\u529f\u80fd\uff0c\u53ef\u7528\u4e8e\u6392\u9664\u56fe\u7247\u4e2d\u6c34\u5370\u7684\u5e72\u6270\uff0c\u8ba9\u8bc6\u522b\u7ed3\u679c\u53ea\u7559\u4e0b\u6240\u9700\u7684\u6587\u672c\u3002\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n\u201c\u5ffd\u7565\u533a\u57df\u201d\u662f\u6307\u56fe\u7247\u4e0a\u6307\u5b9a\u4f4d\u7f6e\u4e0e\u5927\u5c0f\u7684\u77e9\u5f62\u533a\u57df\uff0c\u5b8c\u5168\u5904\u4e8e\u8fd9\u4e9b\u533a\u57df\u5185\u7684\u6587\u5b57\u5757\uff0c\u5c06\u88ab\u6392\u9664\u3002\r\n\r\n- \u70b9\u51fb **\u8bbe\u7f6e** \u9009\u9879\u5361\u4e2d\u7684 **\u6253\u5f00\u5ffd\u7565\u533a\u57df\u7f16\u8f91\u5668** \uff0c\u8fdb\u5165\u7f16\u8f91\u5668\u7a97\u53e3\u3002\r\n- \u5c06\u4efb\u610f\u56fe\u7247 **\u62d6\u5165** \u8be5\u7a97\u53e3\uff0c\u53ef\u9884\u89c8\u8be5\u56fe\u7247\u3002\u5c06\u65b0\u56fe\u7247\u62d6\u5165\u7a97\u53e3\u53ef\u5207\u6362\u9884\u89c8\uff0c\u4f46\u5df2\u7ed8\u5236\u7684\u5ffd\u7565\u533a\u57df\u4e0d\u4f1a\u6d88\u5931\uff1b\u53ef\u5207\u6362\u4e0d\u540c\u56fe\u7247\u6765\u4ed4\u7ec6\u8c03\u6574\u5ffd\u7565\u533a\u57df\u3002\r\n- \u7ed8\u5236 **\u5ffd\u7565\u533a\u57df** \uff1a\u62d6\u5165\u56fe\u7247\u540e\uff0c\u70b9\u51fb\u9009\u4e2d\u5de6\u8d77\u7b2c\u4e00\u6309\u94ae **+\u5ffd\u7565\u533a\u57df A** \uff0c\u7136\u540e\u5728\u56fe\u7247\u4e0a\u6309\u4f4f\u5de6\u952e\u62d6\u62fd\uff0c\u7ed8\u5236\u77e9\u5f62\u533a\u57df\u3002\u53ef **\u64a4\u9500** \u6b65\u9aa4\u3002\r\n- \u7ed8\u5236\u5b8c\u540e\uff0c\u70b9\u51fb **\u5b8c\u6210** \u8fd4\u56de\u8f6f\u4ef6\u4e3b\u7a97\u53e3\u3002\u82e5\u4e0d\u60f3\u5e94\u7528\u6b64\u6b21\u7ed8\u5236\uff0c\u5219\u53f3\u4e0a\u89d2X\uff0c\u53d6\u6d88\u3002\r\n\r\n\u7b80\u5355\u6848\u4f8b\u89c1\u4e0b\u3002\r\n\r\n#### \u7b80\u5355\u6392\u9664\u89c6\u9891\u622a\u56fe\u4e2d\u7684\u6c34\u5370\uff1a\r\n\r\n1. \u6253\u5f00\u5ffd\u7565\u533a\u57df\u8bbe\u7f6e\u7a97\u53e3\uff0c\u62d6\u5165\u4efb\u4e00\u5f20\u622a\u56fe\u3002\r\n    \u7a0d\u7b49\u7ea61\u79d2\uff0c\u9762\u677f\u4e0a\u4f1a\u663e\u793a\u51fa\u56fe\u7247\uff0c\u8bc6\u522b\u5230\u7684\u6587\u5b57\u533a\u57df\u4f1a\u88ab\u865a\u7ebf\u6846\u8d77\u6765\u3002\u53d1\u73b0\u53f3\u4e0a\u89d2\u7684\u6c34\u5370\u4e5f\u88ab\u8bc6\u522b\u5230\u4e86\u3002\r\n![](https://tupian.li/images/2022/03/30/image04bea2a47232088b.png)\r\n2. \u70b9\u51fb\u9009\u62e9 **+\u5ffd\u7565\u533a\u57df A** \u3002\u5728\u753b\u9762\u4e0a\u6309\u4f4f\u5de6\u952e\u62d6\u62fd\uff0c\u7ed8\u5236\u65b9\u6846\u5b8c\u5168\u5305\u88f9\u4f4f\u6c34\u5370\u533a\u57df\uff0c\u8303\u56f4\u53ef\u4ee5\u5927\u4e00\u4e9b\u3002\u53ef\u7ed8\u5236\u591a\u4e2a\u65b9\u6846\u3002\r\n![](https://tupian.li/images/2022/03/30/image4a49b65bbd22c4a6.png)\r\n3. \u70b9\u51fb **\u5b8c\u6210** \u3002\u8fd4\u56de\u4e3b\u7a97\u53e3\uff0c **\u5f00\u59cb\u4efb\u52a1** \u3002\r\n\r\n#### \u6392\u9664\u6e38\u620f\u622a\u56fe\u4e2d\u7684\u4e24\u79cdUI\uff1a\r\n\r\n- \u5047\u8bbe\u6709\u4e00\u7ec4\u6e38\u620f\u622a\u56fe\uff0c\u4e3b\u8981\u5206\u4e3a\u4e24\u7c7b\u56fe\u7247\uff0c\u8fd9\u4e24\u7c7b\u56fe\u7247\u7684\u6587\u5b57\u4f4d\u7f6e\u548cUI\u4f4d\u7f6e\u4e0d\u592a\u76f8\u540c\uff1a\r\n![](https://tupian.li/images/2022/03/30/image1.png)\r\n  - \u7532\u7c7b\uff08\u4e0a\u56fe\u5de6\uff09\u4e3a\u5bf9\u8bdd\u6a21\u5f0f\uff0c\u5b57\u6570\u5c11\uff0c\u8981\u4fdd\u7559\u7684\u53f0\u8bcd\u6587\u672c\u5728\u753b\u9762\u4e0b\u65b9\uff0c\u8981\u6392\u9664\u7684UI\u5206\u5e03\u4e8e\u5e95\u7aef\u3002\r\n  - \u4e59\u7c7b\uff08\u4e0a\u56fe\u53f3\uff09\u4e3a\u5386\u53f2\u6587\u672c\u6a21\u5f0f\uff0c\u5b57\u6570\u591a\uff0c\u4ece\u4e0a\u5230\u4e0b\u90fd\u6709\u8981\u4fdd\u7559\u7684\u6587\u672c\uff08\u4e0e\u7532\u7c7bUI\u4f4d\u7f6e\u6709\u91cd\u5408\uff09\uff0c\u8981\u6392\u9664\u7684UI\u5206\u5e03\u5728\u4e24\u4fa7\u3002\r\n1. \u62d6\u5165\u4e00\u5f20\u7532\u7c7b\u56fe\u7247\u3002\u9009\u62e9 **+\u5ffd\u7565\u533a\u57df A** \uff0c\u7ed8\u5236\u65b9\u6846\u5305\u88f9\u4f4f\u8981\u6392\u9664\u7684 **\u5e95\u7aefUI** \u3002\u53ef\u7ed8\u5236\u591a\u4e2a\u65b9\u6846\u3002\r\n![](https://tupian.li/images/2022/03/30/image2ad97ff898e39d82f.png)\r\n2. \u62d6\u5165\u4e00\u5f20\u4e59\u7c7b\u56fe\u7247\u3002\u9009\u62e9 **+\u8bc6\u522b\u533a\u57df** \uff0c\u7ed8\u5236\u65b9\u6846\u5305\u88f9\u4f4f **\u5c0f\u90e8\u5206\u8981\u4fdd\u7559\u7684\u6587\u672c** \u3002\u6ce8\u610f\u53ea\u8981\u8be5\u533a\u57df\u5185\u542b\u6709\u4efb\u610f\u4fdd\u7559\u6587\u672c\u5373\u53ef\uff0c\u4e0d\u9700\u8981\u753b\u5f97\u5f88\u5927\uff0c\u4e0d\u9700\u8981\u5305\u88f9\u4f4f\u6240\u6709\u4fdd\u7559\u6587\u672c\uff1b\u4e0d\u80fd\u4e0e\u7532\u7c7b\u56fe\u4e2d **\u53ef\u80fd\u5b58\u5728\u7684\u4efb\u4f55\u6587\u672c** \u91cd\u5408\u3002\r\n![](https://tupian.li/images/2022/03/30/image3.png)\r\n1. \u7136\u540e\u9009\u62e9 **+\u5ffd\u7565\u533a\u57df B** \uff0c\u7ed8\u5236\u65b9\u6846\u5305\u88f9\u4f4f\u4e59\u7c7b\u56fe\u8981\u6392\u9664\u7684 **\u4e24\u4fa7UI** \u3002\u53ef\u7ed8\u5236\u591a\u4e2a\u65b9\u6846\u3002\r\n![](https://tupian.li/images/2022/03/30/image4.png)\r\n1. \u70b9\u51fb **\u5b8c\u6210** \u3002\u8fd4\u56de\u4e3b\u7a97\u53e3\uff0c **\u5f00\u59cb\u4efb\u52a1** \u3002\r\n\r\n#### \u5ffd\u7565\u533a\u57df\u5904\u7406\u903b\u8f91\uff1a\r\n\r\n- **\u5ffd\u7565\u533a\u57dfA** \uff1a\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u5904\u4e8e **\u5ffd\u7565\u533a\u57dfA** \u5185\u7684\u6587\u5b57 **\u4e0d\u4f1a** \u8f93\u51fa\u3002\r\n- **\u8bc6\u522b\u533a\u57df** \uff1a\u5f53\u8bc6\u522b\u533a\u57df\u5185\u5b58\u5728\u6587\u672c\u65f6\uff0c**\u5ffd\u7565\u533a\u57dfA\u5931\u6548** \uff1b\u5373\u5904\u4e8e\u5ffd\u7565\u533a\u57dfA\u5185\u7684\u6587\u5b57\u4e5f **\u4f1a** \u88ab\u8f93\u51fa\u3002\r\n- **\u5ffd\u7565\u533a\u57dfB** \uff1a\u5f53 **\u5ffd\u7565\u533a\u57dfA\u5931\u6548** \u65f6\uff0c\u5ffd\u7565\u533a\u57dfB\u624d\u751f\u6548\uff1b\u5373\u5904\u4e8e\u533a\u57dfA\u5185\u7684\u6587\u5b57 **\u4f1a** \u8f93\u51fa\u3001\u533a\u57dfB\u5185\u7684\u6587\u5b57 **\u4e0d\u4f1a** \u8f93\u51fa\u3002\r\n  \r\n    | \u8bc6\u522b\u533a\u57df     | \u5ffd\u7565\u533a\u57dfA | \u5ffd\u7565\u533a\u57dfB |\r\n    | ------------ | --------- | --------- |\r\n    | \u00d7 \u4e0d\u5b58\u5728\u6587\u5b57 | \u221a \u751f\u6548    | \u00d7 \u5931\u6548    |\r\n    | \u221a \u5b58\u5728\u6587\u5b57   | \u00d7 \u5931\u6548    | \u221a \u751f\u6548    |\r\n- \u201c\u5ffd\u7565\u533a\u57df\u914d\u7f6e\u201d\u53ea\u9488\u5bf9\u4e00\u79cd\u5206\u8fa8\u7387\u751f\u6548\u3002\u5047\u5982\u914d\u7f6e\u7684\u5206\u8fa8\u7387\u662f1920x1080\uff0c\u90a3\u4e48\u6279\u91cf\u8bc6\u522b\u56fe\u7247\u65f6\uff0c\u53ea\u6709\u7b26\u54081920x1080\u7684\u56fe\u7247\u624d\u4f1a\u6392\u9664\u5e72\u6270\u6587\u672c\uff1b1920x1081\u7684\u56fe\u7247\u4e2d\u7684\u6587\u5b57\u4f1a\u5168\u90e8\u8f93\u51fa\u3002\r\n- \u62d6\u5165\u9884\u89c8\u7684\u56fe\u7247\u5fc5\u987b\u5206\u8fa8\u7387\u76f8\u540c\u3002\u5047\u5982\u5148\u62d6\u51651920x1080\u7684\u56fe\u7247\uff0c\u518d\u62d6\u5165\u5176\u5b83\u5206\u8fa8\u7387\u7684\u56fe\u7247\uff1b\u8f6f\u4ef6\u4f1a\u5f39\u7a97\u8b66\u544a\u3002\u53ea\u6709\u70b9\u51fb **\u6e05\u7a7a** \u5220\u9664\u5f53\u524d\u5df2\u914d\u7f6e\u7684\u5ffd\u7565\u533a\u57df\uff0c\u624d\u80fd\u62d6\u5165\u5176\u4ed6\u5206\u8fa8\u7387\u56fe\u7247\uff0c\u5e76\u5e94\u7528\u6b64\u5206\u8fa8\u7387\u3002\r\n\r\n</details>\r\n\r\n\r\n## \u6dfb\u52a0\u591a\u56fd\u8bed\u8a00\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n##### \u65b9\u6cd5\u4e00\uff1a\u4e0b\u8f7d [Umi-OCR \u591a\u56fd\u8bed\u8a00\u8bc6\u522b\u6269\u5c55\u5305] \uff0c\u62f7\u8d1d\u5230\u8f6f\u4ef6\u76ee\u5f55\u5373\u53ef\u3002\r\n\r\n[\u70b9\u6b64\u8df3\u8f6c\u4e0b\u8f7d\u4f4d\u7f6e](#\u4e0b\u8f7d)\r\n\r\n\u6269\u5c55\u5305\u5185\u7f6e\u8bed\u8a00\uff1a`\u7e41\u4e2d,\u82f1,\u65e5,\u97e9,\u4fc4,\u5fb7,\u6cd5`\r\n\r\n##### \u65b9\u6cd5\u4e8c\uff1a\u624b\u52a8\u4e0b\u8f7d\u6dfb\u52a0 PP-OCR \u6a21\u578b\u5e93\r\n\r\n0. \u6a21\u578b\u5206\u4e3a\u4e09\u79cd\uff1adet\u68c0\u6d4b\uff0ccls\u65b9\u5411\u5206\u7c7b\uff0crec\u8bc6\u522b\u3002\u5176\u4e2ddet\u548ccls\u662f\u591a\u8bed\u8a00\u901a\u7528\u7684\uff0c\u53ea\u9700\u4e0b\u8f7d\u65b0\u8bed\u8a00\u7684rec\u8bc6\u522b\u6a21\u578b\u5373\u53ef\u3002\r\n1. \u524d\u5f80 PP-OCR\u7cfb\u5217 [V3\u591a\u8bed\u8a00\u8bc6\u522b\u6a21\u578b\u5217\u8868](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md#23-%E5%A4%9A%E8%AF%AD%E8%A8%80%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B%E6%9B%B4%E5%A4%9A%E8%AF%AD%E8%A8%80%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0%E4%B8%AD) \uff0c\u4e0b\u8f7d\u4e00\u7ec4**rec\u8bc6\u522b**\u6a21\u578b\u3002\r\n   - \u82e5V3\u6a21\u578b\u5217\u8868\u91cc\u6ca1\u6709\u627e\u5230\u76ee\u6807\u8bed\u8a00\uff0c\u53ef\u4ee5\u53bb[\u652f\u6301\u8bed\u8a00\u5217\u8868](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/multi_languages.md#5-%E6%94%AF%E6%8C%81%E8%AF%AD%E7%A7%8D%E5%8F%8A%E7%BC%A9%E5%86%99)\u67e5\u770bPPOCR\u6709\u6ca1\u6709\u63d0\u4f9b\u8fd9\u79cd\u8bed\u8a00\u3002\u82e5\u6709\uff0c\u5219\u53ef\u80fd\u5b83\u6682\u672a\u63a8\u51faV3\u6a21\u578b\uff0c\u53ef\u4ee5\u5148\u4f7f\u7528\u65e7\u7248V2\u6a21\u578b\u3002\uff08V3\u6a21\u578b\u7f51\u5740\u4e2d\u76842.x\u4e00\u8def\u6362\u6210\u66f4\u5c0f\u7684\u6570\u5b57\u53ef\u4ee5\u67e5\u770b\u65e7\u7248\u9875\u9762\uff09\r\n2. \u524d\u5f80 PP-OCR\u7cfb\u5217 [\u5b57\u5178\u5217\u8868](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/ppocr/utils/dict) \uff0c\u4e0b\u8f7d\u5bf9\u5e94\u8bed\u8a00\u7684\u5b57\u5178\u6587\u4ef6\u3002\uff08\u4f46V3\u82f1\u6587\u5b57\u5178`en_dict.txt`\u4e0d\u662f\u672c\u76ee\u5f55\u4e0b\u7684\u90a3\u4e2a\uff0c\u800c\u662f\u5728[\u4e0a\u4e00\u7ea7\u76ee\u5f55](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppocr/utils/en_dict.txt)\uff09\r\n3. \u5c06\u4e0b\u8f7d\u597d\u7684\u6587\u4ef6\u89e3\u538b\u653e\u8fdb\u8f6f\u4ef6\u76ee\u5f55\u7684 `PaddleOCR-json` \u6587\u4ef6\u5939\u4e2d\u3002\r\n4. \u590d\u5236\u4e00\u4efd `PaddleOCR_json_config_[\u6a21\u677f].txt` \uff0c\u6539\u4e00\u4e0b\u540d\u3002\uff08\u6587\u4ef6\u540d\u4e0d\u5141\u8bb8\u6709\u975e\u82f1\u6587\u5b57\u7b26\uff01\uff09\r\n5. \u6253\u5f00\u590d\u5236\u597d\u7684 `PaddleOCR_json_config_XX.txt` \uff0c\u5c06 rec\u8def\u5f84 `rec_model_dir` \u548c \u5b57\u5178\u8def\u5f84 `rec_char_dict_path` \u6539\u6210\u76ee\u6807\u8bed\u8a00\u7684\u6587\u4ef6(\u5939)\u7684\u540d\u79f0\u3002\u82e5\u6a21\u578b\u5e93\u662fv2\u7248\u672c\uff0c\u8fd8\u5fc5\u987b\u52a0\u4e0a\u4e00\u884c `rec_img_h 32` \u3002\r\n6. \u56de\u5230\u4e0a\u4e00\u5c42\u76ee\u5f55 `Umi-OCR` \uff0c\u6253\u5f00 `Umi-OCR_config.json` \uff0c\u5728 `\"ocrConfig\"` \u4e2d\u6dfb\u52a0\u65b0\u8bed\u8a00\u7684\u4fe1\u606f\u3002\u952e\u4e3a\u8bed\u8a00\u540d\u79f0\uff0c\u503c\u7684 `path` \u4e3aconfig txt\u6587\u4ef6\u7684\u540d\u79f0\u3002\u4fdd\u6301json\u683c\u5f0f\uff0c\u6ce8\u610f\u9017\u53f7\u3002\uff08\u4fee\u6539config.json\u6587\u4ef6\u65f6\uff0c\u8bf7\u786e\u4fdd\u672a\u6253\u5f00\u8f6f\u4ef6\uff0c\u5426\u5219\u914d\u7f6e\u53ef\u80fd\u88ab\u8986\u76d6\u3002\uff09\r\n7. \u6253\u5f00\u8f6f\u4ef6\uff0c\u68c0\u67e5\u8bbe\u7f6e\u9875\u7684`\u8bc6\u522b\u8bed\u8a00`\u4e0b\u62c9\u6846\u662f\u5426\u5df2\u7ecf\u80fd\u9009\u62e9\u8be5\u8bed\u8a00\u3002\r\n\r\n</details>\r\n\r\n<a id=\"goto-2\"></a>\r\n\r\n## \u8fdb\u9636\u64cd\u4f5c & \u5c0f\u6280\u5de7\r\n\r\n#### \u547d\u4ee4\u884c\u8c03\u7528\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n\u652f\u6301\u901a\u8fc7\u547d\u4ee4\u884c\u8c03\u7528Umi-OCR\uff0c\u6267\u884c\u90e8\u5206\u8bc6\u56fe\u4efb\u52a1\u3002\r\n\r\n> \u82e5\u8f6f\u4ef6\u672a\u5728\u8fd0\u884c\uff0c\u5219\u547d\u4ee4\u884c\u4f1a\u542f\u52a8\u8f6f\u4ef6\u5e76\u6267\u884c\u4efb\u52a1\u3002\u82e5\u8f6f\u4ef6\u5df2\u5728\u540e\u53f0\u8fd0\u884c\uff0c\u5219\u547d\u4ee4\u884c\u4f1a\u76f4\u63a5\u8c03\u7528\u540e\u53f0\u7684\u8f6f\u4ef6\u6267\u884c\u4efb\u52a1\u3002\u8fd9\u6837\u591a\u6b21\u8c03\u7528\u65f6\u53ef\u4ee5\u8282\u7701\u521d\u59cb\u5316\u7684\u65f6\u95f4\u3002\r\n\r\n\u6ce8\u610f\u547d\u4ee4\u884c\u8c03\u7528\u5165\u53e3\u662f\u7a0b\u5e8f\u76ee\u5f55\u7684`extra`\u4e2d\u7684`umiocr.exe`\uff0c\u800c\u4e0d\u662f\u8f6f\u4ef6\u5e38\u89c4\u5165\u53e3\uff08`Umi-OCR \u6587\u5b57\u8bc6\u522b.exe`\uff09\u3002\r\n\r\n\u26a0\ufe0e **`umiocr.exe`\u5728\u7a0b\u5e8f\u76ee\u5f55\u7684`extra`\u6587\u4ef6\u5939\u4e2d\u3002** \u26a0\ufe0e\r\n\r\n> \u547d\u4ee4\u884c\u8bed\u6cd5\u6309\u7167\u8c37\u6b4cgflags\u89c4\u5219\uff1a\r\n> `-\u547d\u4ee4` \u6216 `-\u547d\u4ee4=\u53c2\u6570` \u6216 `-\u547d\u4ee4 \u53c2\u6570`\r\n\r\n##### \u6307\u4ee40\uff1a\u542f\u52a8\u8f6f\u4ef6\r\n\r\n\u82e5\u8f6f\u4ef6\u5c1a\u672a\u542f\u52a8\uff0c\u5219\u4efb\u610f\u6307\u4ee4\u5747\u4f1a\u542f\u52a8\u8f6f\u4ef6\u4e3b\u7a0b\u5e8f\u3002\r\n\r\n##### \u6307\u4ee41\uff1a\u663e\u793a\u7a97\u53e3\r\n\r\n`umiocr.exe`\r\n\u6216\r\n`umiocr.exe -show`\r\n\r\n\u65e0\u8bba\u4e3b\u7a97\u53e3\u5904\u4e8e\u4ec0\u4e48\u72b6\u6001\uff08\u6700\u5c0f\u5316\u3001\u6536\u5230\u6258\u76d8\u3001\u88ab\u522b\u7684\u7a97\u53e3\u8986\u76d6\uff09\uff0c\u8be5\u6307\u4ee4\u90fd\u4f1a\u8ba9\u4e3b\u7a97\u53e3\u5f39\u5230\u6700\u4e0a\u5c42\u3002\r\n\r\n##### \u6307\u4ee42\uff1a\u9690\u85cf\u7a97\u53e3\r\n\r\n`umiocr.exe -hide`\r\n\r\n\u5c06\u7a97\u53e3\u6536\u5230\u6258\u76d8\u533a\u6216\u6700\u5c0f\u5316\u3002\r\n\r\n`show`\u548c`hide`\u8fd9\u4e24\u4e2a\u6307\u4ee4\u53ef\u4ee5\u4e0e\u5176\u5b83\u6307\u4ee4\u6df7\u7528\uff0c\u5982 `umiocr.exe -clipboard -show`\r\n\r\n##### \u6307\u4ee43\uff1a\u5173\u95ed\u8f6f\u4ef6\r\n\r\n`umiocr.exe -exit`\r\n\r\n##### \u6307\u4ee44\uff1a\u672c\u5730\u56fe\u7247\u8bc6\u522b\r\n\r\n`umiocr.exe -img=\u56fe\u7247.png`\r\n\r\n\u652f\u6301\u56fe\u7247/\u6587\u4ef6\u5939\uff1b\u591a\u4e2a\u8def\u5f84\u4ee5\u9017\u53f7,\u5206\u9694\uff1b\u542b\u7a7a\u683c\u7684\u8def\u5f84\u52a0\u53cc\u5f15\u53f7\"\"\u3002\u5982\uff1a\r\n\r\n`umiocr.exe -img=\"D:/\u56fe\u5e93,E:/my img/\u56fe\u7247.png\"`\r\n\r\n\u82e5\u8def\u5f84\u542b\u4e2d\u6587\uff0c\u8bf7\u52a1\u5fc5\u52a0\u53cc\u5f15\u53f7\u3002\r\n\r\n##### \u6307\u4ee45\uff1a\u526a\u8d34\u677f\u8bc6\u56fe\r\n\r\n`umiocr.exe -clipboard`\r\n\r\n##### \u6307\u4ee46\uff1a\u622a\u5c4f\u8bc6\u56fe \r\n\r\n`umiocr.exe -screenshot`\r\n\r\n##### \u6307\u4ee47\uff1a\u5207\u6362\u8bc6\u522b\u8bed\u8a00\r\n\r\n`umiocr.exe -language=\u5e8f\u53f7`\r\n\r\n\u201c\u5e8f\u53f7\u201d\u4e3a\u8f6f\u4ef6\u8bbe\u7f6e\u91cc\u5404\u4e2a\u8bed\u8a00\u7684\u6392\u5e8f\uff0c\u4ece0\u5f00\u59cb\u3002\u4ece\u4e0a\u5f80\u4e0b\u6570\uff0c\u6bd4\u5982\u7b80\u4e2d\u6392\u7b2c\u4e00\uff0c\u90a3\u4e48\u662f`-language=0`\u3002\u7e41\u4e2d\u6392\u7b2c\u4e8c\uff0c\u90a3\u4e48\u662f`-language=1`\u3002\u82f1\u6587\u6392\u7b2c\u56db\uff0c`-language=3`\u3002\u4ee5\u6b64\u7c7b\u63a8\u3002\r\n\r\n\r\n</details>\r\n\r\n<a id=\"goto-3\"></a>\r\n\r\n#### \u590d\u5236\u540e\u53d1\u9001\u6309\u952e & \u8054\u52a8\u7ffb\u8bd1\u8f6f\u4ef6\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n##### \u53d1\u9001\u6307\u5b9a\u6309\u952e\r\n\r\n`v1.3.5` \u8d77\uff0c\u652f\u6301\u5feb\u6377\u8bc6\u56fe\u5b8c\u6210\u5e76\u5c06\u7ed3\u679c\u5199\u5165\u526a\u8d34\u677f\u540e\uff0c\u53d1\u9001\u4e00\u7ec4\u6307\u5b9a\u6309\u952e\uff0c\u89e6\u53d1\u7ffb\u8bd1\u8f6f\u4ef6\u8fdb\u884c\u7ffb\u8bd1\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u7528\u4e8e\u89e6\u53d1\u4f60\u7684AHK\u811a\u672c\u7b49\uff0c\u5b9e\u73b0\u66f4\u591a\u5947\u5947\u602a\u602a\u7684\u529f\u80fd\u3002\r\n\r\n`v1.3.6` \u8d77\uff0c\u622a\u56fe\u8054\u52a8\u662f\u4e00\u4e2a\u5355\u72ec\u7684\u529f\u80fd\uff0c\u7531\u72ec\u7acb\u5feb\u6377\u952e\u89e6\u53d1\uff0c\u4e0e\u5e38\u89c4\u7684\u622a\u56feOCR\u4e92\u4e0d\u5f71\u54cd\u3002\r\n\r\n\u8fd9\u662f\u4e00\u4e2a\u9690\u85cf\u9ad8\u7ea7\u529f\u80fd\uff0c\u8bf7\u5148\u52fe\u9009\u8bbe\u7f6e\u9875\u5e95\u90e8\u7684`\u9ad8\u7ea7\u9009\u9879`\uff0c\u91cd\u542f\u8f6f\u4ef6\u3002\u8bbe\u7f6e\u9875\u7684`\u5feb\u6377\u8bc6\u56fe`\u677f\u5757\u4f1a\u591a\u51fa\u4e24\u7ec4\u6761\u76ee\uff1a\r\n\r\n- **\u622a\u56fe\u8054\u52a8 \u5feb\u6377\u952e**\uff1a\u60a8\u53ef\u8bbe\u7f6e\u4e00\u7ec4\u5feb\u6377\u952e\uff0c\u6765\u89e6\u53d1\u8be5\u529f\u80fd\u3002\r\n- **\u8054\u52a8\u53d1\u9001\u6309\u952e**\uff1a\u89e6\u53d1\u8bc6\u56fe\uff0c\u5e76\u5c06\u8bc6\u522b\u7ed3\u679c\u5199\u5165\u526a\u8d34\u677f\u540e\uff0c\u53ef\u4ee5\u53d1\u9001\u4e00\u7ec4\u6307\u5b9a\u6309\u952e\u3002**\u6b21**\u8868\u793a\u91cd\u590d\u53d1\u9001\u6309\u952e\u7684\u6b21\u6570\u3002\r\n\r\n\u7ecf\u8fc7\u6d4b\u8bd5\uff0cUmi-OCR\u53ef\u4ee5\u987a\u5229\u5730\u4e0e [CopyTranslator](https://github.com/CopyTranslator/CopyTranslator) \u53ca [\u6c99\u62c9\u67e5\u8bcd](https://github.com/crimx/ext-saladict) \u8054\u52a8\u89e6\u53d1\u7ffb\u8bd1\uff0c\u4ee5\u4e0b\u662f\u914d\u7f6e\u65b9\u6cd5\u3002\r\n\r\n##### \u8054\u52a8 CopyTranslator\r\n\r\n1. \u4e0b\u8f7d [CopyTranslator](https://github.com/CopyTranslator/CopyTranslator)\u3002\u8fd9\u91cc\u793a\u4f8b\u6240\u7528\u7684\u7248\u672c\u662f `v11` \u3002\r\n2. \u5982\u679c\u4e0d\u4ecb\u610fCopyTranslator\u76d1\u542c\u526a\u8d34\u677f\uff08\u6bcf\u6b21\u526a\u8d34\u677f\u53d8\u52a8\u90fd\u5c1d\u8bd5\u7ffb\u8bd1\uff09\uff0c\u90a3\u4e48\u52fe\u9009Umi-OCR\u7684`\u81ea\u52a8\u590d\u5236\u7ed3\u679c` \u548cCopyTranslator\u7684`\u76d1\u542c\u526a\u8d34\u677f`\u5373\u53ef\u3002\r\n    ![](https://tupian.li/images/2023/06/20/64915f826f16d.png)\r\n\r\n3. \u5982\u679c\u4e0d\u4e00\u5b9a\u59cb\u7ec8\u5f00\u542f\u76d1\u542c\u526a\u8d34\u677f\uff0c\u53c8\u5e0c\u671bUmi-OCR\u5728\u4efb\u4f55\u60c5\u51b5\u4e0b\u80fd\u5524\u8d77CopyTranslator\uff0c\u53ef\u4ee5\u8fd9\u6837\u5904\u7406\uff1aCopyTranslator\u5728\u8bbe\u7f6e\u91cc\u52fe\u9009`\u53ccCtrl+C\u7ffb\u8bd1`\uff1bUmi-OCR\u7684`\u8054\u52a8\u53d1\u9001\u6309\u952e`\u5f55\u5236\u4e3a`ctrl+c`\uff0c`2`\u6b21\u3002\r\n    ![](https://tupian.li/images/2023/06/20/6491611305570.png)\r\n\r\n##### \u8054\u52a8 \u6c99\u62c9\u67e5\u8bcd\r\n\r\n1. [\u6c99\u62c9\u67e5\u8bcd](https://github.com/crimx/ext-saladict) \u662f\u4e00\u6b3e\u6d4f\u89c8\u5668\u63d2\u4ef6\uff0c\u652f\u6301Chrome\u3001Edge\u7b49\u6d4f\u89c8\u5668\uff0c[\u8fd9\u662f\u4e0b\u8f7d\u9875\u9762](https://saladict.crimx.com/download.html)\u3002\u4e0b\u9762\u4ee5Edge\u6d4f\u89c8\u5668\u4e3a\u4f8b\u8bb2\u89e3\u914d\u7f6e\u65b9\u6cd5\u3002\u5176\u4ed6\u6d4f\u89c8\u5668\u5927\u540c\u5c0f\u5f02\u3002\uff08Firefox\u652f\u6301\u4e0d\u5b8c\u5584\uff0c\u4e0d\u63a8\u8350\u3002\uff09\r\n2. \u6253\u5f00\u6c99\u62c9\u67e5\u8bcd\u7684\u63d2\u4ef6\u8bbe\u7f6e\u9875\u9762\uff0c\u5de6\u8fb9\u680f\u9009\u62e9`\u57fa\u672c\u9009\u9879`\uff0c\u53f3\u8fb9\u680f\u52fe\u9009`\u540e\u53f0\u4fdd\u6301\u8fd0\u884c`\u3002\uff08\u5982\u679c\u4e0d\u52fe\u9009\u4e5f\u80fd\u4f7f\u7528\uff0c\u4f46\u5fc5\u987b\u4fdd\u6301\u6d4f\u89c8\u5668\u5f00\u542f\u3002\uff09\r\n3. \u5de6\u8fb9\u680f\u70b9\u51fb`\u9690\u79c1\u8bbe\u7f6e`\uff0c\u53f3\u8fb9\u680f\u70b9\u51fb`\u8bbe\u7f6e\u5feb\u6377\u952e`\u3002\r\n    ![](https://tupian.li/images/2023/06/20/649165cae4b87.png)\r\n4. \u5728\u5f39\u51fa\u7684\u65b0\u9875\u9762\u4e2d\uff0c\u5c06\u6c99\u62c9\u67e5\u8bcd\u7684`\u5728\u72ec\u7acb\u7a97\u53e3\u4e2d\u641c\u7d22\u526a\u8d34\u677f\u5185\u5bb9`\u8bbe\u7f6e\u4efb\u610f\u4e00\u7ec4\u5feb\u6377\u952e\uff0c\u7136\u540e\u53f3\u8fb9\u6539\u4e3a`\u5168\u5c40`\u3002Umi-OCR\u7684`\u8054\u52a8\u53d1\u9001\u6309\u952e`\u5f55\u5236\u4e3a\u76f8\u540c\u5feb\u6377\u952e\uff0c`1`\u6b21\u3002\r\n    ![](https://tupian.li/images/2023/06/20/649165faa434f.png)\r\n5. \u56de\u5230\u6c99\u62c9\u67e5\u8bcd\u7684\u8bbe\u7f6e\u9875\uff0c\u5de6\u8fb9\u680f\u70b9\u51fb`\u6743\u9650\u7ba1\u7406`\uff0c\u52fe\u9009`\u8bfb\u53d6\u526a\u8d34\u677f`\u3002\r\n    ![](https://tupian.li/images/2023/06/20/649165f7dbf18.png)\r\n\r\n</details>\r\n\r\n\r\n#### \u81ea\u5b9a\u4e49\u8ba1\u5212\u4efb\u52a1\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n- \u9664\u4e86\u9ed8\u8ba4\u7684\u81ea\u52a8\u5173\u673a/\u5f85\u673a\u5916\uff0c\u60a8\u8fd8\u53ef\u521b\u5efa\u81ea\u5df1\u7684\u8ba1\u5212\u4efb\u52a1\uff0c\u8ba9\u8f6f\u4ef6\u5728\u5b8c\u6210\u4e00\u6b21\u6279\u91cf\u8bc6\u522b\u540e\u6267\u884c\u81ea\u5b9a\u4e49cmd\u547d\u4ee4\u3002\r\n- \u5728\u8f6f\u4ef6**\u5173\u95ed**\u7684\u60c5\u51b5\u4e0b\uff0c\u6253\u5f00\u914d\u7f6e\u6587\u4ef6 `Umi-OCR_config.json` \u3002\u4e5f\u53ef\u4ee5\u5148\u6253\u5f00\u8f6f\u4ef6\uff0c\u70b9\u51fb\u8bbe\u7f6e\u9875\u6700\u5e95\u90e8\u7684 **\u6253\u5f00\u8bbe\u7f6e\u6587\u4ef6** \uff0c\u7136\u540e\u9000\u51fa\u8f6f\u4ef6\u3002\r\n- \u5728`okMission`\u4e2d\u6dfb\u52a0\u4e00\u9879\u5143\u7d20\u3002\r\n- \u952e\u4e3a\u4efb\u52a1\u540d\u79f0\uff0c\u503c\u4e3a\u5b57\u5178\uff0c\u5176\u4e2d`code`\u4e3acmd\u547d\u4ee4\u3002\u591a\u6761\u547d\u4ee4\u53ef\u7528`&`\u5206\u9694\u3002\u4f8b\uff1a\r\n    ```\r\n    \"\u6211\u7684\u4efb\u52a1\": {\"code\": \"cmd\u547d\u4ee41 & \u547d\u4ee42\"}\r\n    ```\r\n</details>\r\n\r\n\r\n#### \u5185\u5b58\u6e05\u7406\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n\u672c\u529f\u80fd\u9ed8\u8ba4\u5173\u95ed\u3002\r\n\r\n\u4f9b\u5185\u5b58\u5360\u7528\u5341\u5206\u654f\u611f\u7684\u7528\u6237\u4f7f\u7528\uff0c**\u4f1a\u6709\u5076\u5c14\u963b\u6162\u4efb\u52a1\u901f\u5ea6\u7684\u526f\u4f5c\u7528\u3002** \u4e00\u822c\u7528\u6237\u65e0\u9700\u5f00\u542f\u3002\r\n\r\n\u82e5\u6709\u9700\u8981\u5f00\u542f\uff0c\u8bf7\u5728\u8bbe\u7f6e\u9875\u62c9\u5230\u5e95\u90e8\uff0c\u52fe\u9009`\u9ad8\u7ea7\u9009\u9879`\uff0c\u91cd\u542f\u8f6f\u4ef6\uff0c\u7136\u540e\uff1a`OCR\u8bc6\u522b\u5f15\u64ce\u8bbe\u7f6e` \u2192 `\u81ea\u52a8\u6e05\u7406\u5185\u5b58` \u2192 `\u5c06\u4efb\u4e00\u53c2\u6570\u6539\u6210>0\u7684\u503c` \u3002\r\n\r\n\u539f\u7406\u662f\u6ee1\u8db3\u4efb\u4e00\u6761\u4ef6\uff08\u5185\u5b58\u5360\u7528\u8d85\u9650\uff0c\u6216\u8005\u4e00\u6bb5\u65f6\u95f4\u6ca1\u6709\u6267\u884c\u4efb\u52a1\uff09\u5219\u91cd\u542f\u5f15\u64ce\u7ec4\u4ef6\uff0c\u91ca\u653e\u5f53\u524d\u5f15\u64ce\u5360\u7528\u7684\u6240\u6709\u5185\u5b58\u3002\r\n\r\n![](https://tupian.li/images/2023/03/19/64168bf25e86c.png)\r\n\r\n</details>\r\n\r\n#### \u6dfb\u52a0\u5230\u8fd0\u884c\uff08Win+R\u5feb\u6377\u952e\uff09\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n1. \u5728\u4efb\u4f55\u5730\u65b9\u521b\u5efa\u4e00\u4e2a\u6587\u4ef6\u5939\uff0c\u540d\u5b57\u968f\u610f\uff0c\u5c06\u8be5\u6587\u4ef6\u5939\u7684\u8def\u5f84[\u52a0\u5165\u7cfb\u7edf\u73af\u5883\u53d8\u91cf](https://www.bing.com/search?q=win10+%E6%B7%BB%E5%8A%A0%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)\u3002\r\n2. \u8f6f\u4ef6\u521b\u5efa\u4e00\u4e2a\u5feb\u6377\u65b9\u5f0f\uff0c\u6539\u4e00\u4e2a\u7b80\u77ed\u7684\u540d\u5b57\uff0c\u5982`umi`\u3002\r\n3. \u5c06\u5feb\u6377\u65b9\u5f0f\u6254\u8fdb\u7b2c1\u6b65\u7684\u6587\u4ef6\u5939\u4e2d\u3002\r\n4. \u4efb\u4f55\u65f6\u5019\u6309\u4e0b`Win+R`\uff0c\u5728\u5f39\u7a97\u4e2d\u8f93\u5165`umi`\uff0c\u5373\u53ef\u6253\u5f00\u8f6f\u4ef6\u3002\r\n- \u63d0\u793a\uff1a\u8bf7\u4e0d\u8981\u8d77\u540d\u4e3a`ocr`\uff0c\u56e0\u4e3a\u7cfb\u7edf\u53ef\u80fd\u5b58\u5728\u540c\u540d\u7684\u6ce8\u518c\u8def\u5f84\uff0c\u65e0\u6cd5\u7528\u6b64\u6307\u4ee4\u5524\u8d77\u7b2c\u4e09\u65b9\u8f6f\u4ef6\u3002\r\n\r\n</details>\r\n\r\n\r\n## \u95ee\u9898\u6392\u9664\r\n\r\n#### \u65e0\u6cd5\u542f\u52a8\u5f15\u64ce\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n> PaddleOCR\u5f15\u64ce\u6682\u4e0d\u652f\u6301\u5728\u6ca1\u6709AVX\u6307\u4ee4\u96c6\u7684CPU\u4e0a\u8fd0\u884c\uff0c\u9047\u5230\u8be5\u95ee\u9898\u53ef\u5c1d\u8bd5\u6362\u7528RapidOCR\u5f15\u64ce\u3002\r\n\r\n> \u4e0b\u56fe\u6307\u793a\u5982\u4f55\u5224\u65ad\u8be5\u95ee\u9898\u662f\u5426\u7531\u7f3a\u5931AVX\u5f15\u8d77\u3002\r\n\r\n![CPUAVX.png](https://tupian.li/images/2022/11/04/63651e9eed1df.png)\r\n\r\n> \u5e38\u89c1\u7684\u5bb6\u7528CPU\u4e00\u822c\u90fd\u652f\u6301AVX\u6307\u4ee4\u96c6\uff0c\u5982\u4e0b\uff1a\r\n\r\n| AVX   | \u652f\u6301\u7684\u4ea7\u54c1\u7cfb\u5217                                           | \u4e0d\u652f\u6301                                                      |\r\n| ----- | -------------------------------------------------------- | ----------------------------------------------------------- |\r\n| Intel | \u9177\u777fCore\uff0c\u81f3\u5f3aXeon\uff0c11\u4ee3\u53ca\u4ee5\u540e\u7684\u8d5b\u626cCeleron\u548c\u5954\u817ePentium | \u51cc\u52a8Atom\uff0c\u5b89\u817eItanium\uff0c10\u4ee3\u53ca\u4ee5\u524d\u7684\u8d5b\u626cCeleron\u548c\u5954\u817ePentium |\r\n| AMD   | \u63a8\u571f\u673a\u67b6\u6784\u53ca\u4e4b\u540e\u7684\u4ea7\u54c1\uff0c\u5982\u9510\u9f99Ryzen\u3001\u901f\u9f99Athlon\u3001FX \u7b49   | K10\u67b6\u6784\u53ca\u4e4b\u524d\u7684\u4ea7\u54c1                                         |\r\n\r\n> \u53ef\u901a\u8fc7 [CPU-Z](https://www.cpuid.com/downloads/cpu-z/cpu-z_2.03-cn.zip) \u8f6f\u4ef6\u67e5\u770b\u81ea\u5df1CPU\u7684\u6307\u4ee4\u96c6\u4fe1\u606f\u3002\r\n\r\n</details>\r\n\r\n#### \u591a\u5c4f\u5e55\u622a\u56fe\u4e0d\u6b63\u5e38\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n> \u7531\u4e8ewindows\u7f29\u653e\u5bf9\u5c4f\u5e55\u5750\u6807\u7cfb\u5e26\u6765\u7684\u5f71\u54cd\uff0c\u82e5\u5916\u63a5\u591a\u5757\u5c4f\u5e55\uff0c\u4e14\u7f29\u653e\u6bd4\u4f8b\u4e0d\u4e00\u81f4\u65f6\uff0c\u53ef\u80fd\u5bfc\u81f4Umi-OCR\u5185\u7f6e\u622a\u56fe\u6a21\u5757\u5f02\u5e38\uff0c\u5982\u753b\u9762\u4e0d\u5b8c\u6574\u3001\u7a97\u53e3\u53d8\u5f62\u3001\u8bc6\u522b\u4e0d\u51fa\u6587\u5b57\u7b49\u3002\r\n\r\n\u82e5\u51fa\u73b0\u8fd9\u79cd\u60c5\u51b5\uff0c\u4ee5\u4e0b\u63d0\u4f9b\u4e09\u79cd\u53ef\u66ff\u4ee3\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u60a8\u53ef\u9009\u62e9\u4e00\u79cd\u4f7f\u7528\u3002\r\n\r\n1. \u5728\u7cfb\u7edf\u8bbe\u7f6e\u91cc\u7684\u3010\u66f4\u6539\u6587\u672c\u3001\u5e94\u7528\u7b49\u9879\u76ee\u7684\u5927\u5c0f\u3011\u5c06\u6240\u6709\u5c4f\u5e55\u8c03\u5230\u76f8\u540c\u6570\u503c\u3002\u89c1\u4e0b\u56fe\u5de6\u3002\r\n\r\n![](https://tupian.li/images/2022/09/29/1-1-w--.png)\r\n\r\n2. \u8f6f\u4ef6\u9644\u5e26\u4e86\u7b2c\u4e8c\u5957\u622a\u56fe\u65b9\u6848\uff1a\u8c03\u7528windows\u5185\u7f6e\u7684\u201c\u622a\u56fe\u548c\u8349\u56fe\u201d\u6765\u5b8c\u6210\u622a\u56fe\u5e76\u5524\u8d77OCR\u3002\u53ef\u5728\u8f6f\u4ef6\u8bbe\u7f6e\u91cc\u5207\u6362\u3002\uff08\u82e5\u7cfb\u7edf\u622a\u56fe\u540e\u4e0d\u80fd\u5524\u8d77OCR\uff0c\u8bf7\u786e\u4fdd\u7cfb\u7edf\u80fd\u901a\u8fc7 `win+shift+S` \u89e6\u53d1\u622a\u56fe\uff0c\u4e14`\u81ea\u52a8\u590d\u5236\u5230\u526a\u8d34\u677f` \u7684\u5f00\u5173\u4e0d\u80fd\u5173\u95ed\uff08\u9ed8\u8ba4\u662f\u6253\u5f00\u7684\uff09\u3002\u89c1\u4e0a\u56fe\u53f3\u3002\uff09 \r\n<BR>\r\n\r\n3. \u7981\u7528\u8f6f\u4ef6\u7684DPI\u7f29\u653e\u3002\u5bf9`Umi-OCR \u6587\u5b57\u8bc6\u522b.exe`\uff0c\u53f3\u952e \u2192 \u5c5e\u6027 \u2192 \u517c\u5bb9\u6027 \u2192 \u66f4\u6539\u66f4\u9ad8DPI\u8bbe\u7f6e \u2192 \u52fe\u9009`\u66ff\u4ee3\u9ad8DPI\u7f29\u653e\u884c\u4e3a` \u3002\r\n\r\n</details>\r\n\r\n#### \u672a\u627e\u5230\u5f15\u64ce\u7ec4\u4ef6\r\n\r\n\u8bf7\u5c06\u5f15\u64ce\u7ec4\u4ef6 `PaddleOCR-json \u6587\u4ef6\u5939` \u653e\u7f6e\u4e8e\u7a0b\u5e8f\u5165\u53e3\uff08main.py\u6216exe\uff09\u540c\u76ee\u5f55\u4e0b\u3002\r\n\r\n## \u6548\u7387\u6d4b\u8bd5\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n\r\n\u6d4b\u8bd5\u673a\u5668\uff1a\r\n\r\n| CPU      | TDP | RAM | \u662f\u5426\u517c\u5bb9mkldnn |\r\n| -------- | --- | --- | -------------- |\r\n| r5 4600u | 15w | 16g | \u65e0\u62a5\u9519         |\r\n\r\n\u6d4b\u8bd5\u96c6\uff1a\r\n\r\n| \u56fe\u7247\u5f20\u6570 | \u6d4b\u8bd5\u6761\u4ef6                   | \u5206\u8fa8\u7387    | \u5e73\u5747\u5b57\u5757\u6570\u91cf | \u5e73\u5747\u5b57\u7b26\u6570\u91cf | \u6587\u5b57\u8bed\u8a00 |\r\n| -------- | -------------------------- | --------- | ------------ | ------------ | -------- |\r\n| 100      | \u73af\u5883\u76f8\u540c\uff0c\u591a\u6b21\u6d4b\u91cf\u53d6\u5e73\u5747\u503c | 1920x1080 | 15           | 250          | \u7b80\u4f53\u4e2d\u6587 |\r\n\r\n\u6d4b\u8bd5\u7ed3\u679c\uff1a\r\n\r\n| Umi-OCR\u7248\u672c        | 1.2.5 | 1.2.5 | 1.2.6 | 1.2.6     | 1.2.6   | 1.2.6 |\r\n| ------------------ | ----- | ----- | ----- | --------- | ------- | ----- |\r\n| PaddleOCR-json\u7248\u672c | 1.1.1 | 1.1.1 | 1.2.0 | **1.2.0** | 1.2.0   | 1.2.0 |\r\n| PP-OCR C++\u7248\u672c     | 2.1   | 2.1   | 2.6   | **2.6**   | 2.6     | 2.6   |\r\n| \u662f\u5426\u5f00\u542fmkldnn     | \u2705     |       | \u2705     | \u2705         | \u2705       |       |\r\n| PP-OCR\u6a21\u578b\u5e93\u7248\u672c   | v2    | v2    | v2    | **v3**    | v3 slim | v3    |\r\n| \u603b\u8017\u65f6\uff08\u79d2\uff09       | 90    | 120   | 65    | **63**    | 170     | 400   |\r\n| \u5e73\u5747\u5355\u5f20\u8017\u65f6\uff08\u79d2\uff09 | 0.9   | 1.2   | 0.65  | **0.63**  | 1.7     | 4.0   |\r\n| \u5185\u5b58\u5360\u7528\u5cf0\u503c\uff08MB\uff09 | 1000  | 350   | 1200  | **1700**  | 5800    | 500   |\r\n\r\n\u7ed3\u8bba\uff1a\r\n\r\n- \u5728\u542f\u7528mkldnn\u60c5\u51b5\u4e0b\uff0c`v1.2.6` \u53ca\u4e4b\u540e\u7684\u7248\u672c\uff0c\u6bd4\u524d\u4ee3\u7684\u6548\u7387\u5177\u6709\u663e\u8457\u4f18\u52bf\u3002\u65b0\u7248\u8c03\u6559\u503e\u5411\u4e8e\u69a8\u5e72\u786c\u4ef6\u7684\u6027\u80fd\uff0c\u5185\u5b58\u5360\u7528\u9ad8\u4e8e\u65e7\u7248\u3002\r\n- \u4e0d\u542f\u7528mkldnn\u65f6\uff0c\u65b0\u7248\u672c\u6548\u7387\u4e0d\u5982\u524d\u4ee3\u3002\u6545\u60a8\u7684CPU\u82e5\u4e0d\u652f\u6301mkldnn\uff08\u6781\u65e9\u671fAMD\u578b\u53f7\uff09\uff0c\u53ef\u5c1d\u8bd5\u4f7f\u7528 `v1.2.5` \u7684\u65e7\u7248\u672cUmi-OCR\u3002\r\n- \u867d\u7136Paddle\u5b98\u65b9\u6587\u6863\u4e2d\u8bf4\u7ecf\u8fc7\u538b\u7f29\u526a\u679d\u84b8\u998f\u91cf\u5316\u7684slim\u7248\u6a21\u578b\u7684\u6027\u80fd\u6307\u6807\u4f1a\u8d85\u8fc7\u4f20\u7edf\u7b97\u6cd5\uff0c\u4f46\u5b9e\u6d4b v3 slim \u6a21\u578b\u7684\u6027\u80fd\u8fdc\u4e0d\u5982\u539f\u59cb\u7248\u672c\uff0c\u8fd8\u53ef\u80fd\u4f34\u968f\u7740\u5185\u5b58\u6cc4\u6f0f\u7684\u95ee\u9898\u3002\u4e5f\u8bb8\u662f PP-OCR C++ \u5f15\u64ce\u4e0d\u9002\u914d\u3002\u5728\u8be5\u95ee\u9898\u89e3\u51b3\u4e4b\u524d\uff0cUmi-OCR\u53d1\u884c\u7248\u63d0\u4f9b\u539f\u59cb\u7248\u672c\u6a21\u578b\u3002\r\n\r\n</details>\r\n\r\n## \u5f00\u53d1\u8bf4\u660e\r\n\r\n<details>\r\n<summary>\u5c55\u5f00</summary><BR>\r\n\r\n\u5f00\u53d1\u8005\u6ef4\u788e\u788e\u5ff5\r\n\r\n- \u5982\u679c\u60f3\u7528\u63a5\u53e3\u8c03\u7528OCR\uff0c\u53ef\u8bd5\u8bd5 [PaddleOCR-json \u56fe\u7247\u8f6c\u6587\u5b57\u7a0b\u5e8f](https://github.com/hiroi-sora/PaddleOCR-json#paddleocr-json-%E5%9B%BE%E7%89%87%E8%BD%AC%E6%96%87%E5%AD%97%E7%A8%8B%E5%BA%8F) \u3002\r\n- PPOCR v2.6 (PaddleOCR-json v1.2.0) \u7248\u672c\u63d0\u9ad8\u4e86\u6279\u91cf\u5904\u7406\u7684\u5e73\u5747\u901f\u5ea6\uff0c\u4f46\u4ee3\u4ef7\u662f\u9700\u8981\u82b1\u8d39\u66f4\u957f\u65f6\u95f4\u8fdb\u884c\u521d\u59cb\u5316\u3002\u63d0\u9ad8\u4e86\u542f\u7528mkldnn\u52a0\u901f\u65f6\u7684\u8bc6\u522b\u901f\u5ea6\uff0c\u4f46\u4ee3\u4ef7\u65f6\u4e0d\u5f00\u542f\u52a0\u901f\u65f6\u6548\u7387\u66f4\u4f4e\u3002\uff08CPU\u53ea\u8981\u4e0d\u662f\u7279\u522b\u65e9\u671f\u7684AMD\uff0c\u4e00\u822c\u90fd\u80fd\u4f7f\u7528mkldnn\uff0c\u4f46\u52a0\u901f\u5e45\u5ea6\u53ef\u80fd\u4e0d\u5982\u540c\u6863\u6b21\u7684Intel\u3002\uff09\r\n- \u672a\u6765\u5c06\u589e\u52a0 openblas \u7248\u8bc6\u522b\u5f15\u64ce\uff0c\u8fdb\u4e00\u6b65\u4f18\u5316AMD\u7684\u6548\u7387\u3002\uff08\u6709 \u751f \u4e4b \u5e74\uff09\r\n- \u4f7f\u7528`pyinstaller`\u6253\u5305\u3002\u53ef\u4ee5\u8fd0\u884c\u6839\u76ee\u5f55\u4e0b\u7684 [to_exe.py](to_exe.py) \u4e00\u952e\u6253\u5305\u3002\r\n- \u914d\u7f6e\u6587\u4ef6`Umi-OCR_config.json`\u5728\u7b2c\u4e00\u6b21\u8fd0\u884c\u7a0b\u5e8f\u65f6\u751f\u6210\u3002\u82e5\u60f3\u81ea\u5b9a\u4e49\u5f15\u64ce\u7ec4\u4ef6\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u4fee\u6539\u5176\u4e2d\u7684`ocrToolPath`\u5c5e\u6027\u3002\u652f\u6301\u7edd\u5bf9/\u76f8\u5bf9\u8def\u5f84\u3002\u53ef\u4ee5\u5b9e\u73b0\u591a\u4e2a\u524d\u7aef\u5171\u7528\u4e00\u5957\u5f15\u64ce\u7ec4\u4ef6\u3002\r\n- `v1.3.0` \u51e0\u4e4e\u91cd\u5199\u4e86\u6574\u4e2a\u9879\u76ee\u6846\u67b6\uff0c\u5c06\u4e1a\u52a1\u903b\u8f91\u4e0eUI\u4ee3\u7801\u89e3\u8026\uff0c\u5212\u5206\u51fa\u591a\u4e2a\u5b50\u6a21\u5757\u3002\u8fd9\u4e9b\u5b50\u6a21\u5757\u6211\u8ba4\u4e3a\u662f\u6bd4\u8f83\u65b9\u4fbf\u62d3\u5c55\u7684\uff1a\r\n  - \u6587\u4ef6\u8f93\u51fa\u6a21\u5757 `ocr/output_*.py`\r\n  - \u6587\u672c\u5757\u540e\u5904\u7406\u6a21\u5757 `ocr/tbou/*.py`\r\n- \u6dfb\u52a0\u4e00\u4e2a\u65b0\u5b50\u6a21\u5757\u7684\u4e00\u822c\u65b9\u6cd5\u662f\uff1a\r\n  - \u5728 `utils/config.py` \u91cc\u6dfb\u52a0\u9700\u8981\u7684\u914d\u7f6e\u9879\u3002\u5728 `_ConfigDict` \u91cc\u7f16\u5199\u914d\u7f6e\u9879\u53c2\u6570\u540e\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210tk.var\u53d8\u91cf\uff0c\u8bfb\u3001\u5199\u672c\u5730\u914d\u7f6e\u6587\u4ef6\u3002\u7a0b\u5e8f\u8fd0\u884c\u8fc7\u7a0b\u4e2d\uff0c\u53c2\u6570\u53d1\u751f\u66f4\u6539\u5c31\u4f1a\u81ea\u52a8\u5199\u5165\u672c\u5730\u3002\r\n  - \u5728 `ui/win_main.py` \u91cc\u6dfb\u52a0\u9700\u8981\u7684UI\u3002\u9700\u8981tk.var\u52a8\u6001\u53d8\u91cf\u65f6\uff0c\u76f4\u63a5 `Config.getTK()` \u62ff\u6765\u7ed1\u5b9a\u3002\r\n  - \u7ee7\u627f\u6a21\u5757\u7236\u7c7b\uff0c\u5199\u4e1a\u52a1\u903b\u8f91\u3002\u521d\u59cb\u5316\u65f6\u8bfb\u5165\u914d\u7f6e\uff0c\u4e8b\u4ef6\u65b9\u6cd5\u91cc\u5199\u5bf9\u5e94\u7684\u5904\u7406\u3002\r\n  - \u6a21\u5757\u5c3d\u91cf\u4e0d\u8981\u6709\u8fc7\u591a\u5bf9\u5916\u63a5\u53e3\uff0c\u4f20\u53c2\u8d8a\u591a\u8d8a\u5bb9\u6613\u4e71\u3002\u8981\u4ec0\u4e48\u53bb `Config` \u91cc\u62ff\u5c31\u662f\u4e86\uff0c\u6bd4\u5982\u8981\u8c03\u7528\u4e3b\u7a97\u53e3\u7c7b\u7684\u65b9\u6cd5\u5c31\u7528 `Config.main` \uff0c\u8981\u53c2\u6570\u5c31 `Config.get()`\u3002\r\n- \u53cd\u6b63 `Config` \u5c31\u662f\u4e2d\u67a2\uff0c\u662f\u5404\u4e2a\u6a21\u5757\u4e4b\u95f4\u3001\u6a21\u5757\u4e0e\u914d\u7f6e\u4e4b\u95f4\u4ea4\u6d41\u7684\u5168\u5c40\u63a5\u53e3\u3002\u5c3d\u91cf\u4e0d\u8981\u8de8\u7ebf\u7a0b\u540c\u65f6\u8bfb\u5199\u3002\u6211\u662f\u8bbe\u8ba1\u5728\u6267\u884c\u4efb\u52a1\u65f6\u80fd\u4fee\u6539\u5230\u914d\u7f6e\u9879\u7684UI\u90fd\u7ed9\u9501\u5b9a\uff0c\u4ee5\u514d\u5f71\u54cd\u4efb\u52a1\u7ebf\u7a0b\u8bfb\u53d6\u3002\r\n- \u4e2a\u4eba\u559c\u6b22\u5c0f\u800c\u7f8e\uff0c\u6240\u4ee5\u5c3d\u91cf\u4e0d\u4f7f\u7528\u4f53\u79ef\u5927\u7684\u5305\u3002\u4e00\u76f4\u7528tkinter\u800c\u4e0d\u7528\u529f\u80fd\u5f3a\u5927\u7684QT\u4e5f\u662f\u8fd9\u4e2a\u539f\u56e0\uff0cPYQT\u7684\u4f53\u79ef\u8fd150m\uff0c\u51e0\u4e4e\u662f\u6574\u4e2a\u9879\u76ee\u6253\u5305\u540e\uff08\u4e0d\u542b\u5f15\u64ce\uff09\u7684\u4e24\u500d\u5927\u4e86\u3002\r\n- \u6ce8\u91ca\u8d85\u7ea7\u591a\uff0c\u4e0d\u6015\u770b\u4e0d\u61c2~ \u4e0d\u8fc7\u6709\u4e9b\u4ee3\u7801\u5199\u5f97\u6bd4\u8f83\u4e11\uff0c\u8bf7\u89c1\u8c05\u3002\r\n\r\n</details>\r\n\r\n## TODO\r\n\r\n<details>\r\n<summary>\u5df2\u5b8c\u6210</summary>\r\n\r\n- \u8f93\u51fa\u5185\u5bb9\u53ef\u9009\u4e3amarkdown\u98ce\u683c\u5e76\u5d4c\u5165\u56fe\u7247\u8def\u5f84\u3002\r\n- \u8bbe\u7f6e\u9879\u80fd\u4fdd\u5b58\u3002\r\n- \u81ea\u52a8\u6253\u5f00\u8f93\u51fa\u6587\u4ef6or\u6587\u4ef6\u5939\u3002\r\n- \u8bc6\u522b\u526a\u8d34\u677f\u4e2d\u7684\u56fe\u7247\u3002\r\n- \u4efb\u52a1\u8fdb\u884c\u65f6\uff0c\u7981\u7528\u90e8\u5206\u8bbe\u7f6e\u9879\u3002\r\n- \u8ba1\u5212\u4efb\u52a1\uff1a\u5b8c\u6210\u540e\u81ea\u52a8\u5173\u673a/\u4f11\u7720\u7b49\u3002\r\n- \u9012\u5f52\u5bfc\u5165\u6587\u4ef6\u5939\u3002\r\n- \u4f18\u5316\u9002\u914dPaddleOCR v3\u6a21\u578b\u3002\r\n- \u589e\u52a0OCR\u5f15\u64ce\u8fdb\u7a0b\u5e38\u9a7b\u540e\u53f0\u7684\u6a21\u5f0f\uff0c\u5927\u5e45\u7f29\u77ed\u526a\u8d34\u677f\u8bc6\u56fe\u7b49\u96f6\u788e\u4efb\u52a1\u52a8\u65f6\u95f4\u3002\r\n- \u76d1\u63a7OCR\u5f15\u64ce\u8fdb\u7a0b\u5185\u5b58\u5360\u7528\uff0c\u5e76\u53ef\u968f\u65f6\u5f3a\u5236\u505c\u6b62\u8be5\u8fdb\u7a0b\u3002\r\n- \u5185\u7f6e\u622a\u56fe\u3002\r\n- \u53ef\u6700\u5c0f\u5316\u81f3\u7cfb\u7edf\u6258\u76d8\u3002\r\n- \u4f18\u5316UI\uff1a\u4ee5\u56fe\u6807\u4ee3\u66ff\u6587\u5b57\u6309\u94ae\u3002\u8bbe\u7f6e\u9879\u60ac\u505c\u6709\u6c14\u6ce1\u63d0\u793a\u6846\u3002\r\n- \u81ea\u52a8\u68c0\u6d4bWindows\u8bed\u8a00\u662f\u5426\u517c\u5bb9\r\n- \u89e3\u51b3\u5f15\u64ceOpencv\u5bf9\u4e0d\u540c\u5730\u533a\u8bed\u8a00Windows\u7684\u517c\u5bb9\u6027\u3002\r\n- \u4f18\u5316\u5f15\u64ce\u53c2\u6570\u8bbe\u7f6e\u3002\r\n- \u6392\u7248\u540e\u5904\u7406\uff1a\u5339\u914d/\u5408\u5e76\u540c\u6bb5\u843d\u6587\u672c\uff0c\u652f\u6301\u6a2a/\u7ad6\u6392\u3002\r\n- \u53ef\u8bbe\u7f6e\u7a97\u53e3\u5f39\u51fa\u6a21\u5f0f\uff08\u9501\u5b9a\u7f6e\u9876\uff09\u3002\r\n- \u91cd\u65b0\u5feb\u6377\u952e\u6a21\u5757\uff0c\u89e3\u51b3\u5931\u6548\u548c\u5f55\u5236\u4e0d\u6b63\u786e\u7684Bug\u3002\r\n- \u8bbe\u7f6e\u5f00\u673a\u81ea\u542f\u3002\r\n- \u521b\u5efa\u5feb\u6377\u65b9\u5f0f\u5230\u5f00\u59cb\u83dc\u5355\u3001\u684c\u9762\u3002\r\n- \u591a\u5f00\u63d0\u793a\u3002\r\n- \u622a\u56fe\u65f6\u9690\u85cf\u7a97\u53e3\u3002\r\n- \u7ed3\u6784\u8f93\u51fa\u5230\u6bcf\u4e2a\u56fe\u7247\u540c\u540d\u7684\u5355\u72ectxt\u6587\u4ef6\r\n- \u521b\u5efa\u5f00\u673a\u542f\u52a8\u9879\u65f6\uff0c\u53ef\u9009`\u4e0d\u663e\u793a\u4e3b\u7a97\u53e3`\u3002\r\n- OCR\u7ed3\u679c\u8f93\u51fa\u5230\u6bcf\u4e2a\u56fe\u7247\u540c\u540d\u7684\u5355\u72ectxt\u6587\u4ef6\u3002\r\n- \u589e\u52a0\u72ec\u7acb\u7684\u8bbe\u7f6e\u8bed\u8a00\u7a97\u53e3\uff0c\u53ef\u5728\u591a\u5904\u70b9\u5f00\uff0c\u4fbf\u4e8e\u5207\u6362\u8bed\u8a00\u3002\r\n- \u5408\u5e76\u6bb5\u843d\u6dfb\u52a0`\u5408\u5e76\u81ea\u7136\u6bb5-\u897f\u6587\u6a21\u5f0f`\uff0c\u53ef\u5728\u82f1\u6587\u6bb5\u843d\u6362\u884c\u65f6\u8865\u5145\u7a7a\u683c\u3002\r\n- \u5feb\u6377\u8bc6\u56fe\u53ef\u9009`\u81ea\u52a8\u6e05\u7a7a\u9762\u677f`\uff0c\u53ea\u663e\u793a\u672c\u6b21\u8bc6\u522b\u7ed3\u679c\uff0c\u4e14\u9690\u85cf\u65f6\u95f4\u4fe1\u606f\u3002\r\n- \u901a\u8fc7\u547d\u4ee4\u884c\u63a7\u5236Umi-OCR\u3002\r\n- \u5f39\u51fa\u60ac\u6d6e\u7684\u8bc6\u522b\u6210\u529f\u4e0e\u5426\u7684\u63d0\u793a\u3002\r\n- \u5b9a\u65f6\u6216\u8d85\u8fc7\u9650\u5ea6\u65f6\u81ea\u52a8\u6e05\u7406\u5f15\u64ce\u5185\u5b58\u5360\u7528\u3002\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>\u753b\u997c\uff08\u6709\u751f\u4e4b\u5e74\uff09</summary>\r\n\r\n- \u6587\u672c\u7ea0\u9519\u3002\r\n- \u591a\u56fd\u8bed\u8a00\u3002\r\n- \u9ad8\u5206\u5c4f\u652f\u6301\u3002\r\n- PDF\u6587\u6863\u8bc6\u522b\u3002\r\n- \u5bf9\u56fe\u7247\u91cd\u547d\u540d\u3002\r\n- \u63d0\u9ad8\u521d\u59cb\u5316\u901f\u5ea6\u3002\r\n- \u5ffd\u7565\u533a\u57df\u80fd\u4fdd\u5b58\u9884\u8bbe\u3002\r\n- \u7f29\u51cf\u79bb\u7ebfOCR\u6a21\u5757\u7684\u4f53\u79ef\u3002\r\n- \u81ea\u52a8\u68c0\u6d4bCPU\u6307\u4ee4\u96c6\u662f\u5426\u517c\u5bb9\u3002\r\n- \u4f18\u5316\u754c\u9762\u8bbe\u8ba1\uff0c\u5206\u79bb\u529f\u80fd\u6a21\u5757\u5230\u4e0d\u540c\u6807\u7b7e\u9875\u3002\r\n- \u79bb\u7ebfOCR\u6a21\u5757\u589e\u52a0 `no_avx` \u548c `openblas` \u7248\u672c\u3002\r\n\r\n</details>\r\n\r\n## \u66f4\u65b0\u65e5\u5fd7\r\n\r\n\u70b9\u51fb\u7248\u672c\u53f7\u94fe\u63a5\u53ef\u524d\u5f80\u5bf9\u5e94\u5907\u4efd\u5206\u652f\u3002\r\n\r\n##### v1.3.7 `2023.10.10`\r\n- Paddle\u5f15\u64ce\u517c\u5bb9Win7 x64 \u3002\r\n\r\n##### [v1.3.6](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.6) `2023.9.26`\r\n- \u65b0\u529f\u80fd\uff1a\u66f4\u5f3a\u5927\u7684\u6bb5\u843d\u5408\u5e76\u65b9\u6848-`\u5355\u884c/\u591a\u884c\u81ea\u7136\u6bb5/\u591a\u884c\u4ee3\u7801\u6bb5`\u3002\u652f\u6301\u81ea\u52a8\u5224\u65ad\u4e2d/\u82f1\u6587\u6bb5\u843d\uff0c\u91c7\u53d6\u5bf9\u5e94\u7684\u5408\u5e76\u89c4\u5219\u3002\r\n- \u79fb\u9664\u4e00\u4e9b\u8fc7\u65f6\u7684\u6bb5\u843d\u5408\u5e76\u65b9\u6848\u3002\r\n- \u529f\u80fd\u8c03\u6574\uff1a`\u622a\u56fe\u8054\u52a8` \u5212\u5206\u4e3a\u72ec\u7acb\u7684\u529f\u80fd\uff0c\u4e0d\u53d7\u5e38\u89c4\u622a\u56feOCR\u5f71\u54cd\u3002\r\n\r\n##### [v1.3.5](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.5) `2023.6.20`\r\n<!-- 6.5k\u2605 \u6492\u82b1~ -->\r\n- \u65b0\u529f\u80fd\uff1a\u590d\u5236\u8bc6\u522b\u7ed3\u679c\u540e\uff0c\u53ef\u53d1\u9001\u6307\u5b9a\u6309\u952e\uff0c\u4ee5\u4fbf\u8054\u52a8\u5524\u8d77\u7ffb\u8bd1\u5668\u7b49\u5de5\u5177\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u547d\u4ee4\u884c\u589e\u52a0\u5207\u6362\u8bc6\u522b\u8bed\u8a00\u7684\u6307\u4ee4\u3002\r\n- \u4feeBug\uff1a\u4f4e\u914d\u7f6e\u673a\u5668\u4e0a\u6709\u6982\u7387\u8bef\u62a5`OCR init timeout: 5s` \u3002[#154](https://github.com/hiroi-sora/Umi-OCR/issues/154) , [#156](https://github.com/hiroi-sora/Umi-OCR/issues/156)\u3002\r\n- \u8c03\u6574\uff1a\u9ed8\u8ba4\u505c\u6b62\u4efb\u52a130\u79d2\u540e\u91ca\u653e\u4e00\u6b21\u5185\u5b58\u3002\r\n\r\n##### [v1.3.4](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.4) `2023.4.26`\r\n<!-- \u4e00\u5468\u5e74\u7eaa\u5ff5\uff01 -->\r\n- \u65b0\u529f\u80fd\uff1a\u622a\u56fe\u9884\u89c8\u7a97\u53e3\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u53ef\u7528\u65b9\u5411\u952e\u5fae\u8c03\u622a\u56fe\u6846\u4f4d\u7f6e\u3002\r\n- \u4feeBug\uff1a\u62d6\u5165\u56fe\u7247\u65f6\u6709\u51e0\u7387\u5361\u9000\u4e3b\u7a97\u53e3 [issue #126](https://github.com/hiroi-sora/Umi-OCR/issues/126) \u3002\r\n- \u4f18\u5316\u4e86\u4e00\u4e9b\u5904\u7406\u6d41\u7a0b\u3002\r\n\r\n##### [v1.3.3](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.3) `2023.3.19`\r\n<!-- 4.5k\u2605 \u6492\u82b1~ -->\r\n- \u65b0\u529f\u80fd\uff1a\u547d\u4ee4\u884c\u6a21\u5f0f\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u8bc6\u56fe\u5b8c\u6210\u7684\u901a\u77e5\u60ac\u6d6e\u7a97\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u81ea\u52a8\u6e05\u7406\u5f15\u64ce\u5185\u5b58\u3002\r\n- \u4fee\u590d\u4e86\u4e00\u4e9bBUG\uff0c\u4f18\u5316\u4e86\u4e00\u4e9bUI\u8868\u73b0\u3002\r\n\r\n##### [v1.3.2](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.2) `2022.12.1`\r\n<!-- 3k\u2605 \u6492\u82b1~ -->\r\n- \u65b0\u529f\u80fd\uff1a\u521b\u5efa\u5f00\u673a\u542f\u52a8\u9879\u65f6\uff0c\u53ef\u9009`\u4e0d\u663e\u793a\u4e3b\u7a97\u53e3`\u3002\r\n- \u65b0\u529f\u80fd\uff1aOCR\u7ed3\u679c\u8f93\u51fa\u5230\u6bcf\u4e2a\u56fe\u7247\u540c\u540d\u7684\u5355\u72ectxt\u6587\u4ef6\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u589e\u52a0\u72ec\u7acb\u7684\u8bbe\u7f6e\u8bed\u8a00\u7a97\u53e3\uff0c\u53ef\u5728\u591a\u5904\u70b9\u5f00\uff0c\u4fbf\u4e8e\u5207\u6362\u8bed\u8a00\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u5408\u5e76\u6bb5\u843d\u6dfb\u52a0`\u5408\u5e76\u81ea\u7136\u6bb5-\u897f\u6587\u6a21\u5f0f`\uff0c\u53ef\u5728\u82f1\u6587\u6bb5\u843d\u6362\u884c\u65f6\u8865\u5145\u7a7a\u683c\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u5feb\u6377\u8bc6\u56fe\u53ef\u9009`\u81ea\u52a8\u6e05\u7a7a\u9762\u677f`\uff0c\u53ea\u663e\u793a\u672c\u6b21\u8bc6\u522b\u7ed3\u679c\uff0c\u4e14\u9690\u85cf\u65f6\u95f4\u4fe1\u606f\u3002\r\n- \u4fee\u590d\u4e86\u4e00\u4e9bBUG\u3002\r\n\r\n##### [v1.3.1](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.1) `2022.11.4`\r\n<!-- 2k\u2605 \u6492\u82b1~ -->\r\n- \u4feeBug\uff1a\u5feb\u6377\u952e\u6a21\u5757\u91cd\u5199\uff0c\u5f15\u5165pynput\u5e93\uff0c\u820d\u5f03keyboard\u5e93\uff0c\u89e3\u51b3\u51e0\u7387\u5931\u6548\u3001\u5f55\u5236\u4e0d\u6b63\u786e\u7b49Bug\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u6dfb\u52a0\u5f00\u673a\u81ea\u542f\uff0c\u684c\u9762\u5feb\u6377\u65b9\u5f0f\uff0c\u5f00\u59cb\u83dc\u5355\u5feb\u6377\u65b9\u5f0f\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u591a\u5f00\u8f6f\u4ef6\u65f6\u63d0\u793a\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u622a\u56fe\u65f6\u9690\u85cf\u7a97\u53e3\u3002\r\n- \u8c03\u6574UI\uff1a\u4f7f\u7528\u9891\u7387\u6781\u4f4e\u7684\u8bbe\u7f6e\u9879\u8bbe\u4e3a\u9690\u85cf\u7684\u9ad8\u7ea7\u9009\u9879\u3002\r\n- \u4f18\u5316\uff1a\u68c0\u67e5\u5f15\u64ce\u7ec4\u4ef6\u662f\u5426\u5b58\u5728\u3002\r\n- \u4f18\u5316\uff1a`\u6a2a\u6392-\u5408\u5e76\u591a\u884c-\u81ea\u7136\u6bb5` \u4f18\u5316\u903b\u8f91\uff0c\u652f\u63010~2\u5168\u89d2\u7a7a\u683c\u9996\u884c\u7f29\u8fdb\u3002\r\n\r\n##### [v1.3.0](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.3.0) `2022.9.29`\r\n- \u65b0\u529f\u80fd\uff1a\u6846\u9009\u622a\u5c4f\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u7cfb\u7edf\u6258\u76d8\u56fe\u6807\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u5f15\u64ce\u8fdb\u7a0b\u5e38\u9a7b\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u6587\u672c\u5757\u540e\u5904\u7406\u6a21\u5757\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u81ea\u5b9a\u4e49\u4e3b\u8f93\u51fa\u680f\u5b57\u4f53\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u8bbe\u7f6e\u7a97\u53e3\u5f39\u51fa\u6a21\u5f0f\uff08\u4fdd\u6301\u7f6e\u9876\uff09\u3002\r\n- \u8c03\u6574UI\uff1a\u81ea\u9002\u5e94Win\u98ce\u683c\u7ec4\u4ef6\u3002\r\n- \u4fee\u6b63\u4e86Bug\uff1a\u7cfb\u7edf\u8bed\u8a00\u517c\u5bb9\u6027\u95ee\u9898 [issue #16](https://github.com/hiroi-sora/Umi-OCR/issues/16) \u3002\r\n- \u4fee\u6b63\u4e86Bug\uff1a\u5fae\u4fe1\u56fe\u7247\u7c98\u8d34\u95ee\u9898 [issue #22](https://github.com/hiroi-sora/Umi-OCR/issues/22) \u3002\r\n- \u66f4\u65b0PaddleOCR-json\u6a21\u5757\u81f3`v1.2.1`\uff0c\u63d0\u4f9b\u526a\u8d34\u677f\u652f\u6301\u3002\u5feb\u6377\u8bc6\u56fe\u901a\u8fc7\u526a\u8d34\u677f\u4e2d\u8f6c\uff0c\u65e0\u9700\u518d\u4fdd\u5b58\u4e34\u65f6\u6587\u4ef6\u5230\u786c\u76d8\u3002\r\n\r\n##### [v1.2.6](https://github.com/hiroi-sora/Umi-OCR/tree/release/1.2.6) `2022.9.1`\r\n<!-- Takahara Umi\u9171\u751f\u65e5\u5feb\u4e50~ -->\r\n- \u66f4\u65b0PaddleOCR-json\u6a21\u5757\u81f3`v1.2.0`\uff0c\u63d0\u9ad8\u8bc6\u522b\u901f\u5ea6\u3001\u51c6\u786e\u5ea6\u3002\r\n- \u8c03\u6574UI\uff1a\u66f4\u65b9\u4fbf\u5730\u7528\u4e0b\u62c9\u6846\u5207\u6362\u8bc6\u522b\u8bed\u8a00\u3002\r\n- \u8c03\u6574UI\uff1a\u53ef\u4ee5\u4ece\u4e3b\u7a97\u53e3\u4efb\u610f\u4f4d\u7f6e/\u4efb\u610f\u9009\u9879\u5361\u62d6\u5165\u56fe\u7247\u3002\r\n- \u4fee\u6b63\u4e86Bug\uff1a\u63d0\u9ad8\u7a0b\u5e8f\u5065\u58ee\u6027\uff0c\u589e\u52a0\u542f\u52a8\u5b50\u8fdb\u7a0b\u65f6\u7684\u66f4\u591a\u5f02\u5e38\u5904\u7406\u60c5\u51b5\u3002\r\n- \u4fee\u6b63\u4e86Bug\uff1a\u5f7b\u5e95\u89e3\u51b3\u4e86\u5bf9\u8fb9\u7f18\u8fc7\u7a84\u7684\u56fe\u7247\uff0c\u8bc6\u522b\u7ed3\u679c\u4e0d\u51c6\u786e\u7684\u95ee\u9898 [issue #7](https://github.com/hiroi-sora/Umi-OCR/issues/7) \u3002\r\n- \u4f18\u5316\u9002\u914dPP-OCRv3\u6a21\u578b\uff0c\u5f7b\u5e95\u89e3\u51b3\u4e86v3\u7248\u6a21\u578b\u6bd4v2\u6162\u3001\u4e0d\u51c6\u7684\u95ee\u9898 [issue #4](https://github.com/hiroi-sora/Umi-OCR/issues/4#issuecomment-1141735773) \u3002\r\n\r\n##### v1.2.5 `2022.7.22`\r\n- \u65b0\u529f\u80fd\uff1a\u8ba1\u5212\u4efb\u52a1\u3002\u8bc6\u56fe\u5b8c\u6210\u540e\u6267\u884c\u81ea\u52a8\u5173\u673a\u7b49\u4efb\u52a1\u3002\r\n- \u65b0\u529f\u80fd\uff1a\u53ef\u9009\u62d6\u5165\u6587\u4ef6\u5939\u65f6\u9012\u5f52\u5bfc\u5165\u5b50\u6587\u4ef6\u5939\u4e2d\u6240\u6709\u56fe\u7247\u3002\r\n- \u8c03\u6574UI\uff1a\u6dfb\u52a0\u4e00\u4e9b\u914d\u7f6e\u6587\u4ef6\u7684\u5feb\u6377\u5165\u53e3\u3002\r\n\r\n##### v1.2.4 `2022.6.4`\r\n- \u65b0\u529f\u80fd\uff1a\u53ef\u9009\u8bc6\u522b\u526a\u8d34\u677f\u56fe\u7247\u540e\u81ea\u52a8\u590d\u5236\u8bc6\u522b\u7684\u6587\u672c\u3002\r\n- \u8865\u5145\u529f\u80fd\uff1a\u5feb\u6377\u952e\u8c03\u7528\u526a\u8d34\u677f\u8bc6\u56fe\u65f6\uff0c\u82e5\u7a0b\u5e8f\u7a97\u53e3\u88ab\u6700\u5c0f\u5316\uff0c\u5219\u6062\u590d\u524d\u53f0\u72b6\u6001\u5e76\u632a\u5230\u6700\u524d\u4f4d\u7f6e\u3002\r\n  \r\n##### v1.2.3 `2022.5.31`\r\n- \u65b0\u529f\u80fd\uff1a\u8bfb\u53d6\u526a\u8d34\u677f\u56fe\u7247\u3002\u914d\u7f6e\u5168\u5c40\u5feb\u6377\u952e\u8c03\u7528\u8be5\u529f\u80fd\u3002\r\n\r\n##### v1.2.2 `2022.4.30`\r\n- \u65b0\u529f\u80fd\uff1a\u53ef\u9009\u4efb\u52a1\u5b8c\u6210\u540e\u81ea\u52a8\u6253\u5f00\u8f93\u51fa\u6587\u4ef6\u6216\u76ee\u5f55\u3002\r\n\r\n##### v1.2.1 `2022.4.16`\r\n- \u66f4\u65b0PaddleOCR-json\u6a21\u5757\u81f3`v1.1.1`\uff0c\u4fee\u6b63\u4e86\u53ef\u80fd\u5f97\u5230\u9519\u8bef\u5305\u56f4\u76d2\u7684\u6f0f\u6d1e\u3002\r\n\r\n##### v1.2.0 `2022.4.8`\r\n- \u53ef\u9009\u751f\u6210\u56fe\u6587\u94fe\u63a5.md\u6587\u4ef6\uff0c\u4f5c\u4e3a\u7d22\u5f15\u4f7f\u7528\u6709\u66f4\u4f73\u7684\u89c2\u611f\u3002\r\n- \u4fee\u6539\u8bbe\u7f6e\u9762\u677f\u7684\u6837\u5f0f\uff0c\u6539\u4e3a\u6eda\u52a8\u9762\u677f\u4ee5\u5bb9\u7eb3\u66f4\u591a\u8bbe\u7f6e\u9009\u9879\u3002\r\n- \u7528\u6237\u4fee\u6539\u914d\u7f6e\u9879\u540e\u53ef\u81ea\u52a8\u4fdd\u5b58\u3002\r\n\r\n##### v1.1.1 `2022.3.30`\r\n- \u4fee\u6b63\u4e86Bug\uff1a\u9000\u51fa\u5ffd\u7565\u533a\u57df\u7a97\u53e3\u65f6\uff0cOCR\u5b50\u8fdb\u7a0b\u672a\u5173\u95ed\u3002\r\n\r\n##### v1.1.0 `2022.3.30`\r\n- \u65b0\u529f\u80fd\uff1a\u5ffd\u7565\u533a\u57df\u7a97\u53e3\u4ee5\u865a\u7ebf\u6846 \u5c55\u793a\u8bc6\u522b\u51fa\u7684\u6587\u5b57\u5757\u3002\r\n\r\n##### v1.0.0 `2022.3.28`\r\n- \u201c\u68a6\u5f00\u59cb\u7684\u5730\u65b9\u201d\r\n\r\n## \u611f\u8c22\r\n\r\n\u672c\u9879\u76ee\u6838\u5fc3\u5f15\u64ce\u7ec4\u4ef6\u6e90\u81ea [PaddlePaddle/PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)\uff1a\r\n> Awesome multilingual OCR toolkits based on PaddlePaddle\r\n\r\n##### \u672c\u9879\u76ee\u4e2d\u6240\u4f7f\u7528\u7684\u5e93\uff1a\r\n\r\n##### [google/python-gflags](https://github.com/google/python-gflags)\r\n> Python implementation of the Google commandline flags module.\r\n\r\n##### [moses-palmer/pynput](https://github.com/moses-palmer/pynput)\r\n> This library allows you to control and monitor input devices.\r\n\r\n##### [Infinidat/infi.systray](https://github.com/Infinidat/infi.systray)\r\n> A Windows system tray icon with a right-click context menu.\r\n\r\n##### [Pwm](https://pmw.sourceforge.net/)\r\n> Pmw is a toolkit for building high-level compound widgets in Python using the Tkinter module.\r\n\r\n## Umi-\u7cfb\u5217\u56fe\u7247\u5904\u7406\u8f6f\u4ef6\r\n\r\n**Umi-OCR \u6279\u91cf\u56fe\u7247\u8f6c\u6587\u5b57\u8f6f\u4ef6 \u25c1**\r\n\r\n[Umi-CUT \u6279\u91cf\u56fe\u7247\u53bb\u9ed1\u8fb9/\u88c1\u526a/\u538b\u7f29\u8f6f\u4ef6](https://github.com/hiroi-sora/Umi-CUT)\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Umi-OCR \u6587\u5b57\u8bc6\u522b\u5de5\u5177",
    "version": "1.2.1",
    "project_urls": {
        "Homepage": "https://github.com/yanjlee/Umi-OCR"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c92589e747fc555ecb6b539050bcca44d4ffe60a8c7b0a48b428ebdd5d17eb0d",
                "md5": "9b7e35940f7b658b0c3790faf8fad9db",
                "sha256": "2e3fe0de41f7dc6fab9aa15a8bd1d5881a78424f8b8d0add40918acbaf81566e"
            },
            "downloads": -1,
            "filename": "Umi_OCR-1.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9b7e35940f7b658b0c3790faf8fad9db",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 296920,
            "upload_time": "2024-06-01T08:39:45",
            "upload_time_iso_8601": "2024-06-01T08:39:45.740323Z",
            "url": "https://files.pythonhosted.org/packages/c9/25/89e747fc555ecb6b539050bcca44d4ffe60a8c7b0a48b428ebdd5d17eb0d/Umi_OCR-1.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "38bbaca336b2fb6fe9642bc9e3c689bd2f4cb9824235e80270786b5d8e991b68",
                "md5": "0b438fa778694b306533df00ab9a2f56",
                "sha256": "3f69075a251ae58535bdf9249ad7748c53c82d419909187e96ad5a6b80243c30"
            },
            "downloads": -1,
            "filename": "umi_ocr-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "0b438fa778694b306533df00ab9a2f56",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 290364,
            "upload_time": "2024-06-01T08:39:48",
            "upload_time_iso_8601": "2024-06-01T08:39:48.221339Z",
            "url": "https://files.pythonhosted.org/packages/38/bb/aca336b2fb6fe9642bc9e3c689bd2f4cb9824235e80270786b5d8e991b68/umi_ocr-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-01 08:39:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yanjlee",
    "github_project": "Umi-OCR",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "psutil",
            "specs": [
                [
                    "==",
                    "5.9.2"
                ]
            ]
        },
        {
            "name": "pynput",
            "specs": [
                [
                    "==",
                    "1.7.6"
                ]
            ]
        },
        {
            "name": "pyperclip",
            "specs": [
                [
                    "==",
                    "1.8.2"
                ]
            ]
        },
        {
            "name": "pywin32",
            "specs": [
                [
                    "==",
                    "304"
                ]
            ]
        },
        {
            "name": "pywin32_ctypes",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "windnd",
            "specs": [
                [
                    "==",
                    "1.0.7"
                ]
            ]
        },
        {
            "name": "winshell",
            "specs": [
                [
                    "==",
                    "0.6"
                ]
            ]
        },
        {
            "name": "pillow",
            "specs": [
                [
                    "==",
                    "9.5"
                ]
            ]
        },
        {
            "name": "pyinstaller",
            "specs": [
                [
                    "==",
                    "5.10"
                ]
            ]
        }
    ],
    "lcname": "umi-ocr"
}
        
Elapsed time: 0.27202s