Escribimos un traductor simple de textos de imágenes y capturas de pantalla en Python

Si le gusta codificar y jugar un poco más a juegos de texto que a menudo no están en su idioma, puede convertirse en traductor en una hora con algunas bibliotecas fáciles de usar. Podrá traducir desde un área predeterminada de la pantalla donde aparece el texto o desde el portapapeles. Iniciamos el juego en modo ventana, de modo que la consola con nuestro programa también sea visible y presionamos Win + Shift + S (esto le permite seleccionar un área para Win10) y luego presionamos F9: funciona el script de traducción, buscamos en la traducción.

Entonces, necesitamos una biblioteca para capturar una imagen de la pantalla o un área: pyscreenshot. Para capturar una imagen del portapapeles, tomamos ImageGrab de la biblioteca PIL, para no cambiar cada vez a nuestro script, pero podría funcionar en segundo plano; tomamos la biblioteca del teclado, bueno, para La traducción en sí tiene el googletrans Biblioteca. Ahora el script en sí:

from googletrans import Translator  # text translation via google translate
import pyscreenshot                 # screen capture
import easyocr                      # text recognition from image
from PIL import ImageGrab           # to capture image from clipboard
import keyboard                     # to capture keystrokes in the background

########### Here is the utility settings ########################################
src_lang = 'en'                     # original text language
dst_lang = 'ru'                     # target language for translation
key_for_clipboard = 'f9'            # button for transferring pictures from the clipboard
key_for_screencapture = 'f12'       # button to translate screen area
screen_region = (150,850,1400,1000) # screen area, coordinates of capture window borders (Left, Top, Right, Bottom)

translator = Translator()
ocrreader = easyocr.Reader([src_lang])

def image_translate():
    """Translation of an already saved image image_to_translate.png"""
    global ocrreader
    print('')
    # Image text recognition
    result = ocrreader.readtext('image_to_translate.png', detail=0)
    resulttext = ' '.join(result)
    print('\033[92m' + resulttext + '\033[0m')
    # Translation and output of the result
    translated = translator.translate(resulttext, src=src_lang, dest=dst_lang)
    print(translated.text)

def capture_translate():
    """Screenshot and translation"""
    try:
        screenshot=pyscreenshot.grab(bbox=screen_region)
        screenshot.save('image_to_translate.png', format='png')
        image_translate()
    except Exception:
        print('Mistake')

def clipboard_translate():
    """Translation of the image on the clipboard"""
    im = ImageGrab.grabclipboard()
    if im==None:
        print('Copy the image to clipboard first')
    else:
        try:
            im.save('image_to_translate.png','png')        
            image_translate()
        except Exception:
            print('Ошибка')

keyboard.add_hotkey(key_for_screencapture, capture_translate)
keyboard.add_hotkey(key_for_clipboard, clipboard_translate)
print(f'To capture an area of the screen, press {key_for_screencapture}')
print(f'To translate an image from the clipboard, click {key_for_clipboard}')
keyboard.wait()

Cree una carpeta de proyecto y cree un entorno virtual en ella. Hago esto bajo Windows, el tuyo puede ser diferente. Abro la consola, me muevo a esta carpeta y ejecuto:

python -m venv env

Activar

env\Scripts\activate

Instale todos los paquetes uno por uno:

pip install googletrans==3.1.0a0
pip install pyscreenshot
pip install easyocr
pip install keyboard

Entonces simplemente puede guardar

Hay una gran desventaja de este traductor: la biblioteca easyocr extrae un montón de dependencias, incluida una biblioteca para trabajar con redes neuronales, por lo que la carpeta aumentará hasta dos gigabytes. Bueno, bueno, esta es la tarifa por el hecho de que generalmente podemos escribir un programa de este tipo fácilmente.

Deja un comentario

Tu dirección de correo electrónico no será publicada.