83 votes

Outil pour comparer un grand nombre de fichiers PDF ?

J'ai besoin de comparer un grand nombre de fichiers PDF pour leur contenu optique. Comme les fichiers PDF ont été créés sur différentes plateformes et avec différentes versions du logiciel, il existe des différences structurelles. Par exemple :

  • le chunking du texte peut être différent
  • l'ordre d'écriture peut être différent
  • la position peut être différente de quelques pixels

Il doit comparer le contenu comme une personne humaine et non la structure interne. Je veux tester les régressions entre les différentes versions du générateur de PDF que nous avons utilisé.

39voto

Horcrux7 Points 8369

C'est parce qu'il n'y a pas de tel outil disponible que nous en avons écrit un. Vous pouvez télécharger le Comparateur de contenu PDF i-net et l'utiliser. J'espère que cela aidera d'autres personnes ayant le même problème. Si vous avez des problèmes avec ce produit ou si vous avez des commentaires à nous faire, vous pouvez contacter notre service d'assistance.

enter image description here

20voto

jabial Points 286

Il existe en fait un outil diffpdf.

http://www.qtrac.eu/diffpdf.html

Sa faiblesse est qu'il ne réagit pas bien lorsque des ajouts font que le nouveau texte se déplace partiellement vers une nouvelle page. Par exemple, si l'ancienne page 4 doit être comparée à la fin de la page 5 et au début de la page 6, vous devrez décaler les paramètres pour comparer les deux tranches séparément.

13voto

akaihola Points 10007

J'ai utilisé un script maison qui

  • convertit toutes les pages de deux PDF en bitmaps
  • colorie les pages du PDF 1 en rouge sur blanc
  • change le blanc en transparent sur les pages du PDF 2
  • superpose chaque page du PDF 2 sur la page correspondante du PDF 1
  • exécute la conversion/coloration et la superposition en parallèle sur plusieurs cœurs.

Logiciel utilisé :

  • GhostScript pour la conversion de PDF en bitmap
  • ImageMagick pour la coloration, la transparence et les superpositions
  • inotify pour la synchronisation des processus parallèles
  • tout visualiseur d'images compatible avec le format PNG pour examiner le résultat.

Pour :

  • application simple
  • tous les outils utilisés sont open source
  • idéal pour trouver de petites différences dans la mise en page

Cons :

  • la conversion est lente
  • les différences majeures entre les PDF (par exemple, la pagination) entraînent un désordre.
  • les bitmaps ne sont pas zoomables
  • ne fonctionne bien que pour les textes et diagrammes en noir et blanc
  • pas de GUI facile à utiliser

J'ai cherché un outil qui ferait la même chose au niveau du PDF/PostScript.

Voici comment notre script invoque les utilitaires (notez qu'ImageMagick utilise GhostScript en coulisse pour effectuer la conversion PDF->PNG) :

$ convert -density 150x150 -fill red -opaque black +antialias 1.pdf back%02d.png
$ convert -density 150x150 -transparent white +antialias 2.pdf front%02d.png
$ composite front01.png back01.png result01.png # do this for all pairs of images

12voto

sdaau Points 6262

Je n'ai pas l'impression de pouvoir le voir ici, alors le voici : via superutilisateur : Comment comparer les différences entre deux fichiers PDF (réponse #229891, par @slestak) il y a

https://github.com/vslavik/diff-pdf

(les étapes de construction pour Ubuntu Natty peuvent être trouvées dans get-diff-pdf.sh )

D'après ce que je peux voir, il superpose le texte/les graphiques de chaque page dans le(s) pdf(s), vous permettant de voir facilement s'il y a eu des changements...

A la vôtre !

8voto

akaihola Points 10007

Nous avons également utilisé pdftotext (voir la réponse de Sklivvz) pour générer des versions ASCII des PDF et des wdiff pour les comparer.

Utilisez l'option pdftotext -layout pour améliorer la lisibilité et se faire une idée des modifications apportées à la mise en page.

Pour obtenir une belle sortie colorée de wdiff, utilisez ce wrapper script :

#!/bin/sh
RED=$'\e'"[1;31m"
GREEN=$'\e'"[1;32m"
RESET=$'\e'"[0m"
wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n $1 $2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X