Archives par mot-clé : png

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 ~/.bash_aliases

 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 page_truc.txt pour chaque image.

a=0
for 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+1
done

l’option -l fra sert à dire qu’on traite un texte en français
et 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 ubuntu
Enjoy!

Si vous aimez ce que nous faisons à Cipher Bliss, vous pouvez nous soutenir de plusieurs façons: en faisant un micro don sur liberapay , ou en cryptomonnaies. Le plus simple nous pour nous faire connaître étant de partager cet article.
Suivez moi sur Mastodon @tykayn@mastodon.cipherbliss.com.
Ce site restera libre comme un gnou dans la nature et sans pubs, parce qu'on vous aime. Que la source soit avec vous!