Мне нужно сравнить большое количество файлов PDF для оптического содержимого. Поскольку файлы PDF были созданы на разных платформах и с разными версиями программного обеспечения, существуют структурные различия. Например:
Он должен сравнивать контент, как люди, а не внутреннюю структуру. Я хочу проверить регрессию между разными версиями генератора PDF, который мы использовали.
Но при этом игнорируется вся нетекстовая информация, такая как линии, прямоугольники, изображения, диаграммы и т. д. Я также думаю, что он не показывает оптические позиции текста, кроме структурной позиции.
Согласен, это не достаточный критерий. С другой стороны, это необходимый критерий, поэтому он подходит в качестве модульного теста.
Позже вы всегда сможете добавить лучший модульный тест!
Если на страницах есть изображения, и вы хотите получить для них оценку, похожую на человеческую, вы мало что можете сделать, кроме как попросить человека сравнить эти страницы, если вы не хотите работать над совершенно новым проектом, таким же большим, как ваш текущий. , чтобы попробовать.
Никогда раньше не попадал в вашу ситуацию, но я попробовал ExamDiff Pro для сравнения PDF-файлов, и у меня это сработало.
Я думаю, проверка Bitmap должна работать в вашем случае. Я использую инструмент автоматизации для сравнения двух изображений с помощью контрольной точки растрового изображения
Какое умное, \\ * #? `% & Решение закрыть этот вопрос как 'неконструктивный'! (Надо любить, когда модераторы, закрывающие вопросы, уничтожают контент сообщества, который содержит теги, в которых эти же самые моды не имеют никакой личной репутации!)
Еще один случай бесполезного закрытия вопроса, касающегося очень актуального варианта использования в реальном мире. Мне жаль, что я не знал, как предложить здравые рассуждения о Мете, чтобы в конце концов это прекратилось. Просто чувствует так неправильно каждый раз, когда это происходит.
связанные: superuser.com/q/46123/35237
Существует БЕСПЛАТНАЯ библиотека для сравнения пикселей в формате PDF. Проверьте этот блог. testautomationguru.com/…
Вы можете использовать бесплатный инструмент Copyleaks Сравните два PDF. Вы можете загрузить до 12 файлов для сравнения. Кроме того, сравнение является текстовым, а не семантическим (стиль GIT).





Я думаю, что ваш лучший подход - преобразовать PDF в изображения с приличным разрешением, а затем сравнить изображения.
Для создания изображений из PDF вы можете использовать Adobe PDF Library или решение, предложенное на Лучший способ конвертировать файлы 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
По-прежнему существует проблема, заключающаяся в том, что он не всегда улавливает изменения в сгенерированных именах шрифтов.
Я думаю, что сравнение двух изображений более сложное, чем сравнение самих файлов PDF.
Сравнение изображений можно выполнить с помощью GnuWin32 tiffcmp. Я обновлю свой ответ, чтобы подробнее остановиться на этом.
Я использовал самодельный сценарий, который
Используемое программное обеспечение:
Плюсы:
Минусы:
Я искал инструмент, который делал бы то же самое на уровне 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
Почему бы не поделиться полным сценарием?
Вот что я использовал для композитинга: for i in $(seq -w 0 05); do /cygdrive/c/Progra~1/ImageMagick-6.6.9-Q8/composite.exe 1-$i.png 2-$i.png result-$i.png; done
Вот сценарий, который не записывает временные файлы на диск и использует pdftoppm Poppler, который быстрее, чем Ghostscript: gist.github.com/brechtm/891de9f72516c1b2cbc1. Он выводит по одному JPG для каждой страницы PDF-файлов в каталоге pdfdiff и дополнительно печатает номера страниц, которые различаются в двух PDF-файлах.
Мы также использовали pdftotext (см. Ответ Sklivvz) для создания версий PDF в формате ASCII и wdiff для их сравнения.
Используйте переключатель -layout в pdftotext, чтобы улучшить читаемость и получить представление об изменениях в макете.
Чтобы получить красивый цветной вывод из wdiff, используйте этот сценарий оболочки:
#!/bin/sh
RED=$'\e'"[1;31m"
GREEN=$'\e'"[1;32m"
RESET=$'\e'"[0m"
wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n
Потому что нет такого инструмента, который мы написали. Вы можете скачать i-net средство сравнения содержимого PDF и использовать его. Я надеюсь, что это поможет другим с той же проблемой. Если у вас возникли проблемы или у вас есть отзыв для нас, вы можете связаться с нашей службой поддержки.

Преимущество этого инструмента в том, что это не средство сравнения чистого текста и не средство сравнения изображений. Он сравнивает по структуре, проверяет, являются ли содержащиеся элементы «одинаковыми», поэтому сравниваемые PDF-файлы не должны совпадать на 100%, но должны быть в пределах определенного сходства. И это бесплатно.
Я тоже рекомендую это! Он разбился о документе, поэтому я отправил его им. Они это исправили! : D Чувствую себя прекрасно. Он может генерировать изображения с различиями или может предоставить вам текстовый отчет в консоли.
@gamma Где это бесплатное приложение? Стоит минимум 200 долларов в год (!). Это бесплатно только один раз в течение 30 дней. Это слишком дорого для того, что я бы с этим делал.
@LonelyPixel Ага, ты прав. Версия 1.0 была бесплатной (по состоянию на 14.10.2010). Мы немного изменили его, и теперь это платный инструмент (2012-10). Однако вы можете попробовать его в течение 30 дней без каких-либо ограничений. Он действительно приобрел много новых функций, стабильность и надежность. Надеюсь, вы еще посмотрите на него;)
Мне тоже нужно сравнить файлы pdf - я придумал банку, используя apache pdfbox. Посмотрите этот testautomationguru.com/…, например, и загрузите.
Это отличный инструмент. К сожалению, его сильно отвлекают номера строк (я сравниваю созданный автором PDF-файл с доказательствами страницы издателя, у которых есть номера строк). Можно ли заставить инструмент игнорировать (строчные) числа?
Программа bluebeam pdf сделает это за вас
Вы можете пакетировать файлы сравнить pdf с помощью Tarkware Pdf Comparer. Но это не бесплатно и требует Adobe Acrobat.
Наш продукт PDF Comparator - http://www.premediasystems.com/pdfc.html "- сделает это довольно элегантно и эффективно. Он также платный и предназначен только для Mac OS X.
Этот инструмент сравнивает пиксель за пикселем. Это очень просто. Вопрос был в сравнении, как это делают люди.
@ Horcrux7: Но как еще, кроме сравнения «пиксель за пикселем», человеческие глаза сравнивают разные страницы, которые выглядят одинаково?!?
@KurtPfeifle - Я понимаю, что это старый комментарий ... но люди нет сравнивают изображения по пикселям; Способ, которым люди сравнивают различия в изображениях, довольно сложен, но в значительной степени зависит от распознавания образов и эвристики.
@ CBRF23: Верно, и я знаю об этом, но вся эта эвристика, в конце концов, все еще коренится в "попиксельных" сравнениях. Для некоторых других эвристик более высокого уровня, выполняемых с ImageMagick, см. Некоторые из моих других ответов: один - два - три.
@ CBRF23: ... и исходный постер, (at) Hocrux7 даже упомянул «пиксели» в своем вопросе и явно не хотел, чтобы сравнивалась «внутренняя структура» файлов (хотя его комментарий здесь снова противоречит этому).
@KurtPfeifle - хорошие примеры использования ImageMagik - но я бы не стал сравнивать это с человеческим восприятием, люди просто не созданы для сравнения пикселей за пикселем. Я подтверждаю свою точку зрения: используя ваш пример мастера с четырьмя изображениями, выберите любые два из них и попытайтесь идентифицировать все разные пиксели без использования каких-либо инструментов - только ваши глаза. Я гарантирую, что ты не сможешь этого сделать. Вы можете заметить некоторые кластеры пикселей, которые отличаются, но без использования инструментов (например, программного обеспечения или письменных принадлежностей) вы не сможете этого сделать. Вы не можете определить, сколько здесь пикселей, не говоря уже о том, что все они разные.
@KurtPfeifle - я не утверждаю, что этот ответ полезен - просто опровергая ваше утверждение о том, что сравнение пикселей за пикселями аналогично тому, как люди воспринимают различия в изображениях;)
@ CBRF23: Вы упускаете суть. OP (от 2008 г.!) Попросил инструмент сравнить «большое количество файлов PDF» - просто потому, что он не хотел, чтобы это делали сами люди. Ответы (хорошие и плохие) здесь отражают то, что предлагали люди в то время. (Я сам наткнулся на эту ветку только в 2012 году!). --- Конечно Я не могу идентифицировать без инструментов все пиксели, которые отличаются! С чего вы взяли, что я так сказал? - Если вы используете попросить инструмент, вы должны основывать его на сравнении пикселей. И даже человеческое восприятие, в конце концов, основано на "попиксельном" просмотре ...
Позвольте нам продолжить обсуждение в чате.
@ CBRF23: Извините, я просто ухожу + офлайн ....
@KurtPfeifle - не беспокойтесь, это обсуждение не по теме в посте семилетней давности - у нас обоих есть дела поважнее;)
Исходя из ваших потребностей, преобразование в текст будет самым простым и прямым решением. Я действительно думал, что идея с растровым изображением была довольно крутой.
На самом деле есть инструмент diffpdf.
http://www.qtrac.eu/diffpdf.html
Его слабость в том, что он плохо реагирует, когда при добавлении новый текст частично смещается на новую страницу. Например, если старую страницу 4 нужно сравнить с концом страницы 5 и началом страницы 6, вам нужно будет сместить параметры, чтобы сравнить два фрагмента по отдельности.
Оригинальная версия с открытым исходным кодом все еще доступна по адресу qtrac.eu/diffpdf-foss.html
Кажется, я не вижу этого здесь, так что вот оно: через суперпользователь: Как сравнить различия между двумя файлами PDF? (ответ №229891, автор @slestak) есть
https://github.com/vslavik/diff-pdf
(шаги сборки для Ubuntu Natty можно найти в get-diff-pdf.sh)
Насколько я понимаю, он в основном накладывает текст / графику каждой страницы в pdf (-ах), что позволяет вам легко увидеть, были ли какие-либо изменения ...
Ваше здоровье!
Частичный ответ - использовать pdftotext и сравнить содержащийся текст.