Capture2Text - Альтернатива (захват текста с экрана напрямую) в Ubuntu Mate
Я нашел несколько похожих вопросов на этом сайте, но не смог завершить процесс.
Из ответа на вопрос Как можно мгновенно извлечь текст из области экрана с помощью инструментов OCR? и как я могу использовать OCR на частичном снимке экрана, чтобы получить текст?
Сначала я установил зависимости
sudo apt-get install tesseract-ocr
sudo apt-get install imagemagick
sudo apt-get install scrot
sudo apt-get install xsel
Затем я положил следующий скрипт в /home/blueray/Documents/Translate/screen_ts.sh
#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot xsel
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
scrot -s $SCR_IMG.png -q 100
# increase image quality with option -q from default 75 to 100
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png
#should increase detection rate
tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt | xsel -bi
exit
Обратите внимание, что я удалил
select tesseract_lang in eng rus equ ;do break;done
# Quick language menu, add more if you need other languages.
В надежде, что он будет рассматривать только английский. Пожалуйста, дайте мне знать, если это не так.
Теперь, когда я положил
bash /home/blueray/Documents/Translate/screen_ts.sh
Это работает, как я хотел.
В Windows, с Capture2Text, я использовал Win + Q для захвата части экрана в виде текста. Итак, я проверил, как установить настраиваемое сочетание клавиш для управления громкостью?
я пошел в Menu-> Searched for Keyboard Shortcuts -> Click
- Затем я нажал
Add
- Имя: Capture2Text
- Команда:
bash /home/blueray/Documents/Translate/screen_ts.sh
- Нажал
Apply
- Нажмите на ярлык справа.
- Pressed Win Q
Теперь, когда я нажимаю Win Q, ничего не происходит. Что я делаю неправильно?
2 ответа
Вам не нужен "мошенник". Imagemagick (который предоставил "mogrify") может сделать работу захвата экрана. Вам также не нужно сохранять промежуточное изображение, так как "tesseract" может принимать изображение на стандартный ввод.
Таким образом, вышеизложенное упрощает...
convert x: -modulate 100,0 -resize 400% -set density 300 png:- |
tesseract stdin stdout | xsel -bi
Однако я также добавил следующее в свою версию скрипта, чтобы вывести текст на экран, чтобы вы могли проверить его.
xsel -po | xless - &
Конечно, Tesseract может использовать некоторые улучшения для некоторых шрифтов! Например, в некоторых шрифтах буква f имеет небольшой крючок, который заставляет тессеракт думать, что они буква P! Arrghhhh...
РЕДАКТИРОВАТЬ: Полный сценарий, который я использую, находится на...
http://www.ict.griffith.edu.au/anthony/software/
Я связываю это с "горячей клавишей" (Meta-Print), используя мой оконный менеджер (openbox), так что я могу использовать его в любое время.
Если вы не можете использовать горячую клавишу, и вам нужно раскрыть часть экрана, содержащую текст, вы всегда можете запустить его с задержкой...
спать 5; capture_ocr
наслаждаться
Мне пришлось настроить сценарий @anthony, чтобы он работал на моем компьютере (Kubuntu 18.04):
Вместо
convert
линия, я использовал:
import -resize 300% +dither png:- |
Так же убрал минус в конце
-
знак из последней строки, так что:
xsel -ob | $XPAGER
Отлично работает.
В пользовательском ярлыке я изменил команду на
mate-terminal -e "/home/blueray/Documents/Translate/screen_ts.sh"
Теперь это работает. Но проблема в том, когда я нажимаю Win+Q
часть экрана крышки терминала. Итак, я установил xdotool
sudo apt-get update
sudo apt-get install xdotool
добавленной xdotool windowminimize $(xdotool getactivewindow)
на моем screen_ts.sh
файл.
Итак, теперь скрипт выглядит так
#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot xsel
xdotool windowminimize $(xdotool getactivewindow)
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
scrot -s $SCR_IMG.png -q 100
# increase image quality with option -q from default 75 to 100
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png
#should increase detection rate
tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt | xsel -bi
exit