Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/05/2015, à 14:20

Mobidique

[RESOLU] Optical Character Recognition, pdfocr et action nautilus

Hello,

Version courte
Comment faire une action nautilus avec pdfocr :

pdfocr -i coucou.pdf -o coucou.pdf -t

Version longue
Je récupère parfois des pdf qui ne sont que des images, c'est à dire qu'on ne peut pas faire de recherche dans le texte et une indexation de contenu (e.g. recoll) n'indexe pas le PDF. Pour pouvoir faire l'un et l'autre il faut faire de la reconnaissance optique de caractères (OCR). Ca existe sous linux. Tesseract m'est apparu comme le meilleur outil que j'utilisais via scanpdf. Ce dernier utilise bien tesseract pour faire l'OCR et est capable d'associer l'image de la page et le texte reconnu, on peut effectuer une recherche mais ... les caractères trouvés ne sont pas mis en surbrillance, on est bien amené à la page où les caractères on été trouvé mais on ne sait pas où dans le texte. Pour faire ça il faut faire une autre opération, stamp kkchose je crois, ça fait un moment que j'ai fait cette recherche et que j'avais conclu que je n'obtenais pas ce que je voulais.

Aujourd'hui je rencontre à nouveau le pb, je me relance sans conviction dans une recherche et je trouve ça :
https://launchpad.net/~gezakovacs/+arch … ntu/pdfocr
et à l'usage ça fait exactement ce que je veux. C'est en ligne de commance, qu'à cela ne tienne, et je dirais même, c'est encore mieux, je vais m'en faire une action nautilus (comme ça je tombe sur un pdf sans reconnaissance, je le ferme, click droit pdfocr et hop c'est fait).

Bon ... je m'agace un peu sur le truc je lui dit qu'il faut lancer pdfocr et que les options c'est -i %f -o %f -t (cette dernière option étant pour indiquer l'utilisation de tesseract plutôt que tout autre OCR), a marche pas. Je me dis que je vais m'inspirer d'un script de réduction de pdf, ça donne ça :

#!/bin/bash
#_______________PARAMETRES ET OPTIONS DE CONFIGURATION DU SCRIPTS_______________#
IFS='
'

# Language Settings ---------------------------------------------------- #
success='PDF océrisé'
title_success='Success'

errors='Océrisation échouée'
title_errors='Error'
# End of language settings ----------------------------------------------#
##########################################################################

#for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
for arg in $*
do
    pdfocr -i "$arg" -o "$arg-out" -t
    mv "$arg-out" "$arg"
    #do_something "$arg"
done

if (( $? == 0 )); then
    zenity --info --text "$success" --title "$title_success";
else    zenity --info --text "$errors" --title "$title_errors";
fi

Marche pas. Je me dis que je vais lancer ça dans un terminal marche pas non plus ...

Merci d'avance.
@+

EDIT 00 : j'ai lancé mon script dans un terminal. A la main je veux dire pas en passant par nautilus action puisque ça marche pas. Il s'avère que mon script ne marche pas 1) parce que le nom de sortie dans pdfocr ne peut pas être le nom d'entrée et 2) parce que le nom de sortie doit comporter l'extension pdf. J'ai changé ça, ça marche mieux d'un coup dans le terminal.

EDIT 01 : ha ben ça marche mieux aussi en tant que natilus action ... désolé du dérangement. Du coup le script qui marche actuellement est :

#!/bin/bash
#################################################################################
# Description: ligne de code pour diviser par 3 le poids du pdf                 #
# Infos: http://forum.ubuntu-fr.org/viewtopic.php?pid=3336511#p3336511          #
#################################################################################
#_______________PARAMETRES ET OPTIONS DE CONFIGURATION DU SCRIPTS_______________#
IFS='
'

# Language Settings ---------------------------------------------------- #
success='PDF océrisé'
title_success='Success'

errors='Océrisation échouée'
title_errors='Error'
# End of language settings ----------------------------------------------#
##########################################################################

#for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
for arg in $*
do
    pdfocr -i "$arg" -o "$arg-out.pdf" -t
#    mv "$arg-out" "$arg"
    #do_something "$arg"
done

if (( $? == 0 )); then
    zenity --info --text "$success" --title "$title_success";
else    zenity --info --text "$errors" --title "$title_errors";
fi

A améliorer en faisant un tour de passe passe pour qu'il n'y ait pas de fichier -out genre

pdfocr -i "$arg" -o "a.pdf"
mv "a.pdf" "$arg"

EDIT 02 : wé je sais encore un fil ou je pose une question et je la résoud ... J'ai trouvé la soluce en cours de route, j'allais pas ne pas la donner quand même ...


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne

#2 Le 19/05/2015, à 14:39

Mobidique

Re : [RESOLU] Optical Character Recognition, pdfocr et action nautilus

Dernier script :

#!/bin/bash
#################################################################################
# Description: reconnaissance de caractères sur un pdf                          #
#################################################################################
#_______________PARAMETRES ET OPTIONS DE CONFIGURATION DU SCRIPTS_______________#
IFS='
'

# Language Settings ---------------------------------------------------- #
success='PDF océrisé'
title_success='Success'

errors='Océrisation échouée'
title_errors='Error'
# End of language settings ----------------------------------------------#
##########################################################################

#for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
zenity --info --text="OCR en cours"

for arg in $*
do
    pdfocr -i "$arg" -o ".a.pdf" -t
    mv ".a.pdf" "$arg"
done

if (( $? == 0 )); then
     zenity --info --text "$success" --title "$title_success";
else zenity --info --text "$errors" --title "$title_errors";
fi

Si y 'en a qui maitrisent zenity je suis preneur d'amélioration, cela dit ... le mieux est l'ennemi du bien et là c'est bien.
@+


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne