¿Herramienta para comparar grandes cantidades de archivos PDF? [cerrado]


84

Necesito comparar una gran cantidad de archivos PDF para su contenido óptico. Debido a que los archivos PDF se crearon en diferentes plataformas y con diferentes versiones del software, existen diferencias estructurales. Por ejemplo:

  • la fragmentación del texto puede ser diferente
  • el orden de escritura puede ser diferente
  • la posición puede diferir algunos píxeles

Debe comparar el contenido como un pueblo humano y no la estructura interna. Quiero probar las regresiones entre diferentes versiones del generador de PDF que usamos.


3
Una respuesta parcial sería usar pdftotext y comparar el texto contenido.
Sklivvz

Pero esto ignorará toda la información que no sea de texto, como líneas, cuadros, imágenes, gráficos, etc. También creo que no muestra las posiciones ópticas del texto, sino la posición estructural.
Horcrux7

Estoy de acuerdo, no es un criterio suficiente. Por otro lado es un criterio necesario, por lo que es adecuado como prueba unitaria.
Sklivvz

En realidad, nunca antes había estado en su situación, pero probé ExamDiff Pro para comparar archivos PDF y funcionó para mí.
cubex

¡Siempre puede agregar una prueba unitaria mejor más adelante!
Sklivvz

Respuestas:


39

Debido a que no existe tal herramienta disponible, hemos escrito una. Puede descargar el comparador de contenido PDF i-net y utilizarlo. Espero que ayude a otros con el mismo problema. Si tiene problemas con él o tiene comentarios para nosotros, puede comunicarse con nuestro soporte.

ingrese la descripción de la imagen aquí


La ventaja de esta herramienta es que no es un comparador de texto puro ni un comparador de imágenes. Compara por estructura, comprueba si los elementos que los contienen son "iguales", por lo que los PDF comparados no tienen que coincidir al 100%, pero deben tener una similitud definible. Y es gratis.
gamma

¡Yo también lo recomendaría! Se estrelló contra un documento, así que se lo envié. ¡Lo arreglaron! : Me siento genial. Puede generar imágenes con diferencias o puede darte un informe textual en la consola.
Janus Troelsen

4
@gamma ¿Dónde está esa aplicación gratuita? Cuesta al menos 200 USD por año (!). Solo es gratis una vez durante 30 días. Eso es demasiado caro para lo que haría con él.
ygoe

@LonelyPixel Sí, tienes razón. La versión 1.0 era gratuita (a partir del 14 de octubre de 2010). Hemos cambiado bastante y ahora es una herramienta de pago (2012-10). Sin embargo, puede probarlo durante 30 días sin limitaciones. Realmente ha ganado muchas características nuevas, estabilidad y confiabilidad. Espero que todavía le eches un vistazo;)
gamma

Yo también necesito comparar archivos pdf: se me ocurrió un frasco usando apache pdfbox. Consulte este testautomationguru.com/… por ejemplo y descargue.
vins

21

En realidad, existe una herramienta diffpdf.

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

Su debilidad es que no reacciona bien cuando las adiciones hacen que el texto nuevo cambie parcialmente a una nueva página. Por ejemplo, si la antigua página 4 debe compararse con el final de la página 5 y el comienzo de la página 6, deberá cambiar los parámetros para comparar las dos secciones por separado.


1
La versión original de código abierto todavía está disponible en qtrac.eu/diffpdf-foss.html
Tobias Kienzler

13

He usado un guión casero que

  • convierte todas las páginas de dos archivos PDF en mapas de bits
  • colorea páginas de PDF 1 a rojo sobre blanco
  • cambia de blanco a transparente en las páginas de PDF 2
  • superpone cada página del PDF 2 sobre la página correspondiente del PDF 1
  • ejecuta conversión / coloración y superposición en paralelo en múltiples núcleos

Software utilizado:

  • GhostScript para conversión de PDF a mapa de bits
  • ImageMagick para colorear, transparencia y superposición
  • Inotify para sincronizar procesos paralelos
  • cualquier visor de imágenes compatible con PNG para revisar el resultado

Pros:

  • implementación simple
  • todas las herramientas utilizadas son de código abierto
  • ideal para encontrar pequeñas diferencias en el diseño

Contras:

  • la conversión es lenta
  • las principales diferencias entre los PDF (por ejemplo, la paginación) dan como resultado un desorden
  • los mapas de bits no se pueden ampliar
  • solo funciona bien para texto y diagramas en blanco y negro
  • sin GUI fácil de usar

He estado buscando una herramienta que haga lo mismo a nivel de PDF / PostScript.

Así es como nuestro script invoca las utilidades (tenga en cuenta que ImageMagick usa GhostScript detrás de escena para hacer la conversión 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

1
¿Por qué no compartir el guión completo?
Janus Troelsen

1
Esto es lo que usé para componer: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

Aquí hay un script que no escribe archivos temporales en el disco y usa pdftoppm de Poppler, que es más rápido que Ghostscript: gist.github.com/brechtm/891de9f72516c1b2cbc1 . Genera un JPG para cada página de los PDF en un pdfdiffdirectorio y, además, imprime los números de las páginas que difieren entre los dos PDF.
Brecht Machiels


9

También hemos utilizado pdftotext (consulte la respuesta de Sklivvz) para generar versiones ASCII de PDF y wdiff para compararlos.

Utilice pdftotext's -layout conmutador para mejorar la legibilidad y tener una idea de los cambios en el diseño.

Para obtener una salida en color agradable de wdiff, use este script contenedor:

#!/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

4

Creo que su mejor enfoque sería convertir el PDF a imágenes con una resolución decente y luego comparar una imagen.

Para generar imágenes a partir de PDF, puede utilizar Adobe PDF Library o la solución sugerida en Mejor forma de convertir archivos pdf a archivos tiff .

Para comparar los archivos TIFF generados, encontré GNU tiffcmp (para Windows parte de GnuWin32 tiff ) y tiffinfo hizo un buen trabajo. Utilice tiffcmp -l y cuente el número de líneas de salida para encontrar las diferencias. Si está contento de tener una pequeña cantidad de cambio de contenido (por ejemplo, diferencias de suavizado), use tiffinfo para contar el número total de píxeles y luego puede generar un valor de diferencia porcentual.

Por cierto, para cualquiera que haga una comparación simple de PDF donde la estructura no ha cambiado, es posible usar la línea de comando diff e ignorar ciertos patrones, por ejemplo, con GNU diff 2.7:

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

Esto todavía tiene el problema de que no siempre detecta cambios en los nombres de fuente generados.


Creo que comparar 2 imágenes es más complejo que comparar los archivos PDF.
Horcrux7

La comparación de imágenes se puede hacer con GnuWin32 tiffcmp. Actualizaré mi respuesta para ampliar esto.
danio

1

Nuestro producto, PDF Comparator - http://www.premediasystems.com/pdfc.html "- hará esto de manera bastante elegante y eficiente. Tampoco es gratuito y es una aplicación exclusiva para Mac OS X.


Esta herramienta compara píxel por píxel. Esto es muy simple. La pregunta era una comparación como lo hace un pueblo humano.
Horcrux7

1
@ Horcrux7: ¿Pero cómo más que comparar 'píxel por píxel' los ojos humanos comparan diferentes páginas que tienen un aspecto similar?
Kurt Pfeifle

@KurtPfeifle - Me doy cuenta de que este es un comentario antiguo ... pero los seres humanos no comparan imágenes píxel a píxel; La forma en que los seres humanos comparan las diferencias en las imágenes es bastante compleja, pero se basa en gran medida en el reconocimiento de patrones y la heurística.
CBRF23

@ CBRF23: Cierto, y soy consciente de eso, pero toda esta heurística al final aún se basa en comparaciones "píxel por píxel". Para algunas otras heurísticas de nivel superior, realizadas con ImageMagick, vea algunas de mis otras respuestas: uno , dos , tres .
Kurt Pfeifle

@ CBRF23: ... y el póster original, (at) Hocrux7 incluso mencionó "píxeles" en su pregunta, y explícitamente no quería que se comparara la "estructura interna" de los archivos (aunque su comentario aquí nuevamente lo contradice).
Kurt Pfeifle

1

Según sus necesidades, una solución de conversión a texto sería la más sencilla y directa. Pensé que la idea del mapa de bits era muy buena.



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.