Vu ailleurs

Laspic sur  logo diigo
consulter - s'abonner

Compresser un document PDF numérisé

Ou comment résoudre le problème d’embonpoint de certains documents PDF

← Retour vers l'atelier

10 juin 2010,
par Jonathan
Mis à jour le 9 février 2011

Mots-clés
Mode d’emploi
Level 2
Numérisation
PDF

16291 lectures
22 commentaires

Contenu mis à disposition sous licence Creative Commons

Cet article a été diffusé
sur le Planet Libre

Le procédé dont je faisais récemment état au sujet de la numérisation d’un document long en document PDF, s’il est plutôt satisfaisant du point de vue de sa réalisation, pose néanmoins un sacré problème quant au volume des fichiers générés. Comme je le remarquais en conclusion, les problèmes posés par cet embonpoint sont multiples : lenteur à l’ouverture comme à la navigation, impossibilité pour l’envoyer par courrier électronique, stockage problématique en cas de multiplication de fichiers de ce type. Une cure d’amaigrissement post-numérisation sera donc souvent indispensable.

Ce mode d’emploi s’appuie de façon éhontée sur cette astuce récente d’Absolacom [1], que je remercie d’ailleurs pour cette découverte. Non pas que son article soit incomplet, mais puisque l’outil Ghostscript fonctionne aussi bien sous MS Windows, Mac OSX que GNU/Linux, je trouve dommage que tous ne puissent pas en profiter. Voici donc de quoi vous débrouiller quelque soit votre système d’exploitation, avec en prime un aperçu comparatif des résultats obtenus.

Un dernier point avant d’entrer dans le vif du sujet, notez bien que ce procédé ne donne de résultats probants que si votre document PDF contient une proportion significative d’images, comme c’est le cas pour un document numérisé. Si au contraire le document à compresser est essentiellement composé de texte (par exemple créé à l’aide de la suite bureautique OpenOffice.org), vous remarquerez peut-être comme moi que l’effet est inverse.

Ghostscript via le terminal

Ghostscript est un logiciel libre, très pointu, destiné à l’édition et l’impression de document PS et PDF. C’est concrètement un interpréteur de commande, c’est à dire un outil à qui l’on donne des instructions écrites (au clavier) en vue d’une action prédéterminée, ici pour la manipulation d’un document PDF choisi. Il existe des interfaces graphiques pour faciliter l’usage de cet outil, mais qui ne nous seront pas d’une grande aide ici [2].

Une seule instruction va suffire pour effectuer le travail, qui diffère légèrement selon le système d’exploitation utilisé (voir ci-dessous le paragraphe qui vous convient). Le paramètre -dPDFSETTINGS est laissé à votre appréciation, selon que le degré de compression voulu :

  • /screen : Compression forte, qualité faible. Destine le document à une lecture basique sur écran uniquement.
  • /ebook : Compression forte, qualité moyenne. Réglage optimisé pour une lecture électronique confortable. Très bon compromis, comme on s’en aperçoit ici en conclusion.
  • /printer : Compression moyenne, qualité moyenne. Le document reste de bonne qualité en cas d’impression papier.
  • /prepress : Compression faible, qualité haute. À utiliser en cas d’impression professionnelle prévue.

Également, il ne faudra pas oublier d’adapter à votre situation input.pdf et output.pdf, respectivement le nom du fichier à modifier et le nom du nouveau fichier (la version allégée).

En pratique, sous GNU/Linux

Installation. Cet outil est très probablement déjà installé sur votre système. Si ce n’est pas le cas, référez-vous aux dépôts de votre distribution qui ne manquera pas de le proposer en standard.

Préalable. Ouvrez un terminal, et placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante (remplacez éventuellement « Bureau » par « Desktop ») :

cd ~/Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d’entrée et de sortie adéquats :

gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer  -sOUTPUTFILE=output.pdf -f input.pdf

Il ne vous reste plus qu’à valider !

Édit du 6/12/2010 : Pour rendre les choses encore plus faciles, j’ai concocté une action nautilus qui devrait pouvoir vous aider (si toutefois vous utilisez GNOME sur votre plateforme GNU/Linux, et non pas KDE par exemple).

En pratique, sous Mac OSX

Installation. Vous trouverez un installateur sur cette page, normalement en dernière version. Inutile ici d’installer Foomatic, seul nous intéresse Ghostscript for Mac OS X. Notez que deux versions sont disponibles : pour Panther (10.3.x) ainsi que pour Jaguar (10.2.x).

Préalable. Ouvrez un terminal, et placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante (remplacez éventuellement « Bureau » par « Desktop ») :

cd ~/Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d’entrée et de sortie adéquats :

/usr/local/bin/gsos2 -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer  -sOUTPUTFILE=output.pdf -f input.pdf

Il ne vous reste plus qu’à valider !

En pratique, sous MS Windows

Installation. Sur cette page, choisissez la dernière version disponible et, en bas de la page qui s’affiche, vous trouverez le fichier d’installation. Installer Ghostscript, en utilisant surtout l’emplacement proposé par défaut.

Préalable. Ouvrez un terminal par le menu Démarrer > Exécuter, en tapant « cmd ». Placez-vous dans le répertoire adéquat (sur le bureau dans cet exemple), avec la commande suivante :

cd %HOMEPATH%\Bureau

Compression. Recopiez dans le terminal la commande suivante, en adaptant le paramètre de compression choisi et avec les noms des fichiers d’entrée et de sortie adéquats :

"C:\Program Files\gs\gs8.64\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer  -sOUTPUTFILE=output.pdf -f input.pdf

Prenez garde à adapter - dans le premier terme de la commande - la version de Ghostscript utilisée (ici « 8.64 ») en fonction de celle installée par vos soins (par exemple « 8.71 » [3]).

Il ne vous reste plus qu’à valider !

Conclusion

Reprenons alors notre document témoin, le premier chapitre de l’ouvrage « Les structures élémentaires de la vie religieuse » d’Émile Durkheim (1929). Pour rappel, les 29 pages scannées deux par deux (format poche), avec une résolution de 300 dpi (pour une impression confortable), ont généré un document PDF de 15 images pour un volume total de 78 Mo.

Concernant notre document témoin, nous obtenons après un passage à la moulinette Ghostscript :

Je vous laisse juger par vous-même le rendu à l’écran, avec les documents ci-joints. Pour ma part, je considère qu’à l’impression, du point de vue de la qualité de rendu, le /screen est à proscrire ; et du point de vue du volume en Mo, le mode /printer reste ridibitoire même si la qualité d’impression est très bonne [4].

Les performances du mode /ebook sont elles plutôt étonnantes, mais les faits sont là : très petit volume (comparé au mode /printer), et très bonne qualité (comparé au mode /screen). En définitive, un excellent rapport qualité/compression, équilibre tout à fait idéal pour qui souhaite un document léger et une qualité d’impression correcte, ou tout simplement bien fichu.

Auriez-vous des retours à ce sujet ? N’hésitez pas à me faire part de vos expériences qui temporiseraient ce résultat (ou non)...

Notes

[1] Astuce qui semble elle-même trouver sa source ici.

[2] Non pas que ce soit impossible, mais j’ai pour ma part eu des problèmes de stabilité avec GSView pour ouvrir de volumineux document PDF. L’utilisation de la console est certes austère, néanmoins l’opération fonctionne à tout les coups.

[3] Chose étonnante, la version 8.71 ne donne aucun résultat chez moi. La 8.64 fonctionne beaucoup mieux pour sa part.

[4] Ce mode pourra faire l’affaire exceptionnellement cependant, quand justement la qualité de rendu papier sera la priorité absolue.

Illustration : Franklin Press, Pictorial Field Book of the Revolution, by B.J. Lossing

#1 Jean-Yves , le 11 juin 2010 à 10:08

Juste un détail.

J’ai voulu consulter les documents compressés pour comparer les qualités.

Je me retrouve à télécharger plus de 20 Mo.

Il serait judicieux de ne mettre qu’un extrait de chaque document (exemple : 1 page, la même dans les trois modes)

Merci pour l’article. Le mode /ebook semble effectivement le meilleur.

#2 Jonathan, le 11 juin 2010 à 10:17

Il est évidemment tout à fait absurde pour visualiser de télécharger l’intégralité du document ! :) Je m’applique tout de suite à corriger cela.

Merci pour ce retour, et cette remarque judicieuse !

#3 jaum, le 23 novembre 2010 à 00:14

Bonjour,

Merci pour le tuto !!
Pour ma part : gs9.00 avec documents numérisés ;
le resultat n’a pas été aussi efficace que le tien en terme de rendement (de 16MO je passe a 12MO) en /ebook mais la qualité est toujours vraiment bonne.
Par contre en /printer = cela augmente à 18MO !!
En /screen le rendement est très bon (2,7MO) mais réelle baisse de qualité et surtout j’ai eu 2 pages complêtement illisibles !
Outil qui reste interessant !

#4 Jonathan, le 23 novembre 2010 à 11:43

Oui, j’ai déjà eu vent de ce type de rendement moindre. Je ne sais absolument pas à qui c’est dû, d’autant que ça ne m’est jamais arrivé. Et pourtant j’en ai réduit un paquet déjà !

Par contre, les deux pages illisibles me surprennent. De quoi était composé ton pdf ? D’images scannées ? Avec quelle proportions de texte brut ? Et quelle était sa provenance ? Ou était le problème : ces pages étaient-elles floues ? Tout à fait noires (ou blanches) ?

En tout cas, merci pour ton retour d’expérience ! :)

#5 Laure-Anne, le 24 novembre 2010 à 16:07

Bonjour !

Merci beaucoup pour ce tutoriel - il répond (en théorie) exactement à ce dont j’ai besoin. Cependant je suis plutôt débutante en la matière, et je ne m’en sors pas du tout avec le terminal (sous Windows 7).

Ghostscript s’est enregistré automatiquement dans "Doawnloads" (C :\Users\Laure-Anne\Downloads).

La première chose que je ne comprends pas est la suivante : à quoi cela renvoie-t-il "se placer dans le répertoire adéquat" ?

Ensuite, quand j’essaie d’exécuter la seconde commande, je tombe systématiquement sur un message d’erreur.

Merci beaucoup !

#6 Jonathan, le 24 novembre 2010 à 17:02

@Laure-Anne : tout d’abord, note que je n’ai jamais essayé cette méthode sous Windows 7 (système que je ne connais pas par ailleurs). Ceci dit, il n’y a pas de raison a priori que cela ne fonctionne pas !

« se placer dans le répertoire adéquat » signifie : aller dans le répertoire où se trouve ton fichier PDF original. Comme tu le ferais avec l’explorateur de fichier, il est nécessaire de le faire avec le terminal. Pour que la commande ici indiquée fonctionne simplement dispose ton PDF sur le bureau.

Ensuite vérifie que tu as bien installé le programme téléchargé dans ’Downloads’ (dans Program Files normalement) ? Si oui, indique moi le message d’erreur reçu.

#7 Desidia, le 3 décembre 2010 à 22:11

Bonjour,

J’ai trouvé très intéressant cette présentation de l’option -dPDFSETTINGS de Ghostscript, que je ne connaissais pas.

Mais j’ai des réserves quant à l’intérêt de ta méthode, quand il s’agit de scanner des pages pour en faire un document composé uniquement d’images. Le mode de compression de ces images au sein du PDF mériterait un livre à lui seul. Le logiciel produisant le PDF va-t-il respecter le mode de compression natif de cette image (jpeg par ex.) en l’intégrant telle quelle, la décompresser, apporter une compression supplémentaire... ?

Si tu utilises convert d’ImageMagick, par ex., le fichier pdf sera à peine plus lourd (quelques %) que le jpeg d’origine.

Je pense qu’il vaudrait mieux optimiser tes images en fonction de l’usage de destination (aussi bien en densité/dpi qu’en taux de compression), la conversion en pdf laissant ce choix inchangé. Évidemment, je reconnais que si tu numérises en basse qualité, tu ne pourras pas revenir en qualité pre-press ultérieurement... Mais si tu destines ton PDF à la lecture sur écran, tu obtiendras sans doute de meilleurs résultats qu’en recompressant le pdf comme tu le fais avec ghostscript.

Par contre, si tu composes toi-même un document avec Writer, tu as la possibilité lors de l’export en pdf de préciser si les images doivent être compressées sans perte, en jpg, ou ré-échantillonées.

C’est sans doute plus facile que de passer par ghostcript. À présent, le convertisseur interne à openOffice est-il plus ou moins performant que ghostscript, je l’ignore.

#8 Jonathan, le 6 décembre 2010 à 15:51

@Desidia : tu dis ici beaucoup de choses très intéressantes, alors permet moi de te répondre en plusieurs points :

  1. Évidemment, il est toujours plus efficace et plus performant d’optimiser le rapport qualité/poids dans les réglages du processus de numérisation. L’économie de manipulation permet de gagner non seulement du temps mais aussi en qualité d’image. Mais cela implique de connaître de façon pointue chaque paramètre ; et cela ne résout pas le problème du traitement des documents PDF générés par une tierce personne.
  2. Concernant ImageMagick, la problématique est similaire. Très probablement, cet outil spécialisé fait le boulot bien mieux, mais faut-il encore une fois maîtriser toutes les subtiles options.
  3. La compression des PDF est certainement complexe (ce qui expliquerait la difficulté de trouver des outils adaptés), c’est justement l’intérêt de la solution présentée ici : par le choix de quatre rendus possibles, elle simplifie de façon drastique la problématique. Je reconnais volontiers cependant que c’est autant son point fort que son point faible, c’est vrai.
  4. Quant à la composition de PDF composés exclusivement d’images dans Openoffice, je n’ai jamais essayé : trop fastidieux (à moins qu’une solution spécifique existe ?). Je préfère de loin la numérisation en PDF native, ou sinon l’assemblage avec un outil de type pdftk.

Au final, oui ghostscript est plus facile. Si du point de vue technique cela reste certainement approximatif, et donc problématique pour de la PAO par exemple, cela reste amplement suffisant pour un usage de type ebook. Merci pour ton retour détaillé et éclairé !

#9 Gwen, le 9 décembre 2010 à 18:43

Bonjour,

À la suite de la lecture de ton article, qui correspond à mes attentes, j’ai cependant des difficultés à appliquer ce que tu recommandes.

Après avoir correctement installé la dernière version de Ghostscript (9.00), je n’arrive pas à compresser mon fichier.

Je l’ai placé sur le bureau, je rentre la commande correspondant à l’OS Windows et il me renvoie toujours le même message :
"Unknow switch -inputpdf - ignoring"
où input.pdf représente le fichier que je souhaite compresser.

Peux-tu m’en dire plus ?
Merci d’avance.

#10 Jonathan, le 9 décembre 2010 à 19:26

@Gwen : je ne peux malheureusement pas t’aider, n’arrivant pas à reproduire l’erreur. Ce message n’a pas l’air de vouloir dire qu’il ne trouve pas le fichier, mais à tout hasard n’as-tu pas oublié d’entrer la commande « cd %HOMEPATH%\Bureau » avant la compression effective ? Sinon, autre piste, cela pourrait vouloir signifer une mauvaise prise en compte des paramètres, as-tu essayé d’encadrer de guillemets "" le nom du fichier input.pdf ?

Voilà les pistes auxquelles je pense. Une dernière peut-être qui m’a sauvé un jour : tester une version antérieure de Ghostscript. Bon courage !

#11 Cédric, le 13 décembre 2010 à 01:07

Bonjour,

Merci beaucoup pour cette commande que je ne connaissais pas !

Juste un petit détail : sous Linux, l’option "- g" (la 1ère de la liste) semble attendre la taille (largeur*hauteur) du fichier de sortie, qu’on ne connait pas forcément a priori.

J’ai donc supprimé cette option et cela a très bien fonctionné, puisque mon fichier a quasiment perdu un facteur 10 au niveau de son poids ! :D

#12 Jonathan, le 13 décembre 2010 à 09:49

@Cédric : Merci pour ton retour. L’option "-g" est en effet facultative, même s’il me semble que c’est ici l’option "-q" qui apparaît. Ceci dit je te donne raison quand même, puisqu’elle est tout autant facultative : elle ne fait qu’activer le mode non-verbeux (dixit le man).

#13 Stephane, le 6 janvier 2011 à 08:37

Bonjour, peux t-on faire des traitements par lots en écrasant les anciens fichiers ?

#14 Jonathan, le 6 janvier 2011 à 16:36

@Stephane : d’après ce que je peux lire sur les man pages de Ghoscript, il ne me semble pas. En même temps je ne suis pas spécialiste... sur quelle plateforme es-tu ? Il y a peut-être moyen d’intégrer ça à l’action nautilus sans trop de problème par contre...

#15 Edouard, le 27 janvier 2011 à 13:41

Super tuto, merci beaucoup.

#16 frogleap, le 28 janvier 2011 à 16:36

Une autre solution consisterait à numériser le document avec un logiciel incluant la reconnaissance de caractère (OCR). En ce cas le document PDF de sortie est théoriquement (je n’ai pas essayé...) constitué de texte et non pas d’image. Et il devient beaucoup plus léger, et compressible avec les outils habituels (zip / rar / etc...).

Bien sûr ceci ne fonctionnerait pas avec des images... mais pour un livre, cela semblerait intéressant (n’est-ce pas la méthode utilisée par Google Books ?).

Je crois même qu’il existe des utilitaires qui transforme un PDF scanné en PDF texte avec OCR (Cvisiontech.com ???).

#17 , le 16 mai 2011 à 09:29

Bonjour,

Comment faire quand le nom du pdf comporte un espace ?

#18 Jonathan, le 16 mai 2011 à 12:36

Deux solutions s’offrent à vous :

  1. Renommer votre pdf avant l’opération de compression (tout bêtement, méthode universelle) ;
  2. Modifier dans la commande indiquée précédemment : input.pdf par "input.pdf" (fonctionne a priori sur toutes les plateformes, sous GNU/Linux pour sûr).
#19 maher, le 23 août 2011 à 09:56

j’ai un problème mon script ne fonctionne pas avec gs 9.01
stp j’au besoin d’aide

#20 Vega, le 17 novembre 2011 à 19:04

Excellent tutoriel. Merci beaucoup pour ce partage ce fut très utile et efficace.

#21 titou , le 2 février à 16:18

Merci pour la technique. Je suis sous XP ça fonctionne avec 9.02.
J’ai fait un fichier bat (écrire les 2 formules dans un fichier texte, l’enregistrer puis changer son extension en .bat. Exemple : CompressPDF.txt = CompressPDF.bat) il devient un exécutable. Si vous voulez compresser un autres fichier pdf il n y a plus qu’à modifier le nom dans le fichier .bat.

#22 Jonathan, le 2 février à 16:34

Merci pour ce retour, je n’ai saisi tous les détails mais en tout c’est une nouvelle piste à explorer... :)


Une réaction, un commentaire ?
  • Pour créer un paragraphe, laissez simplement une ligne vide. Pour mettre en forme votre texte ou insérer un lien, utilisez les boutons proposés.

Mentions légales et crédits  -  Contact  -  Abonnez-vous !

                                                                                                           

21 billets, 12 articles et 72 commentaires publiés.
Ce site accueille actuellement une moyenne de 74 visiteurs par jour.
Dernière mise à jour le jeudi 2 février 2012.

Réalisé avec Spip 2.1   -   Connexion