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
Add
bash /home/blueray/Documents/Translate/screen_ts.sh
Apply
Maintenant, quand je presse WinQ, Rien ne se passe. Qu'est-ce que je fais mal?
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
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