【问题标题】:Is there any solution to know the similarity of two pdf without detail content compare有没有什么解决方案可以知道没有详细内容比较的两个 pdf 的相似性
【发布时间】:2009-03-30 03:34:58
【问题描述】:

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

【问题讨论】:

  • 您需要定义“相似”。仅仅是内容吗?格式化?图片?
  • 当然,我的最终目的是了解内容的相似性,但有时很难分析文件的内容(pdf不是我唯一的目标)。所以通用的方式更具适应性。(我是中国人,可能无法准确表达我的想法)。谢谢。
  • 说到内容,请看下面我的回答。我将再次编辑它以谈论实际的话。

标签: language-agnostic pdf similarity


【解决方案1】:

这听起来可能很困难,但这里是 PDF 元数据中的一些容易获得的成果,按难度顺序排列。

  1. 文档元数据,例如eBook-titleTitle
  2. 文档中的页数(计算 /Page 指令)
  3. 比较每个页面的元数据,如MediaBoxCropBoxBleedBoxTrimBox
  4. 寻找图像和文档特定字体等嵌入内容,看看它们是否完美匹配。
  5. 提取纯文本并比较单词:字数、最常用的单词等。对于西方语言,您可以通过字符串查找器(如 Linux 上的strings)运行 PDF。或者您可以进入文件并找到(blah blah blah) Tj,这是大多数文本在 PDF 内容中的存储方式。

最后,您可以通过使用 GhostScript 或其他库将它们转换为光栅格式,然后以这种方式进行比较来作弊。如果您转换为像 100 像素这样的低分辨率,那么粗略的细节可能看起来很相似。

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

【讨论】:

    【解决方案2】:

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

    有一些二进制差异程序可以告诉您两个二进制文件的不同之处并得到合理的结果,但是许多二进制文件,尤其是文档容器,在只有很小的内部内容差异时会显示出很多二进制差异。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-24
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多