Если вы любите программировать и еще немного играть в текстовые игры, которые часто бывают не на русском языке, то можно себе за час сделать переводчик с помощью нескольких простых в использовании библиотек. Переводить он сможет либо с заранее определенной области экрана, где появляется текст, либо просто из буфера обмена, т.е. запускаем игру в оконном режиме, так чтобы консоль с нашей программой тоже была видна и жмем Win+Shift+S (это позволяет выделить область под Win10) и далее жмем F9 — отрабатывает скрипт перевода, смотрим на перевод.
Итак нам нужна библиотека для захвата картинки с экрана или области — pyscreenshot, Для захвата изображения из буфера обмена берем ImageGrab из библиотеки PIL, для того чтобы не переключаться каждый раз в наш скрипт а он мог работать в фоне — берем библиотеку keyboard, ну и для самого перевода есть библиотека googletrans. Теперь собственно сам скрипт:
from googletrans import Translator # перевод текста через гугл-транслейт 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 тянет кучу зависимостей в том числе библиотеку для работы с нейросетями, так что папка раздуется до двух гигабайт. Ну что-же, это плата за то что мы вообще можем так вот запросто написать такого рода программу.