我有一堆 PDF 文件,都是从各个期刊网站下载的文章。问题是,其中一些 PDF 文件是彼此重复的。但是,如果我运行基本的重复文件查找器,它们不会显示出来,因为期刊有(有点烦人的)习惯,会将封面在 PDF 中实际文章之前。换句话说,如果我有作者 Y 的文章“X”的两个副本,一个从网站 A 下载,另一个从网站 B 下载,它们不是完全相同的副本,因为一个有来自 A 的封面,另一个有来自 B 的(不同的)封面。所以我的问题是:
是否可以检查两个 PDF 文件是否重复,忽略第一页?
当然,这并不能解决我所有的问题,因为有些期刊网站没有封面!所以最好的问题是:
是否可以检查两个 PDF 文件是否重复,其中一个(或两个)可能有封面?
答案1
根据PDF 规范有些东西也许可以帮助到你。
首先是 ID,这是一个唯一的标识符,在首次创建后不应更改。
从上面链接的 PDF 规范第 14.4 节中:
文件标识符应由 PDF 文件尾部字典中的可选 ID 条目定义(请参阅 7.5.5“文件尾部”)。ID 条目是可选的,但应使用。此条目的值应为两个字节字符串的数组。第一个字节字符串应是基于文件最初创建时的内容的永久标识符,并且在文件增量更新时不应更改
其次,您可以看一下 7.5.6 图 3。根据该图,您应该有一个原始的主体。
对于第一个选项,有一个 poppler 函数可以提取 ID(你对永久的 ID 感兴趣)http://people.freedesktop.org/~aacid/docs/qt5/classPoppler_1_1Document.html#a2561d28a219676acff2036e5a3bacc83,但是我现在不知道如何剥离原始主体来比较这些哈希值。
答案2
答案3
我发现唯一能解决此类问题的软件是 Devonthink(我假设您使用的是 Mac)。但您需要删除一个变体的第一页。通过在 Finder 搜索中插入一个独特的短语,您可以轻松过滤掉带有封面的版本。标记它们或将它们分组,然后运行脚本删除第一页。当您索引所有这些时,Devonthink 将选择重复项。其他重复查找器,如 Gemini、Dupe Guru(顺便说一句,比 Gemini 更好)和其他重复查找器都依赖于一些简单的标准进行比较。他们不比较内容。Devonthink 会比较内容。而且,据我所知,它是 100% 准确的。