Инструмент для сравнения большого количества PDF-файлов? [закрытый]

Мне нужно сравнить большое количество PDF-файлов для оптического контента. Поскольку PDF-файлы были созданы на разных платформах и с разными версиями программного обеспечения, существуют структурные различия. Например:

  • фрагмент текста может быть различным
  • порядок записи может быть различным
  • положение может отличаться некоторыми пикселями

Он должен сравнивать контент как человеческий народ, а не внутренний структура. Я хочу проверить регрессии между различными версиями генератора PDF, который мы использовали.

10 ответов


потому что нет такого инструмента, который мы написали. Вы можете скачать i-net PDF content comparer и использовать его. Надеюсь, это поможет другим с той же проблемой. Если у вас есть проблемы с ним или у вас есть обратная связь для нас, то вы можете связаться с нашей службой поддержки.

enter image description here


на самом деле есть инструмент diffpdf.

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

его слабость заключается в том, что он не реагирует хорошо, когда дополнения делают новый текст частично смещаться на новую страницу. Например, если старая страница 4 должна сравниваться с концом страницы 5 и началом страницы 6, вам нужно будет изменить параметры, чтобы сравнить два среза отдельно.


я использовал домашний скрипт, который

  • преобразует все страницы на двух PDF-файлов в растровые изображения
  • цвета страниц PDF 1 до красного на белом
  • меняет белый цвет на прозрачный на страницах PDF 2
  • накладывает каждую страницу из PDF 2 поверх соответствующей страницы из PDF 1
  • запускает преобразование / окраску и наложение параллельно на нескольких ядрах

программное обеспечение использовать:

  • GhostScript для PDF-в-растровое преобразование
  • ImageMagick для окраски, прозрачности и наложения
  • в inotify для синхронизации параллельных процессов
  • любой png-совместимый просмотрщик изображений для просмотра результата

плюсы:

  • простая установка
  • все используемые инструменты с открытым исходным кодом
  • отлично подходит для поиска небольших различий в макете

плюсы:

  • преобразование медленно
  • основные различия между PDF-файлами (например, разбиение на страницы) приводят к беспорядку
  • растровые изображения не масштабируются
  • работает только для черно-белого текста и графики
  • нет простой в использовании GUI

Я искал инструмент, который сделал бы то же самое на уровне PDF/PostScript.

вот как наш скрипт вызывает утилиты (обратите внимание, что ImageMagick использует GhostScript за кулисами, чтобы сделать 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

Я, кажется, не могу видеть это здесь, так что вот оно: via суперпользователь: как сравнить различия между двумя файлами PDF? (ответ #229891, @slestak), есть

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

(шаги сборки для Ubuntu Natty можно найти вget-diff-pdf.sh)

насколько я могу видеть, он в основном накладывает текст / графику каждой страницы в pdf(s), что позволяет легко увидеть, если были какие-то изменения...

Ура!


мы также использовали pdftotext (см. ответ Sklivvz) для генерации ASCII-версий PDF и wdiff сравнивать их.

использовать pdftotext -layout переключатель для повышения читабельности и получить некоторое представление об изменениях в макете.

чтобы получить хороший цветной вывод из wdiff, использовать этот сценарий:

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

Я думаю, что ваш лучший подход будет конвертировать PDF в изображения с приличным разрешением, а не сравнивать изображения.

для создания изображений из PDF вы можете использовать библиотеку Adobe PDF или решение, предложенное в лучший способ конвертировать pdf-файлы в TIFF-файлы.

для сравнения сгенерированных файлов TIFF я нашел GNU tiffcmp (для windows часть GnuWin32 tiff) и tiffinfo сделал хорошую работу. Использовать tiffcmp-l и подсчитать количество строк вывода, чтобы найти какие-либо различия. Если вы счастливы иметь небольшое количество изменений контента (например, сглаживание различий), используйте tiffinfo для подсчета общего количества пикселей, а затем вы можете создать процентное значение разницы.

кстати, для тех, кто делает простое сравнение PDF, где структура не изменилась, можно использовать diff командной строки и игнорировать определенные шаблоны, например, с GNU diff 2.7:

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

этот все еще есть проблема, что она не всегда улавливает изменения в сгенерированных именах шрифтов.


наш продукт, компаратор ПДФ -http://www.premediasystems.com/pdfc.html" - сделает это довольно элегантно и эффективно. Это также не бесплатно,и это приложение только для Mac OS X.


исходя из ваших потребностей, преобразование в текстовое решение будет самым простым и прямым. Я действительно думал, что идея с растровым изображением была довольно крутой.


программное обеспечение blubeam pdf сделает это за вас


пакета сравнить pdf файлы с Tarkware Pdf Comparer. Но это не бесплатно и требует Adobe Acrobat.