Есть ли решение, чтобы узнать сходство двух PDF без подробного сравнения содержимого - PullRequest
3 голосов
/ 30 марта 2009

Я хочу знать сходство буксируемых PDF-файлов, но не хочу сравнивать подробности. Есть ли какое-либо решение только от его внешней структуры. Это возможно? Спасибо!

Ответы [ 3 ]

3 голосов
/ 30 марта 2009

Это звучит потенциально сложно, но вот несколько низко висящих фруктов из метаданных PDF, в порядке сложности.

  1. Метаданные документа, такие как eBook-title и Title
  2. Количество страниц в документе (с учетом /Page директив)
  3. Сравните метаданные для каждой страницы, такие как MediaBox, CropBox, BleedBox, TrimBox
  4. Найдите встроенный контент, например изображения и шрифты для документов, и посмотрите, идеально ли они соответствуют.
  5. Вытяните простой текст и сравните слова: количество слов, наиболее распространенные слова и т. Д. Для западного языка вы можете просто запустить PDF через поиск строк, как strings в Linux. Или вы можете зайти в файл и найти (blah blah blah) Tj, то есть, как большая часть текста хранится в содержимом PDF.

Наконец, вы можете обмануть, преобразовав их в растровый формат с помощью GhostScript или другой библиотеки, а затем сравнив их таким образом. Если вы конвертируете в низкое разрешение, например, 100 пикселей, то грубые детали могут выглядеть примерно так.

Если вы никогда не работали напрямую с PDF, это не страшно! Это просто текстовый файл (после распаковки), который вы можете более или менее анализировать построчно. Я обсуждаю PDF больше в документе HTML в PDF ответ.

0 голосов
/ 30 марта 2009

PDF - это не просто текстовый файл. Это двоичный дамп B-дерева. С помощью сжатых объектов вы также можете получить данные объекта, сжатые внутри других двоичных объектов, чтобы вы их не видели.

Если вы хотите выполнять низкоуровневые манипуляции с текстом, вам действительно нужно использовать достойный инструмент. В Acrobat 9.0 есть пункт меню для просмотра внутренней структуры PDF или вы можете использовать что-то вроде IText.

0 голосов
/ 30 марта 2009

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

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

Я не знаком с деталями формата pdf. Может быть, кто-то еще знает о встроенном механизме, который может помочь.

...