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