Skip to content

Commit

Permalink
更新alpha3 , 修复一些bug:
Browse files Browse the repository at this point in the history
1.剪贴板为文件夹时,未弹出窗口
2.若点按钮启动系统截图,一段时间内不能启动第二次截图
3.内置截图模式的debug快捷键不响应
  • Loading branch information
hiroi-sora committed Nov 2, 2022
1 parent 9d51725 commit a92cfb9
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 19 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
</a>
</h3>
</div>
<br>

- **免费**:本项目所有代码开源,完全免费。
- **方便**:解压即用,离线运行,无需网络。
Expand Down Expand Up @@ -267,7 +268,7 @@ 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) ,下载对应语言的字典文件。
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` 。
Expand Down
2 changes: 1 addition & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from utils.config import Umi
from ui.win_main import MainWin

Umi.ver = '1.3.1 alpha2'
Umi.ver = '1.3.1 alpha3'
Umi.pname = 'Umi-OCR'
Umi.name = f'{Umi.pname} v{Umi.ver}'
Umi.website = 'https://github.com/hiroi-sora/Umi-OCR'
Expand Down
32 changes: 19 additions & 13 deletions ui/win_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ def initTop(): # 顶部按钮
def initTab1(): # 表格卡
tabFrameTable = tk.Frame(self.notebook) # 选项卡主容器
self.notebookTab.append(tabFrameTable)
self.notebook.add(tabFrameTable, text=f'{"处理列表": ^10s}')
self.notebook.add(tabFrameTable, text=f'{"批量处理": ^10s}')
# 顶栏
fr1 = tk.Frame(tabFrameTable)
fr1.pack(side='top', fill='x', padx=1, pady=1)
Expand Down Expand Up @@ -412,20 +412,20 @@ def changeColor(configName, title=None):
tk.Label(fr1, text='  组合键:').pack(side='left')
fr11 = tk.Frame(fr1)
fr11.pack(side='left')
self.balloon.bind(fr11, '若快捷键设为多个按键的组合,\n则必须在该时间之内全部按下,才能触发')
tk.Label(fr11, text='触发时间').pack(side='left')
tk.Entry(fr11,
textvariable=Config.getTK('hotkeyMaxTtl'), width=4).pack(side='left')
tk.Label(fr11, text='秒,').pack(side='left')
fr12 = tk.Frame(fr1)
fr12.pack(side='left')
self.balloon.bind(
fr12, '宽松:当前按下的按键只要包含设定的组合键,就能触发\n严格:当前按下的按键必须与设定的组合一致,才能触发')
tk.Label(fr12, text='判定').pack(side='left')
ttk.Radiobutton(fr12, text='宽松',
fr11, '宽松:当前按下的按键只要包含设定的组合键,就能触发\n严格:当前按下的按键必须与设定的组合一致,才能触发')
tk.Label(fr11, text='触发判定').pack(side='left')
ttk.Radiobutton(fr11, text='宽松',
variable=Config.getTK('isHotkeyStrict'), value=False).pack(side='left')
ttk.Radiobutton(fr12, text='严格',
ttk.Radiobutton(fr11, text='严格',
variable=Config.getTK('isHotkeyStrict'), value=True).pack(side='left')
fr12 = tk.Frame(fr1)
fr12.pack(side='left')
self.balloon.bind(fr12, '必须在该时间之内\n连续按下组合中的所有按键,才能触发')
tk.Label(fr12, text=',时限').pack(side='left')
tk.Entry(fr12,
textvariable=Config.getTK('hotkeyMaxTtl'), width=4).pack(side='left')
tk.Label(fr12, text='秒').pack(side='left')

fr2 = tk.Frame(fQuick)
fr2.pack(side='top', fill='x', pady=2, padx=5)
Expand Down Expand Up @@ -1051,6 +1051,8 @@ def runClipboard(self, e=None): # 识别剪贴板
return
clipData = Tool.getClipboardFormat() # 读取剪贴板

failFlag = False

# 剪贴板中是位图(优先)
if isinstance(clipData, int):
self.startSingleClipboard()
Expand All @@ -1071,8 +1073,12 @@ def runClipboard(self, e=None): # 识别剪贴板
self.clearTable() # 清空主表
self.addImagesList(clipData) # 添加到主表
self.run() # 开始任务任务
else:
failFlag = True
else: # 剪贴板中不是支持的格式
failFlag = True

else:
if failFlag:
self.panelOutput('剪贴板中未查询到图片信息\n')
# 失败也置顶
self.gotoTop() # 主窗置顶
Expand Down
7 changes: 4 additions & 3 deletions ui/win_screenshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ def __initWin(self): # 初始化窗体
self.flashList = [] # 闪光元素
# 绑定全局事件
Hotkey.add('esc', self.__onClose) # 绑定Esc退出
Hotkey.add('Ctrl+Shift+Alt+D', self.__switchDebug) # 切换调试信息
Hotkey.add('ctrl+shift+alt+d', self.__switchDebug) # 切换调试信息
# 绑定画布事件
self.canvas.bind(f'<Button-1>', self.__onDown) # 左键按下
self.canvas.bind(f'<Button-3>', self.__repaint) # 右键按下
Expand Down Expand Up @@ -382,15 +382,16 @@ def closeFlash(): # 关闭闪光
def __switchDebug(self, event=None): # 切换显示/隐藏调试信息
if not self.isInitGrab:
return
print('__switchDebug')
color = 'red'
if self.debugList: # 删除调试信息
Config.set('isDebug', False)
for i in self.debugList:
self.canvas.delete(i)
self.debugList = []
self.__hideElement(self.debugXYBox, 4)
self.__hideElement(self.debugXYText, 2)
else: # 创建调试信息
Config.set('isDebug', True)
for index, box in enumerate(self.scBoxList):
p1x, p1y, p2x, p2y = box
p1x -= self.scBoxVirtual[0]
Expand All @@ -416,7 +417,7 @@ def __switchDebug(self, event=None): # 切换显示/隐藏调试信息
self.debugList.append(e)
e = self.canvas.create_text(p1x+15, p1y+43,
font=('', 10, ''), fill=color, anchor='nw',
text=f'按 Ctrl+Shift+Alt+D 关闭调试信息')
text=f'按 Ctrl+Shift+Alt+D 退出调试模式')
self.debugList.append(e)
self.canvas.lift(self.debugXYBox) # 移动到最上方
self.canvas.lift(self.debugXYText) # 移动到最上方
Expand Down
4 changes: 3 additions & 1 deletion utils/pynput_hotkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ def _onMouseClick(x, y, button, pressed): # 鼠标按钮回调

def add(self, hotkey, callback, isPress=True):
'''添加一个快捷键组合监听。按下时调用callback'''
hotkey = hotkey.lower() # 转小写
# 判断重复
for h in self.hotkeyList:
if h.isNameEQ(hotkey) and h.callback.__name__ == callback.__name__ \
Expand Down Expand Up @@ -254,7 +255,8 @@ def send(self, hotkey):
pass
# 手动在已按字典中移除
for name in keynameList:
del self.pressDict[name]
if name in self.pressDict:
del self.pressDict[name]

def read(self, callback):
'''录制快捷键。按下并松开一组按键,将按键序列字符串发送到回调函数'''
Expand Down

0 comments on commit a92cfb9

Please sign in to comment.