cipherbliss_blog
Conversion de pdf en image et OCR
ImageMagick permet de convertir des tas de fichiers en des tas d'autres. Il est fourni de base dans pas mal de distributions linux.convertir un pdf en un jpg par page de 300dpi c'est aussi simple que lancer cette commande:(dans un terminal, dans le dossier de votre fichier pdf, par exemple, mon dossier de Téléchargements)
convert -density 300 -quality 100 monFichierPDF.pdf mesFichiersJpg.jpg
Et boum! aussitôt plopent dans le même dossier des jpg mesFichiersJpg (1).jpg pour chaque page.Trop magique.L'option -density 300 donne une résolution de 300dpi.L'option -quality 100 compresse la sortie au meilleur de sa qualité.Il faut nommer le fichier d'entrée et celui de sortie, j'aurai pu marquer mesFichiersJpg.png ça aurait fait des vrais png, mais ça supporte aussi des tas d'autres formats.
Option de sécurité d'ImageMagick
Il est possible que vous ayez une version d'ImageMagick avec des restrictions de conversion qui ont été mises en place pour des raisons de sécurité à une époque où GhostScript avait un problème, corrigé depuis. Si la commande convert ne veut pas convertir votre pdf, regardez dans la config du fichier de police:=sudo editor /etc/ImageMagick-7/policy.xml=(le dossier peut se nommer ImageMagick-6 ou autre selon votre version), et changez la ligne concernant les pdf:
<policy domain="coder" rights="none" pattern="PDF" />
En ceci:
<policy domain="coder" rights="read | write" pattern="PDF" />
Relancez votre terminal et ça devrait bien vouloir convertir votre pdf en jpg.
Une commande en alias de bash
Vous pouvez vous en faire un alias dans votre fichier ~.bashaliases/
alias pdf2jpg='convert -density 300 -trim -quality 100'
Ainsi vous pourrez lancer:
pdf2jpg machin.pdf machin.jpg
Et paf, ça fait des images de jolie qualité pour chaque page.
Le cube qui sait lire
Et donc voilà, il arrive aussi qu'on vous file un pdf contenant un contrat ou un texte (avec ou sans images) qui serait bien plus efficace en format texte pour y faire des recherches par exemple.
vous avez bien entendu autre chose à faire de votre vie que de recopier tout le texte. aint nobody got time for that.
Il convient donc d'utiliser un soft qui sait faire de l'Optical Character Recognition, de la reconnaissance de caractères optiques.
Le Tesseract, ce n'est pas un cube produisant une énergie infinie au pays d'Iron Man, c'est un soft capable de lire des caractères dans une image et de pondre un texte en conséquence. Bien sûr il faut relire le texte ensuite pour corriger quelques typos, mais il fait déjà un boulot impressionnant.installez le avec son extension pour le français avec apt-get:
sudo apt-get install tesseract-ocr tesseract-ocr-fra
Une fois que c'est fait revenons à nos animaux laineux.Vous avez donc plein de fichiers jpg dans un dossier.Dans un terminal, mettez vous dans le dossier en question.Nous allons donc faire une boucle sur tous les fichiers du dossier courant se terminant par jpg, les lire et en ressortir dans un fichier pagetruc.txt pour chaque image.
a=0for i in $(ls -v *.jpg); do echo "$i page_${a}.txt" # on affiche ce qu'on fait tesseract $i page_${a}.txt let a=a+1done
l'option -l fra sert à dire qu'on traite un texte en françaiset maintenant on concatène les sorties de chaque image en un seul fichier
cat page_* > all_pages.txt
Et vous pourrez maintenant avoir un texte sur lequel vous pouvez faire une recherche intégrale avec votre éditeur de texte préféré, à la recherche de l'arnaque contractuelle qui va bien.Astuce de l'OCR trouvée sur la doc ubuntuEnjoy!