Capture2Text - Alternativa (Captura de texto da tela diretamente) no Ubuntu Mate

3

Encontrei algumas perguntas semelhantes neste site, mas não consegui concluir o processo.

Da resposta de Como extrair instantaneamente texto de uma área de tela usando ferramentas de OCR? e Como posso usar o OCR em uma captura de tela parcial para obter texto?

Primeiro instalei as dependências

sudo apt-get install tesseract-ocr
sudo apt-get install imagemagick
sudo apt-get install scrot
sudo apt-get install xsel

Depois, coloco o seguinte script em /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

Por favor, note que eu removi

select tesseract_lang in eng rus equ ;do break;done
# Quick language menu, add more if you need other languages.

Na esperança de que só considere o inglês. Por favor, deixe-me saber se este não é o caso.

Agora, quando eu coloco

bash /home/blueray/Documents/Translate/screen_ts.sh

Funciona como eu queria.

No windows, com Capture2Text, eu costumava usar Win + Q para capturar parte da tela como texto. Então, eu verifiquei Como eu defino um atalho de teclado personalizado para controlar o volume?

Eu fui para Menu-> Searched for Keyboard Shortcuts -> Click

  1. Depois, cliquei em Add
  2. Nome: Capture2Text
  3. Comando: bash /home/blueray/Documents/Translate/screen_ts.sh
  4. clicado em Apply
  5. Clicado no atalho à direita.
  6. Pressionado Win Q

Agora, quando pressiono Win Q , nada acontece. O que estou fazendo de errado?

    
por blueray 19.05.2018 / 16:07

2 respostas

2

Você não precisa "scrot". Imagemagick (que forneceu "mogrify") pode fazer o trabalho de captura de tela. Você também não precisa salvar uma imagem intermediária, pois "tesseract" pode aceitar uma imagem na entrada padrão.

Como tal, o acima simplifica para ...

convert x: -modulate 100,0 -resize 400% -set density 300 png:- |
  tesseract stdin stdout | xsel -bi

No entanto, também adicionei o seguinte à minha versão do script, para exibir o texto na tela para que você possa verificá-lo.

xsel -po | xless - &

É claro que o tesseract poderia usar algumas melhorias para algumas fontes! Por exemplo, 'f's em algumas fontes tem um pequeno gancho que faz com que o tesseract pense que eles são' P's! Arrghhhh ...

EDIT: script completo que eu uso está localizado em ...

link

Eu associo isso a um 'atalho' (Meta-Print) usando meu gerenciador de janelas (openbox), para que eu possa usá-lo a qualquer momento.

Se você não puder usar uma tecla de atalho e precisar descobrir a parte da tela que contém o texto, você sempre poderá iniciá-lo com um atraso ...

sono 5; capture_ocr

Aproveite

    
por anthony 16.10.2018 / 08:30
0

No atalho personalizado, alterei o comando para

mate-terminal -e "/home/blueray/Documents/Translate/screen_ts.sh"

Agora está funcionando. Mas o problema é quando eu pressiono Win+Q uma parte da tela do terminal. Então, eu instalei xdotool

sudo apt-get update
sudo apt-get install xdotool

Adicionada xdotool windowminimize $(xdotool getactivewindow) no meu arquivo screen_ts.sh .

Então, agora o script parece

#!/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
    
por blueray 20.05.2018 / 06:27