Aide:Créer un fichier DjVu/À partir d’un pdf de Google Books

Vous êtes ici : accueil >Aide >Créer un fichier DjVu >À partir d’un pdf de Google Books

résumé : Les fichiers Google Books contiennent des vignettes de publicité qui ne sont pas très gênantes. Malheureusement ils contiennent aussi bien souvent des images qui occultent le texte (rectangles blancs). Voici un ensemble de scripts bash qui permettent de créer un fichier djvu sans images ajoutées, à partir d’un fichier Google Books.
Note : Les fichiers PDF de Google contiennent souvent des erreurs et des lacunes. Préférez-leur d’autres sources si possible.
Note 2 : Créer un djvu est compliqué. Commencez par faire un tour sur http://www.archive.org pour voir si ce que vous cherchez s’y trouve.


étape 1 : créer un répertoire de travail, et un répertoire poubelle modifier

mkdir mydjvu
mkdir mydjvu/trash

étape 2 : lire les images modifier

pdfimages mon_fichier_pdf mydjvu/foo

Vous obtiendrez un ensemble de fichiers pbm. Inspectez-les (par exemple avec nautilus). Vous y trouverez les pages du livre, mais aussi des vignettes Google, des pages de garde Google, et de mystérieux rectangles blanc qui parfois occultent certaines pages du pdf. Il est nécessaire de faire un tri.

Astuce : les fichiers sont numérotés par défaut : 001, 002, 003… 100, 101, 102 … 1000, 1001. Cette numérotation peut être problématique quand on dépasse 1000, car dans certains programmes les images ne seront pas correctement rangées. Pour les garder toujours dans le même ordre, on peut faire :

pdfimages -p mon_fichier_pdf mydjvu/foo

étape 3 : séparer le bon grain de l’ivraie modifier

Méthode compliquée modifier

c’est l’étape la plus délicate. La méthode ci-dessus se base sur la taille : les vignettes de Google sont très petites, et les pages ajoutées sont souvent bien plus grandes que la taille normale.

 cd mydjvu
 rm trash/foo*
 mv `\ls -l foo* |awk '{ if(!($5 >1000000 && $5<5000000 )) print $8 }'` trash/

les deux seuils ci-dessus (max et min) sont à définir en fonction du livre. Examinez la taille des fichiers avec "ls -l".

Une fois que vous avez effectué cette commande, vérifiez le contenu du répertoire de travail, ainsi que du répertoitre "trash". Il se peut qu’il reste des images indésirables (à effacer à la main), ou bien que certaines pages se retrouvent accidentellement dans le répertoire "trash" (à déplacer vers le répertoire parent).

Méthode simple modifier

Dans Nautilus, affichez la liste détaillée des images, et cliquez sur taille. Toutes les petites images à supprimer sont ainsi regroupées et, après vérification, il ne reste plus qu’à les sélectionner et les déplacer vers la corbeille.

étape 4 : négation, crop modifier

Dans certains cas les images obtenues sont des négatifs. La commande pour les inverser est :

 for i in foo*.pbm; do convert -negate /extra/djvu/$i $i ; done;

On peut aussi supprimer les marges (en général ce n’est pas nécessaire):

 for i in foo*.pbm; do pnmcrop $i > m$i ; mv m$i $i ; done;

étape 5 : renommer les fichiers modifier

ce renommage vise à faire en sorte que les fichiers soient énumérés dans le bon ordre :

import os,re
l = os.listdir('.')
for name in l:
    m=re.match("foo-([0-9]*).pbm" , name)
    if m:
         s = m.group(1)
         for i in range(0, 4-len(s)):
             s = "0"+s
         print s
         os.rename(name,"foo-%s.pbm"%s)

étape 6 : création du djvu modifier


\rm out.djvu
for i in `ls -1 foo-*.pbm`
do
	echo $i"\r"
        j=`basename $i .pbm`
        cjb2 -clean $j.pbm $j.djvu
        if [ -f out.djvu ]; then
            djvm -i out.djvu $j.djvu
        else
            djvm -c out.djvu $j.djvu
        fi
done

Voilà c’est fini. vous avez un beau djvu (sans couche texte).

Bien sûr, vous êtes supposés créer un fichier script pour chacune des étapes ci-dessus.