Peut-être qu'il existe déjà un outil qui fait cela, mais vous pouvez également créer un script simple avec un outil de capture d'écran et un tesseract, comme vous essayez de l'utiliser.
Prenons comme exemple ce script (dans mon système, je l'ai enregistré sous /usr/local/bin/screen_ts
):
#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot
select tesseract_lang in eng rus equ ;do break;done
# Quick language menu, add more if you need other languages.
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
scrot -s $SCR_IMG.png -q 100
# 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
cat $SCR_IMG.txt
exit
Et avec le support du presse-papiers:
#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot xsel
select tesseract_lang in eng rus equ ;do break;done
# quick language menu, add more if you need other languages.
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
Il permet scrot
de prendre l'écran, tesseract
de reconnaître le texte et cat
d'afficher le résultat. La version presse-papiers utilise également xsel
pour diriger la sortie dans le presse-papiers.
REMARQUE : scrot
, xsel
, imagemagick
et tesseract-ocr
ne sont pas installés par défaut , mais sont disponibles à partir des référentiels par défaut.
Vous pourrez peut-être le remplacer scrot
par gnome-screenshot
, mais cela peut prendre beaucoup de travail. En ce qui concerne la sortie, vous pouvez utiliser tout ce qui peut lire un fichier texte (ouvrez-le avec l'éditeur de texte, affichez le texte reconnu comme une notification, etc.).
Version GUI du script
Voici une version graphique simple du script OCR comprenant une boîte de dialogue de sélection de la langue:
#!/bin/bash
# DEPENDENCIES: tesseract-ocr imagemagick scrot yad
# AUTHOR: Glutanimate 2013 (http://askubuntu.com/users/81372/)
# NAME: ScreenOCR
# LICENSE: GNU GPLv3
#
# BASED ON: OCR script by Salem (http://askubuntu.com/a/280713/81372)
TITLE=ScreenOCR # set yad variables
ICON=gnome-screenshot
# - tesseract won't work if LC_ALL is unset so we set it here
# - you might want to delete or modify this line if you
# have a different locale:
export LC_ALL=en_US.UTF-8
# language selection dialog
LANG=$(yad \
--width 300 --entry --title "$TITLE" \
--image=$ICON \
--window-icon=$ICON \
--button="ok:0" --button="cancel:1" \
--text "Select language:" \
--entry-text \
"eng" "ita" "deu")
# - You can modify the list of available languages by editing the line above
# - Make sure to use the same ISO codes tesseract does (man tesseract for details)
# - Languages will of course only work if you have installed their respective
# language packs (https://code.google.com/p/tesseract-ocr/downloads/list)
RET=$? # check return status
if [ "$RET" = 252 ] || [ "$RET" = 1 ] # WM-Close or "cancel"
then
exit
fi
echo "Language set to $LANG"
SCR_IMG=`mktemp` # create tempfile
trap "rm $SCR_IMG*" EXIT # make sure tempfiles get deleted afterwards
scrot -s $SCR_IMG.png -q 100 #take screenshot of area
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png # postprocess to prepare for OCR
tesseract -l $LANG $SCR_IMG.png $SCR_IMG # OCR in given language
cat $SCR_IMG | xsel -bi # pass to clipboard
exit
Mis à part les dépendances répertoriées ci-dessus, vous devrez installer le fork Zenity YAD à partir du webupd8 PPA pour faire fonctionner le script.
gnome-screenshot -a
? Aussi pourquoi vous dirigez la sortie vers tesseract? Si je ne me trompe pas, gnome-screenshot enregistre l'image dans un fichier et ne "l'imprime" pas ...