web-dev-qa-db-fra.com

Capture2Text - Alternative (Capturer le texte de l'écran directement) dans Ubuntu Mate

J'ai trouvé peu de questions similaires sur ce site mais je n'ai pas pu terminer le processus.

D'après la réponse de Comment extraire instantanément du texte d'une zone d'écran à l'aide d'outils de ROC? et Comment utiliser l'OCR sur une capture d'écran partielle pour obtenir du texte?

J'ai d'abord installé les dépendances

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

Puis je mets le script suivant dans /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

S'il vous plaît noter que j'ai enlevé

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

En espérant qu'il ne considère que l'anglais. S'il vous plaît laissez-moi savoir si ce n'est pas le cas.

Maintenant quand je mets

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

Cela fonctionne comme je voulais.

Dans Windows, avec Capture2Text, j’utilisais Win+Q pour capturer une partie de l'écran sous forme de texte. Alors, j'ai vérifié Comment puis-je définir un raccourci clavier personnalisé pour contrôler le volume?

Je suis allé à Menu-> Searched for Keyboard Shortcuts -> Click

enter image description here

  1. Puis j'ai cliqué sur Add
  2. Nom: Capture2Text
  3. Commande: bash /home/blueray/Documents/Translate/screen_ts.sh
  4. Cliqué Apply
  5. Cliqué sur le raccourci à droite.
  6. Pressé WinQ

Maintenant, quand je presse WinQ, Rien ne se passe. Qu'est-ce que je fais mal?

3
blueray

Vous n'avez pas besoin de "scrot". Imagemagick (qui a fourni "mogrify") peut faire le travail de capture d'écran. Vous n'avez également pas besoin d'enregistrer une image intermédiaire, car "tesseract" peut accepter une image sur une entrée standard.

En tant que tel, ce qui précède simplifie les ...

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

Cependant, j’ai aussi ajouté ce qui suit à ma version du script, pour faire apparaître le texte à l’écran afin que vous puissiez le vérifier.

xsel -po | xless - &

Bien sûr, tesseract pourrait utiliser certaines améliorations pour certaines polices! Par exemple, les polices de certaines polices ont un petit crochet qui fait croire à tesseract qu'elles sont des "P"! Arrghhhh ...

EDIT: le script complet que j'utilise est situé à ...

http://www.ict.griffith.edu.au/anthony/software/#capture_ocr

Je la relie à un "raccourci clavier" (Meta-Print) à l'aide de mon gestionnaire de fenêtres (openbox) afin de pouvoir l'utiliser à tout moment.

Si vous ne pouvez pas utiliser un raccourci clavier et que vous devez découvrir la partie de l'écran contenant le texte, vous pouvez toujours le lancer avec un retard ...

dormir 5; capture_ocr

Prendre plaisir

2
anthony

Dans le raccourci personnalisé, j'ai modifié la commande en

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

Maintenant ça marche. Mais le problème, c’est lorsque j’appuie sur Win+Q une partie du cache de terminal de l’écran. Donc, j'ai installé xdotool

Sudo apt-get update
Sudo apt-get install xdotool

Ajout de xdotool windowminimize $(xdotool getactivewindow) sur mon fichier screen_ts.sh.

Alors, maintenant le script ressemble à

#!/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
0
blueray