30
mai 2013

Extraire le texte et les images d'un fichier pdf

Rédigé par Philippe Maladjian   5 commentaires   Mis à jour le  30/05/2013

Afin de remplir une base de données j'ai eu besoin d'extraire le contenue de plusieurs fichiers pdf de x pages. L'idée est de découper le fichier en un pdf par page, extraire les images, extraire le texte pour qu'une ligne corresponde à un fichier pdf. J'ai n'ai rien re-inventé et je me suis basé sur les outils pdfimages, pdfseparate et pdftotext.

Le code

#!/bin/bash
if [ $# -eq 0 ];
then
    echo "Il manque le nom du fichier"
    exit 1
else
    ROOT="/home/user/Bureau/extractPdf"
    outPdf="$ROOT/pdf"
    outText="$ROOT/text"
    outImg="$ROOT/images"

    echo -n "Numéro de la première page : "
    read firstPage
    echo -n "Numéro de la denière page : "
    read lastPage

    echo -n "Masque des fichiers jpg et pdf extrait : "
    read fileNameOut
    
    if [ -z $fileNameOut ];
    then
        echo "Masque de fichier vide"
        exit 1
    else
        echo "+-----------------------+"
        echo "| Extraction des images |"
        pdfimages -f $firstPage -l $lastPage -p  -j $1 $outImg/$fileNameOut

        echo "| Découpage du fichier  |"
        pdfseparate -f $firstPage -l $lastPage $1 $outPdf/$fileNameOut-%d.pdf
        
        echo "| Extraction des textes |"
        echo "+-----------------------+"        
        for FILE in `ls $outPdf`
        do
            pdftotext -raw -nopgbrk $outPdf/$FILE $outText/${FILE%%.*}.txt
            while read ligne
            do
                ligne=`echo $ligne | tr '\r\n' ';'`
                echo -n $ligne >> $outText/$fileNameOut-full.csv
            done < $outText/${FILE%%.*}.txt
            echo "" >> $outText/$fileNameOut-full.csv            
        done        
    fi
fi
exit 0

Administrateur système de métier mais surtout curieux de découvrir de nouvelles technos très orientées DIY. A mes heures perdues je fais de la photo avec toujours une petite envie d'intégrer des DIY sous forme de timelaps à base de raspberry.

5 commentaires

#1 klil a dit :

bonjour, je suis intéressé par votre application source qui extraire les images d un pdf et qui les met dans une bd, pouvez vous me communiquer le reste du code svp? merci
cordialement

#2 flipflip a dit :

@klil : bonjour, je n'ai pas de code tout près pour intégrer les images dans une base de données.

#3 klil a dit :

merci pour la reponse, moi ce qui m interresse c est un programme pour extraire le contenu d un pdf c est tout. Apres, pour les mettre dans une bd, je peux le faire sans probleme, merci

#4 klil a dit :

re. un peu comme sur ce lien http://smallpdf.com/fr/pdf-en-jpeg

#5 flipflip a dit :

@klil : si tu veux extraire les images de ton pdf c'est pdfimages que tu dois utiliser. C'est sur du linux en ligne de commande, je ne sais pas si il existe de version avec interface graphique et/ou pour windows.

Écrire un commentaire

Quelle est la deuxième lettre du mot ieale ? :