Инструмент для сравнения большого количества PDF-файлов? [закрытый]
Мне нужно сравнить большое количество PDF-файлов для оптического контента. Поскольку PDF-файлы были созданы на разных платформах и с разными версиями программного обеспечения, существуют структурные различия. Например:
- фрагмент текста может быть различным
- порядок записи может быть различным
- положение может отличаться некоторыми пикселями
Он должен сравнивать контент как человеческий народ, а не внутренний структура. Я хочу проверить регрессии между различными версиями генератора PDF, который мы использовали.
10 ответов
потому что нет такого инструмента, который мы написали. Вы можете скачать i-net PDF content comparer и использовать его. Надеюсь, это поможет другим с той же проблемой. Если у вас есть проблемы с ним или у вас есть обратная связь для нас, то вы можете связаться с нашей службой поддержки.
на самом деле есть инструмент 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.
исходя из ваших потребностей, преобразование в текстовое решение будет самым простым и прямым. Я действительно думал, что идея с растровым изображением была довольно крутой.
пакета сравнить pdf файлы с Tarkware Pdf Comparer. Но это не бесплатно и требует Adobe Acrobat.