Если вы любите программировать и еще немного играть в текстовые игры, которые часто бывают не на русском языке, то можно себе за час сделать переводчик с помощью нескольких простых в использовании библиотек. Переводить он сможет либо с заранее определенной области экрана, где появляется текст, либо просто из буфера обмена, т.е. запускаем игру в оконном режиме, так чтобы консоль с нашей программой тоже была видна и жмем 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 тянет кучу зависимостей в том числе библиотеку для работы с нейросетями, так что папка раздуется до двух гигабайт. Ну что-же, это плата за то что мы вообще можем так вот запросто написать такого рода программу.
