Domanda

Devo confrontare un gran numero di file PDF per il suo contenuto ottico. Poiché i file PDF sono stati creati su piattaforme diverse e con versioni diverse del software ci sono differenze strutturali. Ad esempio:

  • il blocco del testo può essere diverso
  • l'ordine di scrittura può essere diverso
  • la posizione può differire di alcuni pixel

Dovrebbe confrontare i contenuti come un popolo umano e non la struttura interna. Voglio testare le regressioni tra le diverse versioni del generatore PDF che abbiamo usato.

È stato utile?

Soluzione

Perché non esiste uno strumento simile che ne abbiamo scritto uno. Puoi scaricare il Comparatore di contenuti PDF i-net e utilizzarlo. Spero che aiuti gli altri con lo stesso problema. Se hai problemi con esso o hai un feedback per noi, puoi contattare il nostro supporto.

inserisci qui la descrizione dell'immagine

Altri suggerimenti

In realtà esiste uno strumento diffpdf.

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

Il suo punto debole è che non reagisce bene quando le aggiunte fanno spostare il nuovo testo parzialmente in una nuova pagina. Ad esempio, se la vecchia pagina 4 deve essere confrontata con la fine della pagina 5 e l'inizio della pagina 6, sarà necessario spostare i parametri per confrontare le due sezioni separatamente.

Ho usato uno script fatto in casa che

  • converte tutte le pagine di due PDF in bitmap
  • colora le pagine da PDF 1 a rosso su bianco
  • cambia da bianco a trasparente sulle pagine di PDF 2
  • sovrappone ciascuna pagina da PDF 2 in cima alla pagina corrispondente da PDF 1
  • esegue la conversione / colorazione e sovrapposizione in parallelo su più core

Software utilizzato:

  • GhostScript per la conversione da PDF a bitmap
  • ImageMagick per colorare, trasparenza e sovrapposizione
  • inotify per la sincronizzazione di processi paralleli
  • qualsiasi visualizzatore di immagini compatibile con PNG per la revisione del risultato

Pro:

  • implementazione semplice
  • tutti gli strumenti utilizzati sono open source
  • ottimo per trovare piccole differenze nel layout

Contro:

  • la conversione è lenta
  • le principali differenze tra i PDF (ad esempio l'impaginazione) si traducono in un pasticcio
  • le bitmap non sono zoomabili
  • funziona bene solo per testo e diagrammi in bianco e nero
  • nessuna GUI di facile utilizzo

Ho cercato uno strumento che avrebbe fatto lo stesso a livello di PDF / PostScript.

Ecco come il nostro script richiama le utility (nota che ImageMagick usa GhostScript dietro le quinte per fare la conversione 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

Non riesco a vederlo qui, quindi eccolo qui: via superutente: come confrontare le differenze tra due file PDF? (risposta # 229891, di @slestak) , c'è

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

(i passaggi di compilazione per Ubuntu Natty sono disponibili in get-diff-pdf.sh )

Per quanto posso vedere, fondamentalmente si sovrappone al testo / alla grafica di ogni pagina nei pdf, permettendoti di vedere facilmente se ci sono stati cambiamenti ...

Cheers!

Abbiamo anche usato pdftotext (vedi la risposta di Sklivvz) per generare versioni ASCII di PDF e wdiff per confrontarli.

Utilizza l'opzione -layout di pdftotext per migliorare la leggibilità e farti un'idea delle modifiche al layout.

Per ottenere un bel output colorato da wdiff, usa questo 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

Penso che il tuo miglior approccio sarebbe quello di convertire i PDF in immagini a una risoluzione decente e di fare un confronto di immagini.

Per generare immagini da PDF è possibile utilizzare Adobe PDF Library o la soluzione suggerita in Il modo migliore per convertire i file pdf in file tiff .

Per confrontare i file TIFF generati ho trovato GNU tiffcmp (per Windows parte di GnuWin32 tiff ) e tiffinfo ha fatto un buon lavoro. Usa tiffcmp -l e conta il numero di righe di output per trovare eventuali differenze. Se sei felice di avere una piccola quantità di modifica del contenuto (ad esempio le differenze di antialiasing), usa tiffinfo per contare il numero totale di pixel e puoi quindi generare un valore di differenza percentuale.

A proposito per chiunque faccia un semplice confronto PDF in cui la struttura non è cambiata, è possibile usare la diff della riga di comando e ignorare alcuni schemi, ad es. con GNU diff 2.7:

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

Questo ha ancora il problema che non rileva sempre le modifiche nei nomi dei caratteri generati.

Il nostro prodotto, comparatore PDF - http://www.premediasystems.com/pdfc.html " - lo farà in modo abbastanza elegante ed efficiente. Inoltre, non è gratuito ed è un'applicazione solo per Mac OS X.

In base alle tue esigenze, una soluzione di conversione in testo sarebbe la più semplice e diretta. Pensavo che l'idea della bitmap fosse piuttosto interessante.

bluebeam pdf software lo farà per te

Puoi raggruppare confrontare i file pdf con Tarkware Pdf Comparer. Ma non è gratuito e richiede Adobe Acrobat.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top