Pregunta

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 ser humano y no la estructura interna. Quiero probar las regresiones entre las diferentes versiones del generador de PDF que utilizamos.

¿Fue útil?

Solución

Porque no hay una herramienta disponible que hayamos escrito. Puede descargar el i-net PDF comparer y usarlo. Espero que ayude a otros con el mismo problema. Si tiene problemas o tiene comentarios para nosotros, puede ponerse en contacto con nuestro soporte.

ingrese la descripción de la imagen aquí

Otros consejos

En realidad hay una herramienta diffpdf.

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

Su debilidad es que no reacciona bien cuando las adiciones hacen que el nuevo texto se desplace parcialmente a una nueva página. Por ejemplo, si la página 4 anterior 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 los dos sectores por separado.

He usado un script casero que

  • convierte todas las páginas en dos PDF a mapas de bits
  • colorea páginas del PDF 1 a rojo sobre blanco
  • cambia de blanco a transparente en las páginas del PDF 2
  • superpone cada página del PDF 2 en la parte superior de 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 la 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 con capacidad 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
  • diferencias importantes entre archivos PDF (p. ej., paginación) resultan en un desastre
  • los mapas de bits no tienen zoom
  • solo funciona bien para texto y diagramas en blanco y negro
  • ninguna GUI fácil de usar

He estado buscando una herramienta que hiciera lo mismo en el nivel de PDF / PostScript.

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

Parece que no puedo ver esto aquí, así que aquí está: a través de superusuario: ¿Cómo comparar las diferencias entre dos archivos PDF? (respuesta # 229891, por @slestak) , hay

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

(los pasos de compilación para Ubuntu Natty se pueden encontrar en get-diff-pdf.sh )

Hasta donde puedo ver, básicamente superpone el texto / gráficos de cada página en los pdf, lo que le permite ver fácilmente si hubo algún cambio ...

¡Salud!

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

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

Para obtener una salida de color agradable de wdiff, use este script de 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

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 desde PDF, puede usar Adobe PDF Library o la solución sugerida en La mejor manera 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. Use 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, p. 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 los cambios en los nombres de fuente generados.

Nuestro producto, PDF Comparator - http://www.premediasystems.com/pdfc.html " - Hará esto con bastante elegancia y eficiencia. Tampoco es gratis, y es una aplicación exclusiva para Mac OS X.

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

el software bluebeam pdf lo hará por usted

Puede agrupar compare archivos pdf con Tarkware Pdf Comparer. Pero no es gratis y requiere Adobe Acrobat.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top