Kubuntu.ru блоги

KDE Lens. Переводим текст с картинки.

Привет. Давненько я ничего не писал. Сегодня - будем переводить любой текст прям с экрана. Иногда встречаются надписи, которые не выделяются мышью. Это может быть текст в виде изображения, на каком-либо сайте, текст в системе, и т.п. Я люблю использовать нативные приложения, поэтому, вот небольшой скрипт. Для начала, поставим базовые пакеты, чтобы это всё взлетело. Там добавлено несколько пакетов, для переводчика (если интересно, напишу отдельно) Развернуть/свернуть скрытый текст.sudo add-apt-repository ppa:alex-p/tesseract-ocr-devel sudo apt install \espeak \gawk \imagemagick  \rlwrap \scrot \tesseract-ocr \tesseract-ocr-deu \tesseract-ocr-eng \tesseract-ocr-fra \tesseract-ocr-rus \translate-shell \wl-clipboard \wmctrl \xclip \xdotool \xsel Потом создаём файл по пути /home/$USER/.scripts/.KDE_lens_wl (ну или где вы там захотите создать) Со следующим содержимым: Развернуть/свернуть скрытый текст.#!/usr/bin/env bash# Создание временного файлаSCR_IMG=$(mktemp --suffix=.png)trap "rm $SCR_IMG*" EXIT# Захват выбранной области экрана с помощью Spectacle#spectacle -n -a -b -o $SCR_IMGspectacle -n -e -r -b -o $SCR_IMG# Проверка, был ли сделан скриншот (Spectacle не создает файл в случае отмены)if [ ! -f $SCR_IMG ]; then    exit 1fi# Изменение размера и модификация изображенияmogrify -modulate 100,0 -resize 400% $SCR_IMG# Распознавание текста на изображенииtesseract -l eng+rus+deu+tur+fra+heb $SCR_IMG $SCR_IMG &> /dev/null# Чтение распознанного текстаSCAN_TXT=$(cat $SCR_IMG.txt)echo -n "$SCAN_TXT"  > /tmp/scan_edit# Перевод текстаTRANS=$(echo "$SCAN_TXT" | trans :ru -no-ansi -b)echo -e "$TRANS" > /tmp/translate# Определение языка текстаTITLE=$(echo "$SCAN_TXT" | trans -b -identify)# Вывод диалогового окнаkdialog --title "Определённый язык - $TITLE" --yesnocancel "$SCAN_TXT" --yes-label "Перевести на русский" --no-label  "Копировать в буфер" --cancel-label "Завершить"button="$?";if [ "$button" = 0 ]; then    kdialog --textbox /tmp/translate 500 300 --title "Переведенный текст"elif [ "$button" = 1 ]; then    cat /tmp/scan_edit | wl-copyelif [ "$button" = 2 ]; then    exitfi; Теперь в Параметрах Системы (systemsettings) настроим комбинацию клавиш. У меня Meta+F1. Жмякаем, выделяем область экрана с текстом, нажимаем Enter, и, либо копируем, либо переводим на русский. Если что непонятно будет, помогу...