是否有任何解决方案可以知道两个pdf的相似性而没有详细内容比较

时间:2009-03-30 03:34:59

标签: language-agnostic pdf similarity

我想知道两个pdf文件的相似性,但我不想做详细内容比较。是否有任何解决方案只是来自其外部结构。它可能吗?谢谢!

3 个答案:

答案 0 :(得分:3)

听起来有点困难,但这里有一些来自PDF元数据的低调成果,按难度顺序排列。

  1. 文档元数据,例如eBook-titleTitle
  2. 文档中的页数(计算/Page指令)
  3. 比较每个页面的元数据,例如MediaBoxCropBoxBleedBoxTrimBox
  4. 查找图像和文档特定字体等嵌入内容,看看它们是否完美匹配。
  5. 拉出纯文本并比较单词:单词计数,最常见单词等。对于西方语言,您可以通过Linux上的strings之类的字符串查找器运行PDF。或者您可以进入该文件并查找(blah blah blah) Tj,这是大多数文本存储在PDF内容中的方式。
  6. 最后,您可以通过使用GhostScript或其他库将它们转换为栅格格式然后以这种方式进行比较来作弊。如果转换为低分辨率(如100px),那么粗略的细节可能看起来很相似。

    如果您从未直接使用PDF,那就不可怕了!它只是一个文本文件(解压缩后),你可以或多或少地逐行解析。我在HTML document to PDF答案中更多地讨论PDF。

答案 1 :(得分:0)

你可以通过对它们运行哈希(比如md5)来判断两个文件是否不同,但这并不能告诉你它们之间的相似程度。

有二进制差异程序可以告诉你两个二进制文件在哪里有不同的合理结果,但是当只有很小的内部内容差异时,许多二进制文件,特别是文档容器,可以显示很多二进制差异。

我不熟悉pdf格式的细节。也许其他人知道可能有帮助的内置机制。

答案 2 :(得分:0)

PDF不仅仅是一个文本文件。它是B树的二进制转储。使用压缩对象,您还可以将对象数据压缩到其他二进制对象中,以便您无法看到它们。

如果你想进行低级文本操作,你真的需要使用一个不错的工具。 Acrobat 9.0有一个用于浏览内部PDF结构的菜单选项,或者您可以使用类似IText的内容。