python3 日文截图翻译

  • 截图翻译
    • 源代码
    • 效果
  • 实时翻译
    • 源代码
    • 效果
  • 扩充

最近一直在玩日文游戏,可惜看不懂日文。在自己动手解包汉化无果后无奈之下只能写一个日文的截图翻译。
以下是完整代码。
注意百度ocr的参数请填写成自己的

截图翻译

源代码

import tkinter
from tkinter import *
import os
from PIL import ImageGrab
from time import sleep
from aip import AipOcr
# import clipboard
root = tkinter.Tk()
#设置窗口大小
root.geometry('300x350')
#设置窗口名字
root.title('日文截图翻译')
#设置窗口大小不可改变
root.resizable(False, False)
#用来显示全屏幕截图并响应二次截图的窗口类
def my_translate(in_str):import requestsimport jsonurl = "https://aidemo.youdao.com/trans"data = {"q": in_str,"from": "ja","to": "zh-CHS"}headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36","Referer": "https://ai.youdao.com/product-fanyi.s"}response = requests.post(url, data=data, headers=headers)html_str = response.content.decode()  # json字符串dict_ret = json.loads(html_str)ret = dict_ret["translation"]# print("翻译结果是:", ret)# print("\n")return ret
def get_file_content(filePath):with open(filePath, 'rb') as fp:os.remove(filePath)return fp.read()
def vcode2str(img_url):""" 你的 APPID AK SK """APP_ID = "you's APP_ID"API_KEY = "you's API_KEY"SECRET_KEY = "you's SECRET_KEY"client = AipOcr(APP_ID, API_KEY, SECRET_KEY)image = get_file_content(img_url)""" 调用通用文字识别, 图片参数为本地图片 """client.basicGeneral(image);""" 如果有可选参数 """options = {}options["language_type"] = "JAP"options["detect_direction"] = "false"options["detect_language"] = "false"options["probability"] = "false"""" 带参数调用通用文字识别, 图片参数为本地图片 """res=client.basicGeneral(image, options)strx=""for tex in res["words_result"]:#遍历结果strx+=tex["words"]#每一行strx+="\n"return strx
class MyCapture:def __init__(self, png):#变量X和Y用来记录鼠标左键按下的位置self.X = tkinter.IntVar(value=0)self.Y = tkinter.IntVar(value=0)#屏幕尺寸screenWidth = root.winfo_screenwidth()screenHeight = root.winfo_screenheight()#创建顶级组件容器self.top = tkinter.Toplevel(root, width=screenWidth, height=screenHeight)#不显示最大化、最小化按钮self.top.overrideredirect(True)self.canvas = tkinter.Canvas(self.top,bg='white', width=screenWidth, height=screenHeight)#显示全屏截图,在全屏截图上进行区域截图self.image = tkinter.PhotoImage(file=png)self.canvas.create_image(screenWidth//2, screenHeight//2, image=self.image)#鼠标左键按下的位置def onLeftButtonDown(event):self.X.set(event.x)self.Y.set(event.y)#开始截图self.sel = Trueself.canvas.bind('<Button-1>', onLeftButtonDown)#鼠标左键移动,显示选取的区域def onLeftButtonMove(event):if not self.sel:returnglobal lastDrawtry:#删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形self.canvas.delete(lastDraw)except Exception as e:passlastDraw = self.canvas.create_rectangle(self.X.get(), self.Y.get(), event.x, event.y, outline='black')self.canvas.bind('<B1-Motion>', onLeftButtonMove)#获取鼠标左键抬起的位置,保存区域截图def onLeftButtonUp(event):global picself.sel = Falsetry:self.canvas.delete(lastDraw)except Exception as e:passsleep(0.1)#考虑鼠标左键从右下方按下而从左上方抬起的截图left, right = sorted([self.X.get(), event.x])top, bottom = sorted([self.Y.get(), event.y])pic = ImageGrab.grab((left+1, top+1, right, bottom))#弹出保存截图对话框pic.save('./temp.png')#关闭当前窗口self.top.destroy()self.canvas.bind('<ButtonRelease-1>', onLeftButtonUp)
#让canvas充满窗口,并随窗口自动适应大小self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES)#开始截图
def buttonCaptureClick():#最小化主窗口root.state('icon')sleep(0.5)filename = 'temp.png'
#grab()方法默认对全屏幕进行截图im = ImageGrab.grab()im.save(filename)im.close()#显示全屏幕截图w = MyCapture(filename)buttonCapture.wait_window(w.top)root.state('normal')strx = vcode2str("./temp.png")strx = my_translate(strx)# clipboard.copy(strx)T.delete('1.0','end')T.insert(END, strx)#截图结束,恢复主窗口,并删除临时的全屏幕截图文件
buttonCapture = tkinter.Button(root, text='截图', command=buttonCaptureClick)
T = Text(root, height=15, width=100)
T.pack(side=LEFT)
buttonCapture.place(x=110, y=10, width=80, height=20)
#启动消息主循环
root.mainloop()

效果

我们试一下对下面这张图片进行翻译

翻译结果

还行吧就是界面丑了点

实时翻译

源代码

import tkinter
from tkinter import *
import os
from PIL import ImageGrab
from time import sleep
from aip import AipOcr
import numpy as np
from PIL import Image
import threading
#用来显示全屏幕截图并响应二次截图的窗口类
imdata =()#接收截图位置的全局变量
flag = 0#控制实时翻译开关
string = ""#储存上次翻译结果的变量
class MyCapture:def __init__(self, png):#变量X和Y用来记录鼠标左键按下的位置self.X = tkinter.IntVar(value=0)self.Y = tkinter.IntVar(value=0)#屏幕尺寸screenWidth = root.winfo_screenwidth()screenHeight = root.winfo_screenheight()#创建顶级组件容器self.top = tkinter.Toplevel(root, width=screenWidth, height=screenHeight)#不显示最大化、最小化按钮self.top.overrideredirect(True)self.canvas = tkinter.Canvas(self.top,bg='white', width=screenWidth, height=screenHeight)#显示全屏截图,在全屏截图上进行区域截图self.image = tkinter.PhotoImage(file=png)self.canvas.create_image(screenWidth//2, screenHeight//2, image=self.image)#鼠标左键按下的位置def onLeftButtonDown(event):self.X.set(event.x)self.Y.set(event.y)#开始截图self.sel = Trueself.canvas.bind('<Button-1>', onLeftButtonDown)#鼠标左键移动,显示选取的区域def onLeftButtonMove(event):if not self.sel:returnglobal lastDrawtry:#删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形self.canvas.delete(lastDraw)except Exception as e:passlastDraw = self.canvas.create_rectangle(self.X.get(), self.Y.get(), event.x, event.y, outline='black')self.canvas.bind('<B1-Motion>', onLeftButtonMove)#获取鼠标左键抬起的位置,保存区域截图def onLeftButtonUp(event):global picglobal imdataself.sel = Falsetry:self.canvas.delete(lastDraw)except Exception as e:passsleep(0.5)#考虑鼠标左键从右下方按下而从左上方抬起的截图left, right = sorted([self.X.get(), event.x])top, bottom = sorted([self.Y.get(), event.y])imdata = (left+1,top+1,right,bottom)#关闭当前窗口self.top.destroy()self.canvas.bind('<ButtonRelease-1>', onLeftButtonUp)
#让canvas充满窗口,并随窗口自动适应大小self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES)def my_translate(in_str):import requestsimport jsonurl = "https://aidemo.youdao.com/trans"data = {"q": in_str,"from": "ja","to": "zh-CHS"}headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36","Referer": "https://ai.youdao.com/product-fanyi.s"}response = requests.post(url, data=data, headers=headers)html_str = response.content.decode()  # json字符串dict_ret = json.loads(html_str)try:ret = dict_ret["translation"]return retexcept Exception as identifier:return "翻译错误"
def get_file_content(filePath):with open(filePath, 'rb') as fp:os.remove(filePath)return fp.read()
def vcode2str(image):""" 你的 APPID AK SK """APP_ID = "you's APP_ID"API_KEY = "you's API_KEY"SECRET_KEY = "you's SECRET_KEY"client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# image = get_file_content(img_url)""" 调用通用文字识别, 图片参数为本地图片 """# image = Image.fromarray(np.uint8(image)).tobytes()client.basicGeneral(image);""" 如果有可选参数 """options = {}options["language_type"] = "JAP"options["detect_direction"] = "false"options["detect_language"] = "false"options["probability"] = "false"""" 带参数调用通用文字识别, 图片参数为本地图片 """res=client.basicGeneral(image, options)strx=""try:for tex in res["words_result"]:#遍历结果strx+=tex["words"]#每一行strx+="\n"return strxexcept Exception as identifier:return " "def morewile():global stringwhile flag ==1:im = ImageGrab.grab(imdata)im.save('./temp.png')strx = vcode2str(get_file_content("./temp.png"))strx = my_translate(strx)if string != strx:T.delete('1.0','end')T.insert(END, strx)# sleep(1)
def buttonCaptureClick():global flagglobal imdata#最小化主窗口# root.state('icon')# sleep(0.5)filename = 'temp.png'#grab()方法默认对全屏幕进行截图im = ImageGrab.grab()im.save(filename)im.close()#显示全屏幕截图w = MyCapture(filename)buttonCapture.wait_window(w.top)root.state('normal')flag = 1thread = threading.Thread(target = morewile)thread.start()# clipboard.copy(strx)
def trStop():global flagflag = 0
# import clipboard
root = tkinter.Tk()
#设置窗口大小
root.geometry('300x350')
#设置窗口名字
root.title('日文截图翻译')
#设置窗口大小不可改变
root.resizable(False, False)
buttonCapture = tkinter.Button(root, text='截图', command=buttonCaptureClick)
buttonStop = tkinter.Button(root, text='结束', command=trStop)
T = Text(root, height=15, width=100)
T.pack(side=LEFT)
buttonCapture.place(x=50, y=10, width=80, height=20)
buttonStop.place(x=160, y=10, width=80, height=20)
#启动消息主循环
root.mainloop()

效果

其实和上面一样,只不过设定区域之后对该区域进行多此截图翻译

扩充

其实通过代码可以看出来只要动一下几个参数就可以翻译其他语言了,这里我就不直接写明了,大家可以自己查阅一下。

python3 日文截图翻译和实时翻译相关推荐

  1. python调用百度翻译-python3调用百度翻译API实时翻译的实例代码

    python3调用百度翻译API实现实时翻译 今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个 ...

  2. python软件菜单翻译_制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) 翻译软件上传到github上. 源码地址: 源码 软件截图 主要的思想 界面方面 界面主要采用PyQt5的QtDesigner来制作, ...

  3. python软件菜单翻译_制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)!

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) @(目录) 翻译软件上传到github上. 源码地址: 软件截图 主要的思想 界面方面 界面主要采用PyQt5的QtDesigner来 ...

  4. python 实时翻译_利用Python实现录音播放并翻译,真正的实时进行翻译

    文章目录有了它,实现实时翻译还远吗? 一.还有3秒到达战场 二.效果展示 四.调用API接口的准备工作 五.开发过程详细介绍 (一)准备工作(二)开发1.界面部分2.音频录制部分的开发(2)recor ...

  5. 制作属于自己的翻译软件(基于PyQt5+Python+实时翻译)

    制作属于自己的翻译软件(基于PyQt5+Python+实时翻译) @(目录) 软件截图 主要的思想 界面方面 源码: https://github.com/LiYangSir/Translate    ...

  6. 什么软件可以语音实时翻译?这些软件你值得拥有

      最近我收到了小伙伴的私信,他最近报了一门外语选修课,想着拓展一下兴趣,但是他听了几节课发现,外教老师的语速实在太快了,就算是集中注意力,也有一些不懂的词句.其实我们可以尝试使用一些软件来进行语音实 ...

  7. Meta 开发 AI 语音助手,用于创建虚拟世界和实时翻译

    编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) Meta 在近日的「用人工智能构建元宇宙」的讨论会上,展示了最新的 AI 黑科技 「Builder Bot」 ,并且在此次会议上 ...

  8. 扎克伯格曝光Meta的小目标:AI自动生成元宇宙,实时翻译所有语言

    来源:机器之心 本文约2400字,建议阅读5分钟 它们都将成为元宇宙时代的杀手级 APP? Meta 正在致力于通过语音生成元宇宙世界的人工智能研究,还有很多神奇的技术.首席执行官马克 · 扎克伯格本 ...

  9. 友益文书类似软件_网易有道词典笔,让你的英文书也有实时翻译功能

    说起网易有道,大家一定会在第一时间想到「有道词典」这款产品.作为国内知名度最高的词典 app 之一,有道词典在 iOS.Android.Windows.macOS.Linux 等多个平台都给大家带来了 ...

最新文章

  1. linux系统vim程序编译器,Linux学习:vim程序编辑器
  2. 小科知道20211202
  3. c/c++多参数的问题
  4. centos6 yum安装mysql5.6_centos 6.5 yum安装mysql 5.6
  5. Mr.J--JS事件监听(捕获冒泡)
  6. MATLAB基础学习笔记01:初探MATLAB世界
  7. 蒋步星:轻量级大数据计算引擎
  8. 每日的代码量真的重要么?
  9. 基于Android Ndk/Jni的内存泄漏检测
  10. excel 与mysql交互_excel和数据库交互
  11. ip地址是计算机设备在网络上的地址,如何查看主机ip 如何查看与自己电脑相连设备的IP地址...
  12. 医院影像图像科室工作站PACS系统 DICOM 三维图像后处理与重建
  13. 吃透浏览器安全(同源限制/XSS/CSRF/中间人攻击)
  14. go编译找不到包golang.org/x/net
  15. php实训制作登录界面总结,php实训报告心得体会
  16. 中职教资证计算机应用,中职计算机教师资格证只能教中职学校的吗
  17. ZDNS联合中兴为埃塞俄比亚建设国家顶级域名系统
  18. 云课堂计算机测试答案,2020智慧职教云课堂计算机应用基础答案最新最全章节测试答案...
  19. [AV1] AV1 Encoder代码流程图
  20. python执行CMD指令,并获取返回

热门文章

  1. 微信公众平台接口程序定制菜单
  2. matlab筛选excel数据统计,#excel筛选数据#如何用excel表格中的数据制图
  3. 天语W700 adb驱动解决
  4. JCG836pro路由器刷入breed
  5. vim之YouCompleteMe插件配置
  6. 宝马汽车与中国马文化系列展示
  7. 美团基于知识图谱的剧本杀标准化建设与应用
  8. vue中css写法_vue css 写法大全
  9. 在线社交网络影响力分析——总结
  10. Django! 褪去浮华