Якщо ви любите програмувати й трохи грати в текстові ігри, які часто бувають не російською мовою, то за годину можна зробити собі перекладач за допомогою кількох простих у використанні бібліотек. Він зможе перекладати текст із заздалегідь визначеної області екрана або просто з буфера обміну. Тобто запускаємо гру у віконному режимі так, щоб консоль із нашою програмою теж була видимою, натискаємо Win+Shift+S (це дає змогу виділити область у Windows 10), а потім F9 — виконується скрипт перекладу, і ми читаємо результат.
Отже, нам потрібна бібліотека pyscreenshot для захоплення зображення з екрана або його області. Для отримання зображення з буфера обміну беремо ImageGrab із бібліотеки PIL. Щоб не перемикатися щоразу на наш скрипт і щоб він міг працювати у фоні, використовуємо бібліотеку keyboard. А для самого перекладу є бібліотека googletrans. Тепер сам скрипт:
from googletrans import Translator # переклад тексту через Google Translate
import pyscreenshot # захоплення зображення з екрана
import easyocr # розпізнавання тексту із зображення
from PIL import ImageGrab # для отримання зображення з буфера обміну
import keyboard # для відстеження натискань клавіш у фоні
########### Тут налаштування параметрів утиліти ########################################
src_lang = 'en' # вихідна мова тексту
dst_lang = 'ru' # цільова мова перекладу
key_for_clipboard = 'f9' # клавіша для перекладу зображення з буфера обміну
key_for_screencapture = 'f12' # клавіша для перекладу області екрана
screen_region = (150,850,1400,1000) # область екрана, координати меж вікна захоплення (Left, Top, Right, Bottom)
translator = Translator()
ocrreader = easyocr.Reader([src_lang])
def image_translate():
"""Переклад уже збереженого зображення image_to_translate.png"""
global ocrreader
print('')
# Розпізнавання тексту на зображенні
result = ocrreader.readtext('image_to_translate.png', detail=0)
resulttext = ' '.join(result)
print('\033[92m' + resulttext + '\033[0m')
# Переклад і виведення результату
translated = translator.translate(resulttext, src=src_lang, dest=dst_lang)
print(translated.text)
def capture_translate():
"""Знімок екрана та переклад"""
try:
screenshot=pyscreenshot.grab(bbox=screen_region)
screenshot.save('image_to_translate.png', format='png')
image_translate()
except Exception:
print('Помилка')
def clipboard_translate():
"""Переклад зображення в буфері обміну"""
im = ImageGrab.grabclipboard()
if im==None:
print('Спочатку скопіюйте зображення в буфер обміну')
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'Для захоплення області екрана натискайте {key_for_screencapture}')
print(f'Для перекладу зображення з буфера обміну натискайте {key_for_clipboard}')
keyboard.wait()
Створюємо папку проєкту, а в ній — віртуальне середовище. Я роблю це у Windows; у вас можуть бути відмінності. Відкриваю консоль, переходжу до цієї папки й виконую:
python -m venv env
Активуємо
env\Scripts\activate
Послідовно встановлюємо всі пакети:
pip install googletrans==3.1.0a0 pip install pyscreenshot pip install easyocr pip install keyboard
Далі можна просто зберегти наведений вище код, наприклад, у файлі translate.py і запускати його.
Цей перекладач має один великий недолік: бібліотека easyocr завантажує багато залежностей, зокрема бібліотеку для роботи з нейромережами, тож папка розростеться до двох гігабайтів. Що ж, це плата за можливість так легко написати подібну програму.
