Как можно мгновенно извлечь текст из области экрана с помощью инструментов OCR?

В Ubuntu 12.10, если я набираю

gnome-screenshot -a | tesseract output

, он возвращает:

** Message: Unable to use GNOME Shell's builtin screenshot interface, resorting to fallback X11.

Как я могу выбрать текст с экрана и преобразовать его в текст (буфер обмена или документ)?

Спасибо!

1
задан 12 April 2013 в 18:58

2 ответа

Не знаю, нужно ли мне какое-либо решение. Вот, что работает с wayland.

Он показывает распознавание символов в текстовом редакторе, и если вы добавите параметр «да», вы получили перевод из инструмента goggle trans (подключение к Интернету обязательно) Прежде чем вы сможете использовать его, установите tesseract-ocr imagemagick и google-trans. Запустите скрипт, т. Е. В гноме с Alt + F2, когда вы увидите текст, который хотите распознать. Переместите курсор вокруг текста. Это оно. Этот скрипт был testetd только для gnome. Для других оконных менеджеров это должно быть удобно. Чтобы перевести текст на другие языки, замените идентификатор языка в строке 25.

#!/bin/bash
# Dependencies: tesseract-ocr imagemagick google-trans

translate="no"
translate=$1

SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT

gnome-screenshot -a -f $SCR_IMG.png  
# increase quality with option -q from default 75 to 100
# Typo "$SCR_IMG.png000" does not continue with same name.


mogrify -modulate 100,0 -resize 400% $SCR_IMG.png 
#should increase detection rate

tesseract $SCR_IMG.png $SCR_IMG &> /dev/null

if [ $translate = "yes" ] ; then

        trans :de file://$SCR_IMG.txt -o $SCR_IMG.translate.txt
        gnome-text-editor $SCR_IMG.translate.txt
        else
        gnome-text-editor $SCR_IMG.txt
fi

exit
2
ответ дан 24 May 2018 в 23:40

Я только что сделал блог о том, как использовать скриншот в современный день. Несмотря на то, что я нацелен на китайцев, но экран и код на английском. OCR является лишь одной из функций.

Функция для моего OCR:

Открыть в konsole + vimx ИЛИ gedit для дальнейшего редактирования. Для vimx + english включите проверку орфографии. Поддержка динамического выбора языка без жесткого кода. Диалоговое окно прогресса при медленном преобразовании и tesseracting.

Код функции:

function ocr () {
    tmpj="$1"
    tmpocr="$2"
    tmpocr_p="$3"
    atom="$(tesseract --list-langs 2>&1)"; atom=(`echo "${atom#*:}"`); atom=(`echo "$(printf 'FALSE\n%s\n' "${atom[@]}")"`); atom[0]='True'
    ans=(`yad --center --height=200 --width=300 --separator='|' --on-top --list --title '' --text='Select Languages:' --radiolist --column '✓' --column 'Languages' "${atom[@]}" 2>/dev/null`) && ans="$(echo "${ans:5:-1}")" &&  convert "$tmpj[x2000]" -unsharp 15.6x7.8+2.69+0 "$tmpocr_p" | yad --on-top --title '' --text='Converting ...' --progress --pulsate --auto-close 2>/dev/null && tesseract "$tmpocr_p" "$tmpocr" -l "$ans" 2>>/tmp/tesseract.log | yad --percentage=50 --on-top --title '' --text='Tesseracting ...' --progress --pulsate --auto-close 2>/dev/null && if [[ "$ans" == 'eng' ]]; then konsole -e "vimx -c 'setlocal spell spelllang=en_us' -n $tmpocr.txt" 2>/dev/null; else gedit "$tmpocr.txt"; fi
    rm "$tmpocr_p"
}

Код вызывающего абонента:

for cmd in "mktemp" "convert" "tesseract" "gedit" "konsole" "vimx" "yad"; do 
    command -v $cmd >/dev/null 2>&1 || {  LANG=POSIX; xmessage "Require $cmd but it's not installed.  Aborting." >&2; exit 1; }; :;
done
tmpj="$(mktemp /tmp/`date +"%s_%Y-%m-%d"`_XXXXXXXXXX.png)"
tmpocr="$(mktemp -u /tmp/`date +"%s_%Y-%m-%d"`_ocr_XXXXX)"
tmpocr_p="$tmpocr"+'.png'
gnome-screenshot -a -f "$tmpj" 2>&1 >/dev/null | ts >>/tmp/gnome_area_PrtSc_error.log
ocr $tmpj $tmpocr $tmpocr_p &

Объединить этот код в одном сценарии оболочки для запуска.

] Скриншот 1: blogging

Снимок экрана 2:

0
ответ дан 24 May 2018 в 23:40
  • 1
    похоже на достойное решение, но читаемость вашего скрипта очень плохая – ukos 15 February 2018 в 04:27

Другие вопросы по тегам:

Похожие вопросы: