游戏翻译工具截屏翻译工具源代码 图片单词识别

游戏翻译工具截屏翻译工具源代码

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 14 23:24:05 2019
截取屏幕英文单词并翻译
QQ群:476842922(欢迎加群讨论学习)
1.pip各种包
2.字典文件dictNewN.txt
3.有中午将出现错误(bug)
4.按F2键 开始截屏识别单词
@author: Administrator
"""
from PIL import ImageGrab
import re
import threading
import time
import sys, os
from PIL import Image
import pytesseract
from pynput.keyboard import Controller,Key,Listener
import wx 

# 监听按压
def on_press(key):
    try:
        print("pressing:",format(key.char))
    except AttributeError:
        print("pressing:",format(key))
 
# 监听释放
def on_release(key):
    print("release:",format(key))
 
    if key==Key.esc:
        # 停止监听
        return False
    if key==Key.f2:
        frame.contrl.Clear()#clear  screen
        frame.contrl.AppendText("F2 key:Capture shot recognition...\n")
        im = ImageGrab.grab() 
        # 参数 保存截图文件的路径
        im.save('aaa.jpeg')
        print("F2...F2")
    	#im = ImageGrab.grab()
    	#im.save('aaa.jpeg')
        text=pytesseract.image_to_string(Image.open("aaa.jpeg"),lang='eng')
        print(re.sub("[^A-Za-z0-9 ]","",text))
        print("**!!!!!!!*****print(text)*********")
        #print(text.replace('\n',' '))
        print("=====================")
        strSub=text.replace('\n',' ')
        strWord=re.sub("[^A-Za-z0-9 ]","",strSub)
        print("dic find word ..........^_^")
        listOne=[]
        s=strWord
        print(s)
        m=re.sub("[^A-Za-z0-9 .]","",s)
        print(m)
        m=m.replace("."," ")
        print("******************")
        m=m.lower()#转换为小写
        listOne=m.split(" ")
        print(listOne)
        print(len(listOne))#list have word number.len()
        
        file00 = open("C:\\Users\\Administrator\\dictNewN.txt", "r")
        WordLog = open('Log.txt','a+')#record words.....
        content = file00.read()
        content.strip()
        list00 = content.splitlines()# 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表
        dict00 = {}
        for i in list00:
            list01 = i.split("      ")#将单词key与解释(值)加入字典
            for j in range(len(list01) - 1):
                if list01[j]:
                    dict00[list01[j]] = list01[-1]#添加元素
        
        for i in range(len(listOne)):
            if listOne[i] in dict00:
                print(listOne[i]+"->"+dict00[listOne[i]])
                #frame.textctrl.SetDefaultStyle(wx.TextAttr("RED"))
                if dict00[listOne[i]].find("n.")!=-1:
                    frame.contrl.SetDefaultStyle(wx.TextAttr(wx.RED))
                elif dict00[listOne[i]].find("v.")!=-1:
                    frame.contrl.SetDefaultStyle(wx.TextAttr(wx.YELLOW))
                elif dict00[listOne[i]].find("adv.")!=-1:
                    frame.contrl.SetDefaultStyle(wx.TextAttr(wx.GREEN))
                elif dict00[listOne[i]].find("adj.")!=-1:
                    frame.contrl.SetDefaultStyle(wx.TextAttr(wx.BLUE))
                else:
                    frame.contrl.SetDefaultStyle(wx.TextAttr(wx.BLACK))
                frame.contrl.AppendText(listOne[i]+"->"+dict00[listOne[i]]+"\n")
                WordLog.write(listOne[i]+"->"+dict00[listOne[i]]+"\n")
            else:
                print(listOne[i]+"->"+"no find it.")
                #frame.contrl.AppendText(listOne[i]+"->"+"no find it."+"\n") #建议不打印了
        
        #frame.contrl.AppendText(strWord)
 
# 开始监听
def start_listen():
    with Listener(on_press=on_press,on_release=on_release) as listener:
        listener.join()


def ListenKey():
    kb=Controller()# 实例化键盘
    start_listen() # 开始监听,按esc退出监听

class MainWindow(wx.Frame):
    """We simply derive a new class of Frame."""
    def __init__(self,parent,title):
        wx.Frame.__init__(self,parent,title=title,size=(250,600))
        self.contrl= wx.TextCtrl(self,style=wx.TE_MULTILINE|wx.TE_WORDWRAP|wx.TE_READONLY|wx.TE_RICH2|wx.STAY_ON_TOP)
        #self.contrl.AppendText("appended text")
        self.SetTransparent(200)#set Transparent.....
        #self.SetWindowStyle(wx.STAY_ON_TOP)#
        self.Show(show=True)

app = wx.App(False)
frame = MainWindow(None,"Kingdoms and Castles Game plug")
#frame.Show(show=True)
t=threading.Thread(target=ListenKey)
t.start()
app.MainLoop()

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值