Aide:Créer un fichier DjVu

La bibliothèque libre.

Crystal Clear device scanner.png
Cette page explique comment créer un fichier au format DjVu, format utilisable dans l'espace page, et qui permet de réduire la taille et le nombre des fichiers à copier (voir un exemple).

Si vous rencontrez des difficultés, vous pouvez demander de l'aide sur le scriptorium ou demander l'importation d'un livre.

Liste des fichiers DjVu disponibles sur Wikisource : Fichiers DjVu.



Sommaire

Nuvola apps khelpcenter.pngAIDENuvola apps khelpcenter.png

Publier un livre


Espace "Page" - Espace "Livre" - Transclusion


Ressources - Numériser - Créer un DjVu


Livres disponibles - Demander un livre


Validation - Qualité des textes


Des questions ?


[modifier] Introduction

Résumé : à partir de fac-similés au format jpg, tif, etc., obtenus sur Internet ou scannés à l'aide du programme de conversion, comment créer un fichier au format DjVu.

Intérêts :

  • tous les fac-similés d'un livre sont disponibles en un seul fichier ;
  • tous les fac-similés sont consultables à partir de la page du fichier DjVu ;
  • les fac-similés sont utilisables dans l'espace page ;
  • la taille du fichier DjVu est très petite ;
  • il n'est plus nécessaire de copier des centaines de fac-similés, mais seulement un fichier ;
  • la création d'un fichier DjVu est plus rapide que l'importation de tous les fac-similés d'un livre.

Défauts :

  • la numérotation des fac-similés ne semble pas configurable.
  • Perte de qualité variable.

Préliminaires

  • Avant de commencer, vérifier que toutes les pages du livres sont disponibles, éventuellement remplacer les pages manquantes par une page blanche.

[modifier] Convention de nommage

Il est recommandé de nommer ainsi les fichiers djvu : "Auteur - Titre.djvu", ou "Auteur - Titre Tome.djvu" le cas échéant. En cas d'éditions successives, Auteur - Titre, date, tome.djvu, Exemple : [[Fichier:Hugo - Les Misérables, 1890, tome 1.djvu]]

Pour résumer, les indications se mettent dans l'ordre suivant : ESPACE:AUTEUR - TITRE, ANNÉE, TOME.DJVU Voir ici.

[modifier] Acquisition de fac-similés sur Internet

Plusieurs sites offrent des fichiers d'images, aux formats pdf ou tif par exemple. C'est le cas de Gallica et de Google Livres. Téléchargez l'édition que vous souhaitez utiliser sur Wikisource. Vous devez conserver les informations exactes relatives à l'édition (éditeur, date d'édition, etc.) et la mention du site source.

Quelle que soit la méthode d'acquisition des fac-similés, il peut être nécessaire de les détourer, afin d'obtenir une meilleure lisibilité en mode page. Sous Windows, c'est la partie qui, manifestement, présente le plus de difficultés.


[modifier] Avec Windows

[modifier] Installation des programmes requis pour Windows

Téléchargez et installez DjVu Solo (disponible ici), un programme gratuit de conversion.

Note : Il existe d'autres programmes gratuits de conversion, comme LizardTech Virtual Printer, qui permet de convertir des documents en passant par l’impression. Il existe également des programmes libres de conversion, comme DjVu Libre.

[modifier] Conversion avec DjVu Solo

La procédure à suivre est à peu près la même pour tous les programmes de conversion. Elle consiste à charger les fac-similés dans le programme, à vérifier leur ordre et à lancer le processus de conversion.

[modifier] Numérisation d'un livre

Si vous avez un scanner installé, DjVu peut l'utiliser pour acquérir des fac-similés que vous pourrez ensuite convertir en un seul fichier DjVu.

[modifier] Détourer des fac-similés (auto-crop)

Sous Windows, la suppression des marges d'un ensemble de fac-similés peut être assez compliquée. Nous proposons les solutions suivantes, mais si vous parvenez à trouver une procédure plus simple, n'hésitez pas à la signaler.

[modifier] Convertir un fichier en plusieurs fac-similés

La conversion directe des fichiers pdf fournis par Google Books et par Gallica donnera le plus souvent des fichiers dont les images conserveront les marges blanches d'origine. Or, ces marges rendent l'utilisation du mode page plus difficile.

En outre, la conversion directe des fichiers de Google Livres ne semble pas possible, à cause de la compression des fac-similés qu'il faut d'abord extraire et convertir dans un format tel que jpg pour pouvoir créer ensuite un fichier DjVu.

Dans tous les cas, il faut d'abord obtenir des fac-similés utilisables, avant de procéder à une conversion.

Il existe plusieurs méthodes dont les différentes étapes sont les suivantes :

  • ouvrir le fichier (tif, pdf, etc.) dans un programme capable d'en exporter les images séparément  :
    • par exemple, avec FineReader ; ce dernier programme est en version d'évaluation pendant 15 jours, mais cette période concerne la fonction OCR. Au-delà, il est toujours possible d'ouvrir et de convertir un fichier ;
    • l'utilisation du logiciel PdfCreator qui permet d'exporter un pdf en différents formats (jpg, tif, etc.). Cette méthode est plus rapide que l'ouverture de certains fichiers, comme ceux de Google Livres, même dans un logiciel comme FineReader, mais peut poser des problèmes.
    • l'utilisation d'un logiciel de conversion pdf vers jpg ou tiff peut rendre le processus plus rapide ; mais ces logiciels sont souvent payants.
  • En exportant ensuite ces fac-similés page par page dans un format comme jpg ou tif, il est possible d'en découper les marges avec un programme comme XnView.
  • il reste alors à importer les images obtenues dans un programme de conversion comme DjVu Solo.

[modifier] Détourage des fichiers tiff

La solution la plus simple et la plus rapide pour les fichiers de Gallica, consiste à télécharger ces fichiers au format tif, puis à les ouvrir dans un logiciel comme tiff editor (mais utilisable 1 mois) capable de supprimer les marges de toutes les images sélectionnées. Il ne reste plus alors qu'à ouvrir le fichier tif obtenu dans un logiciel de conversion DjVu. Le problème est qu'il ne semble pas exister de logiciels gratuits pour faire ce détourage.

[modifier] Importer des fac-similés dans DjVu Solo

Quand vous avez vos fac-similés, lancez DjVu Solo, puis cliquez sur File, en haut à gauche, et sélectionnez Open. Le programme vous demande l'emplacement du fichier à importer. Sélectionnez le type de fichiers que vous souhaitez ouvrir (par exemple tif), puis cliquez sur Ouvrir. Si vous voulez importer plusieurs images, ouvrez une première image en suivant la procédure précédente, puis cliquez sur Edit et sélectionnez Insert page(s) after. Sélectionnez toutes les images que vous voulez ajouter, et cliquez sur Ouvrir. Les images s'ajoutent à la suite de la première.

[modifier] Pagination des textes

Quand vous ouvrez des images dans DjVu solo, le programme crée une pagination par défaut qui s'affiche dans un menu déroulant (voyez Image:Notes de voyages, II.djvu). Cette pagination n'est pas modifiable, et il est préférable que cette pagination corresponde exactement à la pagination du livre, pour permettre une consultation simple des fac-similés. Mais cela pose problème lorsque certaines pages (comme les introductions) sont numérotées en chiffres romains (i, ii, iii, etc.). Dans ce cas, une méthode envisageable est de créer un second fichier DjVu contenant ces fac-similés.

Si vous ne pouvez placer la première page du livre (qu'il est important de conserver) au début du fichier DjVu, elle peut être placée à la fin de ce fichier.

Astuce : l'interface de Gallica permet de se représenter facilement la totalité de la pagination d'un livre ; il suffit pour cela de cliquer sur Pagination. Cela est utile pour savoir rapidement comment organiser les pages avant de les convertir.

[modifier] Convertir

Lorsque les images sont prêtes, correctement ordonnées dans DjVu Solo, cliquez sur File, et sélectionnez Save. Le programme vous propose alors un titre de sauvegarde que vous pouvez modifier ; l'extension DjVu Files est proposée par défaut. Cliquez ensuite sur Enregistrer ; une boîte de configuration de la compression des images apparaît.

Par défaut, DjVu Solo propose de convertir les fac-similés avec une résolution en général de 300 dpi. L'utilisation de la valeur par défaut donne généralement de bons résultats, y compris pour des illustrations.

Le programme vous demande également de choisir entre différents formats d'origine : par défaut, Scanned est sélectionné et convient aux fichiers obtenus sur Gallica ou Google Livres.

Il ne reste plus qu'à cliquer sur OK. Le processus commence.

[modifier] Avec Linux

Vous avez besoin du logiciel djvu qui comprend un visualiseur, et plusieurs utilitaires pour créer et manipuler des fichier Djvu. Vous aurez probablement aussi besoin du logiciel Imagemagick pour convertir d'un format dans un autre et retoucher les scans. L'utilitaire cjb2 permet de créer un fichier DJVU à partir d'un fichier PBM ou TIFF. Il faut donc d'abord convertir vos scans s'ils ne sont dans l'un de ces formats.

[modifier] L'utilitaire pdf2djvu

Dans le cas où votre pdf est déjà de qualité suffisante (complet, détouré, etc.), et que vous n'avez pas de couche texte à ajouter, vous pouvez utiliser directement le paquet pdf2djvu avec la commande :

pdf2djvu -d 300 -o nouveau-fichier.djvu fichier-d-origine.pdf

Si la résolution finale est trop faible augmentez le paramètre à 600 ppp

pdf2djvu -d 600 -o nouveau-fichier.djvu fichier-d-origine.pdf

.

[modifier] Supprimer les marges et créer le DJVU avec un seul script

1. Première solution :

  • 1. Récupérez un fichier pdf. Renommez-le clairement si nécessaire. (Par exemple : Plaute.pdf)
  • 2. Créez sur votre ordinateur un nouveau répertoire pour y placer les fac-similés des pages quand ils seront créés. Nommez-le comme le fichier pdf (sans extension).
  • 3. Déposez le fichier.pdf dans ce nouveau répertoire.
  • 4. Ouvrez une console, placez-vous dans le nouveau répertoire contenant le PDF.
  • 5. Tapez la commande pdfimages nom-de-fichier-pdf-avec-son-extension nom-à-donner-aux-fac-similés-qui-vont-se-créer,
    ici : pdfimages Plaute.pdf Plaute
  • 6. Attendez que tous les fac-similés soient créés : ils portent le nom donné ci-dessus suivi d'un numéro à trois chiffres (celui des pages du livre) et ont pour extension pbm.
  • 7. Recopiez-y le script ci-dessous dans un fichier texte simple appelé "monscript" (par exemple avec Kedit), en remplaçant Plaute par le nom de votre fichier. Dans certains cas, vous obtiendrez un fichier inversé : texte blanc sur fond noir. Dans ce cas il faudra enlever -negate et recommencer.
#!/bin/bash
convert -negate Plaute-000.png Plaute-000.pbm
cjb2 -clean Plaute-000.pbm Plaute.djvu
 
for n in `seq 1 9`
do
        i="Plaute-00$n.pbm"
        j=`basename $i .pbm`
        convert -trim -bordercolor white -border 10x10 $j.pbm $j.pbm
        cjb2 -clean $j.pbm $j.djvu
        djvm -i Plaute.djvu $j.djvu
	echo $j
done
for n in `seq 10 99`
do
        i="Plaute-0$n.pbm"
        j=`basename $i .pbm`
        convert -trim -bordercolor white -border 10x10 $j.pbm $j.pbm
        cjb2 -clean $j.pbm $j.djvu
        djvm -i Plaute.djvu $j.djvu
        echo $j
done
for n in `seq 100 421`
do
        i="Plaute-$n.pbm"
        j=`basename $i .pbm`
        convert -trim -bordercolor white -border 10x10 $j.pbm $j.pbm
        cjb2 -clean $j.pbm $j.djvu
        djvm -i Plaute.djvu $j.djvu
        echo $j
done

Ce script traite d'abord les numéros à un chiffre (1 à 9) puis ceux à deux chiffres (10 à 99) puis ceux à 3 chiffres (100 à 421 parce que Plaute.djvu avait 421 pages, donc 421 fac-similés. Vous remplacez bien sûr 421 par le nombre de pages de votre fichier à vous).

  • 8. Dans la console, lancez le script
bash monscript
  • 9. Si vous désirez suivre en direct la création page par page du djvu (le tout peut prendre quelques heures), vous pouvez laisser votre console ouverte et la placer dans un coin de votre écran de façon que la ligne où défilent peu à peu les numéros des images soit placée à ras du bas de l'écran ; vous dimensionnerez ensuite les fenêtres de vos autres activités pour laisser cette ligne visible.
  • 10. Vous pouvez vous occuper à autre chose, le script travaille pour vous.


2. Deuxième solution :

Transclusion
Source : Wikisource:Scriptorium/Novembre 2008

[modifier] Script Bash de conversion PDF→Djvu

Le script proposé dans la page d’aide à la création d’un fichier Djvu n’est pas assez automatisé (à mon goût). Je vous propose un nouveau script qui détermine le nom du fichier Djvu à partir du nom de fichier PDF, mais également le nombre de pages. Il est donc utilisable tel quel pour tous les fichiers PDF. Il dépend d’ImageMagick, de dejavulibre et de poppler-utils.

#!/bin/sh
#pdf2djvu
 
# vérification du type de fichier
if [ "$(file -bi "$1")" != 'application/pdf' ]; then
	echo "$1" "n’est pas un fichier PDF."
	exit 1;
fi
 
BOOKNAME=$(basename "$1" .pdf)
MAXPAGES=$(pdfinfo "$1"|grep 'Pages'|awk '{print $2}')
 
echo "Livre :" "$BOOKNAME"
echo "Nombre de pages :" "$MAXPAGES"
 
# conversion du PDF en images
pdftoppm -r 300 -mono "$1" "$BOOKNAME"
 
# création de la première page
convert -trim -bordercolor white -border 10x10 "$BOOKNAME"-001.pbm "$BOOKNAME"-001.pbm
cjb2 -clean "$BOOKNAME"-001.pbm "$BOOKNAME".djvu
rm "$BOOKNAME"-001.pbm
 
for n in `seq 2 $MAXPAGES`
do
	# obtention du nom de fichier pbm
	case `expr length $n` in
	1)
		pbmname=`basename "$BOOKNAME"-00$n.pbm .pbm`
		;;
	2)
		pbmname=`basename "$BOOKNAME"-0$n.pbm .pbm`
		;;
	3)
		pbmname=`basename "$BOOKNAME"-$n.pbm .pbm`
		;;
	*)
		exit 1;
		;;
	esac
 
	# détourage
        convert -trim -bordercolor white -border 10x10 "$pbmname".pbm "$pbmname".pbm
	# conversion au format Djvu
        cjb2 -clean "$pbmname".pbm "$pbmname".djvu
        djvm -i "$BOOKNAME".djvu "$pbmname".djvu
        echo "$pbmname"
	# nettoyage des fichiers intermédiaires
	rm "$pbmname".djvu "$pbmname".pbm
 
done
exit 0;

Copiez ce script dans un fichier pdf2djvu.sh, rendez-le exécutable, puis utilisez-le ainsi : sh pdf2djvu.sh nomdupdfàconvertir.pdf


[modifier] Ajout d’une couche texte

Le script Perl qui suit permet de faire la même chose que le script Bash précédent, mais permet également d’ajouter la couche texte au fichier DjVu.

Comme pour le script Bash, placez ce script dans votre répertoire de travail (contenant le PDF), par exemple sous le nom pdf2djvu, et rendez le exécutable:

chmod +x pdf2djvu

La transformation se fait en deux étapes : extraction de la couche OCR de la source, puis conversion. La couche OCR peut provenir de Gallica (lors de l’enregistrement, choisissez txt comme format et enregistrez la page résultante dans le répertoire contenant le script et le fichier PDF. L’extraction de la couche texte se fait à l’aide de cette commande :

./pdf2djvu gallica2txt LeLivre.html LeLivre.txt

Vous pouvez alternativement réutiliser la couche texte du PDF. Sur Gallica, la couche texte du PDF a parfois certains problèmes de retour à la ligne, préférez donc la version texte téléchargeable si vous le pouvez.

./pdf2djvu pdf2txt LeLivre.pdf LeLivre.txt

La transformation du PDF en DejaVu se fait à l’aide de la commande suivante :

./pdf2djvu mkdjvu LeLivre.pdf LeLivre.djvu LeLivre.txt [dpi]

dpi est optionnel, il permet de jouer sur la taille de l’image. Plus dpi est grand, plus l’image l’est, mais plus le DjVu résultant est volumineux. La valeur par défaut est 300. Le DejaVu résultant ne devrait jamais être plus volumineux que le PDF d’entrée – si c’est le cas, réduisez ce paramètre.

Si le script vous répond « WARNING: Created file seems invalid » à la fin, ne l’envoyez pas sur Commons, et demandez de l’aide à son auteur ou sur le scriptorium.

[modifier] Le script

#!/usr/bin/perl -w
 
use strict;
use feature 'say';
use Encode;
 
sub escape {
	return sprintf "\\%03o", ord(shift);
}
 
# gallica2txt(html file, text file):
#   Transform the Gallica OCR (in HTML version) text into a suitable .txt
sub gallica2txt {
	my $html = shift;
	my $txt = shift;
 
	open HTML, $html;
	open TXT, ">", $txt;
 
	my $page;
 
	while(<HTML>) {
		next unless m|^<div id="contentPageModeText">$|..m|^</div>$|;
		$page = $1 if m|^<div id="numPageModeText">\D+(\d+)|;
		next if m|^</?div|;
		s|</?span[^>]*>||g;
		s|<br[^>]*>|\n$page: |gi;
		chomp;
		say TXT "$page: $_";
	}
 
	close HTML;
	close TXT;
}
 
# pdf2txt(pdf file, text file)
#    Extract the hidden text layer of the PDF file
sub pdf2txt {
	my $pdf = shift;
	my $txt = shift;
	my $pages = $1 if `pdfinfo "$pdf"` =~ /Pages:\s*(.+)/;
 
	open TXT, ">", $txt;
 
	for(1..$pages) {
		say STDERR;
		open PDF, "pdftotext -layout -f $_ -l $_ \"$pdf\" - |";
		while(my $line = <PDF>) {
			chomp $line;
			say TXT "$_: $line";
		}
		close PDF;
	}
 
	close TXT;
}
 
# create_text_layer(djvu file, text):
#   Add text to the hidden text layer of the first page of the djvu file.
#   Create and destroy a temporary file called (djvu file).dsed
sub create_text_layer {
	my $djvu = shift;
	my $text = shift;
	my ($max_x, $max_y) = ($1-1, $2-1) if `djvudump "$djvu"` =~ /DjVu (\d+)x(\d+)/;
	my $dsed = "$djvu.dsed";
 
	$text =~ s/\\/\\134/g;
	$text = encode("ascii", $text, sub { sprintf "\\%03o", shift; });
	$text =~ s/([\001-\037\177"])/escape($1)/ge;
 
	open DSED, ">", $dsed;
	print DSED "(page 0 0 $max_x $max_y \"$text\")";
	close DSED;
 
	system "djvused", $djvu, "-e", "select 1; set-txt '$dsed'", "-s";
	unlink $dsed;
}
 
my $op = shift;
 
if($op eq "gallica2txt") {
	gallica2txt(shift, shift);
}
elsif($op eq "pdf2txt") {
	pdf2txt(shift, shift);
}
elsif($op eq "mkdjvu") {
	my $pdf = shift;
	my $title = $pdf;
	   $title =~ s/\.pdf$//;
	my $out = shift || "$title.djvu";
	my $txt = shift || "$title.txt";
	my $dpi = shift || 300;
 
	my %text_layer;
	if(-f $txt) {
		open TXT, $txt;
		while(<TXT>) {
			next if !m|^(\d+): (.*)$|;
			if(defined($text_layer{$1})) {
				$text_layer{$1} .= "$2\n";
			}
			else {
				$text_layer{$1} = "$2\n";
			}
		}
		close TXT;
	}
 
	my $maxpages = $1 if `pdfinfo "$pdf"` =~ /Pages:\s*(.+)/;
	for(1..$maxpages) {
		say STDERR;
 
		my $ppm = sprintf "%s-%03d.ppm", $title, $_;
		my $pbm = sprintf "%s-%03d.pbm", $title, $_;
		my $djvu = sprintf "%s-%03d.djvu", $title, $_;
		my $dsed = sprintf "%s-%03d.dsed", $title, $_;
 
		system "pdftoppm", "-r", $dpi, "-f", $_, "-l", $_, $pdf, $title;
		system "convert", "-trim", "-bordercolor", "white", "-border", "10x10", $ppm, $pbm;
		system "cjb2", $pbm, $djvu;
 
		create_text_layer($djvu, $text_layer{$_}) if defined($text_layer{$_});
 
		if($_ == 1) {
			rename($djvu, $out);
		}
		else {
			system "djvm", "-i", $out, $djvu;
			unlink $djvu;
		}
 
		unlink $ppm;
		unlink $pbm;
	}
	system "djvutxt \"$out\" | iconv -f UTF8 -t UTF8 > /dev/null";
 
	say STDERR "WARNING: Created file seems invalid" if($?);
}
else {
	say "Usage:";
	say " Transform the Gallica OCR to a form suitable with mkdjvu";
	say "  $0 gallica2txt [Gallica HTML file] [Output file]";
	say " Extract the hidden text layer of a PDF file to a form suitable with mkdjvu";
	say "  $0 pdf2txt [Gallica HTML file] [Output file]";
	say " Transform a PDF file to a DjVu file";
	say "  $0 mkdjvu [PDF file] [DjVu file] [Text file] [dpi=300]";
}

[modifier] Supprimer les premières pages publicitaires

1. Créez un répertoire du même nom que votre fichier.
2. Placez votre fichier dans ce nouveau répertoire.
3. Placez-vous dans ce répertoire.
4. Ouvrez une console.
5. Tapez dans la console :

 
djvm -d fichier.djvu 1

ou plus généralement :

djvm -d fichier.djvu <n° de page>

en remplaçant fichier.djvu par le nom de votre fichier, et <n° de page> par le numéro de la page.
Appuyez sur la touche Entrée.

C'est tout : la page ou les pages indiquées ont disparu.


[modifier] Conversion en ligne

Lorsque vous avez des images ou des fichiers à convertir, il n'est pas nécessaire de possèder un logiciel de conversion : vous pouvez utiliser Any2DjVu Server qui fournit un service en ligne de conversion au format DjVu.

Il est possible de récupérer l’adresse ftp d’un fichier pdf de Gallica et de l’entrer directement dans Any2DjVu Server. Cependant, lorsque le fichier pdf a été obtenu sur Gallica, il est souvent préférable de commencer par retravailler les fac-similés, afin d'obtenir un meilleur cadrage dans l'espace page. Voir plus haut pour la procédure à suivre.

[modifier] Lire à l'écran une page d'un fichier DjVu de Commons

[modifier] Linux

  1. Faites un clic-droit sur la page désirée, dans le menu déroulant choisissez : Afficher l'image.
  2. Dans la fenêtre d'adresse de la page obtenue, remplacez la taille en px par une taille adaptée à la lecture (je prends parfois 1400px, parfois 2400px). Ne modifiez rien du reste de l'adresse. Appuyez sur Entrée.
  3. Dès que l'image a fini de se charger, cliquez avec la loupe. Le texte s'affiche en taille très lisible.
Exemple :
La page que j'ai affichée a pour adresse http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Ami_commun.djvu/page208-443px-Ami_commun.djvu.jpg
Je remplace 443px par 2400px, ce qui donne
http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Ami_commun.djvu/page208-2400px-Ami_commun.djvu.jpg

[modifier] Windows

Utiliser la syntaxe suivante :
[[Image:Ami_commun.djvu|page=208|300px]]
Là encore, vous pouvez essayer une infinité de tailles.

[modifier] Utilisation du format DjVu en mode page

Une fois le fichier DjVu copié sur Commons ou Wikisource, il faut créer une page d'index, qui permet la navigation entre pages. Pour accéder à la page d'index d'un fichier Djvu, il suffit de cliquer sur Lien vers l'index., depuis la page Fichier:Le titre du livre.djvu, ou en anglais File:Le titre du livre.djvu.

Pour remplir la page d'index, voir Aide:Page d'index.

[modifier] Ressources

Conversion en ligne

Utilitaires de conversion

  • DjVu Solo
  • DjVu Libre

Plugin

Visualiseurs :

Liste de ressources sur dvju.org

[modifier] Voir aussi

Autres langues