Outil pour comparer un grand nombre de fichiers PDF? [fermé]

84

J'ai besoin de comparer un grand nombre de fichiers PDF pour son contenu optique. Étant donné que les fichiers PDF ont été créés sur différentes plates-formes et avec différentes versions du logiciel, il existe des différences structurelles. Par exemple:

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

Il devrait comparer le contenu comme un peuple humain et non la structure interne. Je veux tester les régressions entre les différentes versions du générateur PDF que nous avons utilisé.

Horcruxe7
la source
3
Une réponse partielle serait d'utiliser pdftotext et de comparer le texte contenu.
Sklivvz
Mais cela ignorera toutes les informations non textuelles comme les lignes, les boîtes, les images, les graphiques, etc. Je pense aussi que cela ne montre pas les positions optiques du texte sinon la position structurelle.
Horcrux 7 du
Je suis d'accord, ce n'est pas un critère suffisant. D'un autre côté, c'est un critère nécessaire, donc il est adéquat en tant que test unitaire.
Sklivvz
Je n'ai jamais été dans votre situation auparavant, mais j'ai essayé ExamDiff Pro pour comparer des PDF et cela a fonctionné pour moi.
cubex
Vous pouvez toujours ajouter un meilleur test unitaire plus tard!
Sklivvz

Réponses:

39

Parce qu'il n'y a pas d'outil disponible, 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 avec le même problème. Si vous rencontrez des problèmes ou si vous avez des commentaires à nous faire, vous pouvez contacter notre support.

entrez la description de l'image ici

Horcruxe7
la source
L'avantage de cet outil est qu'il ne s'agit ni d'un simple comparateur de texte ni d'un comparateur d'images. Il compare par structure, vérifie si les éléments contenant sont «les mêmes» - ainsi vos PDF comparés ne doivent pas nécessairement correspondre à 100% mais être dans une similitude définissable. Et c'est gratuit.
gamma du
Je le recommanderais aussi! Il s'est écrasé sur un document alors je leur ai envoyé. Ils l'ont réparé! : Je me sens bien. Il peut générer des images avec des différences ou il peut vous donner un rapport textuel dans la console.
Janus Troelsen
4
@gamma Où est cette application gratuite? Cela coûte au moins 200 USD par an (!). C'est gratuit une seule fois pendant 30 jours. C'est bien trop cher pour ce que j'en ferais.
ygoe
@LonelyPixel Oui, vous avez raison. La version 1.0 était gratuite (à partir du 2010-10-14). Nous avons beaucoup changé et c'est maintenant un outil payant (2012-10). Vous pouvez cependant l'essayer pendant 30 jours sans aucune limitation. Il a vraiment gagné beaucoup de nouvelles fonctionnalités, de stabilité et de fiabilité. J'espère que vous l'avez encore regardé;)
gamma
J'ai moi aussi besoin de comparer les fichiers pdf - j'ai mis au point un pot en utilisant apache pdfbox. Vérifiez ce testautomationguru.com/... par exemple et téléchargez.
vins
21

Il existe en fait un outil diffpdf.

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

Sa faiblesse est qu'il ne réagit pas bien lorsque les 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éplacer les paramètres pour comparer les deux tranches séparément.

jabial
la source
1
La version open source originale est toujours disponible sur qtrac.eu/diffpdf-foss.html
Tobias Kienzler
13

J'ai utilisé un script maison qui

  • convertit toutes les pages de deux PDF en bitmaps
  • couleurs des 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 en haut de 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 la superposition
  • inotify pour la synchronisation des processus parallèles
  • toute visionneuse d'images compatible PNG pour examiner le résultat

Avantages:

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

Les inconvénients:

  • 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 le texte et les diagrammes en noir et blanc
  • pas d'interface graphique facile à utiliser

Je cherchais un outil qui ferait la même chose au niveau PDF / PostScript.

Voici comment notre script appelle les utilitaires (notez qu'ImageMagick utilise GhostScript dans les coulisses 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
Akaihola
la source
1
Pourquoi ne pas partager le script complet?
Janus Troelsen
1
Voici ce que j'ai utilisé pour le compositing:for i in $(seq -w 0 05); do /cygdrive/c/Progra~1/ImageMagick-6.6.9-Q8/composite.exe 1-$i.png 2-$i.png result-$i.png; done
Janus Troelsen
Voici un script qui n'écrit pas de fichiers temporaires sur le disque et utilise le pdftoppm de Poppler, qui est plus rapide que Ghostscript: gist.github.com/brechtm/891de9f72516c1b2cbc1 . Il produit un JPG pour chaque page des PDF dans un pdfdiffrépertoire et imprime en outre les numéros des pages qui diffèrent entre les deux PDF.
Brecht Machiels
12

Je ne semble pas pouvoir voir cela 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 se trouvent dans get-diff-pdf.sh )

Pour autant que je puisse voir, il superpose essentiellement le texte / les graphiques de chaque page dans le (s) pdf, vous permettant de voir facilement s'il y a eu des changements ...

À votre santé!

sdaau
la source
9

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

Utilisez le -layoutcommutateur de pdftotext pour améliorer la lisibilité et avoir une idée des changements dans la mise en page.

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

#!/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
Akaihola
la source
4

Je pense que votre meilleure approche serait de convertir le PDF en images à une résolution décente et de comparer une image.

Pour générer des images à partir de PDF, vous pouvez utiliser Adobe PDF Library ou la solution suggérée à Meilleur moyen de convertir des fichiers pdf en fichiers tiff .

Pour comparer les fichiers TIFF générés, j'ai trouvé GNU tiffcmp (pour Windows une partie de GnuWin32 tiff ) et tiffinfo a fait du bon travail. Utilisez tiffcmp -l et comptez le nombre de lignes de sortie pour trouver les différences. Si vous êtes satisfait d'avoir une petite quantité de changement de contenu (par exemple des différences d'anti-aliasing), utilisez tiffinfo pour compter le nombre total de pixels et vous pouvez alors générer une valeur de différence en pourcentage.

Par ailleurs, pour quiconque effectue une simple comparaison PDF où la structure n'a pas changé, il est possible d'utiliser la ligne de commande diff et d'ignorer certains modèles, par exemple avec GNU diff 2.7:

diff --brief -I xap: -I xapMM: -I / CreationDate -I / BaseFont -I / ID --binary --text

Cela a toujours le problème qu'il ne détecte pas toujours les changements dans les noms de polices générés.

Danio
la source
Je pense que la comparaison de 2 images est plus complexe que la comparaison des fichiers PDF eux-mêmes.
Horcrux 7
La comparaison des images peut être effectuée avec GnuWin32 tiffcmp. Je mettrai à jour ma réponse pour développer cela.
danio
1

Notre produit, PDF Comparator - http://www.premediasystems.com/pdfc.html "- le fera avec élégance et efficacité. Ce n'est pas non plus gratuit et c'est une application uniquement pour Mac OS X.

Peter Truskier
la source
Cet outil compare pixel par pixel. C'est très simple. La question était une comparaison comme le fait un peuple humain.
Horcrux
1
@ Horcrux7: Mais comment faire autrement que de comparer «pixel par pixel» les yeux humains comparent-ils différentes pages qui sont similaires?!?
Kurt Pfeifle
@KurtPfeifle - Je me rends compte que c'est un vieux commentaire ... mais les êtres humains ne comparent pas les images pixel par pixel; la façon dont les êtres humains comparent les différences dans les images est assez complexe, mais repose fortement sur la reconnaissance des formes et l'heuristique.
CBRF23
@ CBRF23: C'est vrai, et j'en suis conscient - mais toutes ces heuristiques finissent toujours par prendre racine dans des comparaisons "pixel par pixel". Pour d'autres heuristiques de plus haut niveau, exécutées avec ImageMagick, voir quelques-unes de mes autres réponses: un - deux - trois .
Kurt Pfeifle
@ CBRF23: ... et l'affiche originale, (at) Hocrux7 a même mentionné des "pixels" dans sa question, et ne voulait pas explicitement "structure interne" des fichiers comparés (même si son commentaire ici encore contredit).
Kurt Pfeifle
1

En fonction de vos besoins, une solution de conversion en texte serait la plus simple et la plus directe. Je pensais que l'idée du bitmap était plutôt cool.

utilisateur602475
la source
0

le logiciel blubeam pdf le fera pour vous

M Jenkins
la source
0

Vous pouvez comparer par lots des fichiers pdf avec Tarkware Pdf Comparer. Mais ce n'est pas gratuit et nécessite Adobe Acrobat.

erks
la source