没事去看漫画,但是有很多生肉不好啃,也不好一个字一个字打上去翻译,所以写个划屏翻译,在任意位置按下快捷键后鼠标划定矩形区域识别翻译
基于easyOCR与有道翻译接口(参考大佬写的Python 3 最新有道翻译爬取,破解反爬机制,解决{“errorCode”:50}错误)
效果大概如下(识别率和速度取决于OCR速度与翻译接口网速)
主要使用的库:
PySimpleGUIQt
pynput
PIL
easyocr
numpy
使用前需要下载easyOCR的模型,如果要GPU识别加速的话还要下载CUDA
代码能力不行,望大佬们 海涵,不吝赐教
代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @FileName: main.py
import PySimpleGUIQt as sg
import pynput
from PIL import ImageGrab
import easyocr
import numpy as np
import json
import youdao
key_start = "f10"
key_end = "f9"
#languages = ['en', 'ch_sim']
languages = ['en']
language_src = 'en'
language_dest = 'zh-CHS'
GPU_CUDA_ONOROFF = True
#使用GPU加速会快上很多倍(据说),需要下载CUDA
MODULE_PATH = r'.\module'
#模型地址,因为我不喜欢它默认的都塞c盘的路径
D = "Y2FYu%TNSbMCxc3t2u^XT"
#有道翻译生成salt的密钥,这个会变动,所以提出来方便改
def listen_keyboark(key_start, key_end):
#在后台监听快捷键
#用这个函数进行阻塞,直到得到shortcut_key_start,挺怪的思路hh
with pynput.keyboard.Events() as event:
for i in event:
if isinstance(i, pynput.keyboard.Events.Press):
try:
if i.key.name == key_start:
return True
elif i.key.name == key_end:
return False
except AttributeError:
#说明这个是普通按键。
if i.key.char == key_start:
return True
elif i.key.char == key_end:
return False
return False
def get_xy():
#监听鼠标按下松开的位置坐标
x1, y1, x2, y2 = 0,0,0,0
with pynput.mouse.Events() as event:
for i in event:
if