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

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

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

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

Ответ 1

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

enter image description here

Ответ 2

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

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

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

Ответ 3

Я использовал испеченный на дому script, который

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

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

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

Плюсы:

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

Минусы:

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

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

Вот как наш script вызывает утилиты (обратите внимание, что 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

Ответ 4

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

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

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

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

Ура!

Ответ 5

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

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

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

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

Ответ 6

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

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

Для сравнения сгенерированных файлов TIFF я нашел GNU tiffcmp (для части окна 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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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