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

StackOverflow https://stackoverflow.com/questions/145657

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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-файлами (например.нумерация страниц) приводит к путанице
  • растровые изображения не масштабируются
  • хорошо работает только с черно-белым текстом и диаграммами
  • нет простого в использовании графического интерфейса

Я искал инструмент, который делал бы то же самое на уровне 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

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

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

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

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

Ваше здоровье!

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

Используйте 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 $1 $2

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

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

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

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

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

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

Наш продукт, PDF Comparator - http://www.premediasystems.com/pdfc.html» — сделает это довольно элегантно и эффективно.Это также не бесплатное приложение, предназначенное только для Mac OS X.

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

Программа Blubeam PDF сделает это за вас

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top