实时翻译屏幕插件

程序插件的功能是:点击按钮,将获取屏幕截图,然后翻译输出图片。(目前只支持翻译英语)

要实现这个功能,我们可以使用Python编程语言,结合一些库来完成。以下是一个简单的实现方案:

  1. 使用pywin32库创建置顶窗口并添加按钮。
  2. 使用pyautogui库获取屏幕截图。
  3. 使用opencv-python库进行图片处理。
  4. 使用pytesseract库识别截图中的英语文字。
  5. 使用googletrans库将英语翻译成中文。
  6. 使用PIL库将翻译后的中文添加到截图上,并在屏幕上显示。

首先,请确保已安装所需库:

pip install pywin32 pyautogui opencv-python pytesseract googletrans==4.0.0-rc1 pillow

 然后,您可以使用以下代码实现插件功能:

import cv2
import pytesseract
from googletrans import Translator
from PIL import Image
import pyautogui
import win32gui
import win32con
import win32ui
from ctypes import windll
import sys
import os

def create_top_button():
    wnd = win32gui.CreateWindowEx(
        win32con.WS_EX_TOPMOST,
        win32gui.RegisterClass(win32gui.WNDCLASS()),
        'Translate Button',
        win32con.WS_OVERLAPPEDWINDOW | win32con.WS_VISIBLE,
        100,
        100,
        150,
        50,
        None,
        None,
        win32gui.GetModuleHandle(None),
        None
    )

    btn_translate = win32gui.CreateWindow(
        'BUTTON',
        'Translate',
        win32con.WS_CHILD | win32con.WS_VISIBLE,
        30,
        10,
        80,
        25,
        wnd,
        1000,
        win32gui.GetModuleHandle(None),
        None
    )

    def on_click(hwnd, msg, wparam, lparam):
        if wparam == 1000:
            capture_and_translate()

    win32gui.SetWindowLong(wnd, win32con.GWL_WNDPROC, on_click)
    win32gui.ShowWindow(wnd, win32con.SW_SHOW)
    win32gui.UpdateWindow(wnd)
    win32gui.PumpMessages()

def capture_and_translate():
    screenshot = pyautogui.screenshot()
    screenshot.save('screenshot.png')

    img = cv2.imread('screenshot.png')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    text = pytesseract.image_to_string(gray, lang='eng')

    translator = Translator(service_urls=['translate.google.com'])
    translated_text = translator.translate(text, dest='zh-CN').text

    img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    draw = ImageDraw.Draw(img_pil)
    draw.text((10, 10), translated_text, font=ImageFont.truetype('arial.ttf', 20), fill=(0, 0, 255, 0))
    img_pil.show()

    os.remove('screenshot.png')

if __name__ == '__main__':
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'  # 请根据您的tesseract安装路径进行修改
    create_top_button()

注意:请确保将tesseract_cmd变量设置为Tesseract-OCR安装 在您的系统上的正确路径。运行此代码后,将在屏幕上创建一个置顶的“Translate”按钮。当您点击此按钮时,代码将执行以下操作:

  1. 使用pyautogui库获取屏幕截图并将其保存为screenshot.png
  2. 使用opencv-python库将截图转换为灰度图像以优化文字识别。
  3. 使用pytesseract库识别截图中的英语文字。
  4. 使用googletrans库将英语文字翻译成中文。
  5. 使用PIL库将翻译后的中文文本添加到截图上,并显示。

当不再需要插件时,可以通过关闭“Translate Button”窗口来终止程序。此代码仅提供了一个基本实现,还需需要对其进行优化和完善。

猜你喜欢

转载自blog.csdn.net/a871923942/article/details/129940257