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

La bibliothèque libre.

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.