我需要比较大量 PDF 文件的光学内容。由于 PDF 文件是在不同平台上创建的,并且使用不同版本的软件,因此存在结构差异。例如:
- 文本的分块可以不同
- 写入顺序可以不同
- 位置可以不同一些像素
它应该像人一样比较内容,而不是内部结构。我想测试我们使用的不同版本的 PDF 生成器之间的回归。
因为没有我们编写过的可用工具。您可以下载i-net PDF 内容比较器并使用它。我希望能帮助其他有同样问题的人。如果您有任何问题或您有反馈给我们,那么您可以联系我们的支持。
实际上有一个 diffpdf 工具。
http://www.qtrac.eu/diffpdf.html
它的弱点是当添加使新文本部分转移到新页面时,它反应不佳。例如,如果要将旧的第 4 页与第 5 页的末尾和第 6 页的开头进行比较,则需要转换参数以分别比较两个切片。
我使用了一个自制的脚本
使用的软件:
优点:
缺点:
我一直在寻找一种可以在 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
我似乎无法在这里看到这个,所以这里是:通过超级用户:如何比较两个 PDF 文件之间的差异?(答案#229891,@slestak),有
https://github.com/vslavik/diff-pdf
(Ubuntu Natty 的构建步骤可以在get-diff-pdf.sh中找到)
据我所知,它基本上覆盖了pdf(s)中每一页的文本/图形,让您轻松查看是否有任何变化......
干杯!
我认为您最好的方法是将 PDF 转换为具有不错分辨率的图像,而不是进行图像比较。
要从 PDF 生成图像,您可以使用 Adobe PDF Library 或Best way to convert pdf files to tiff files中建议的解决方案。
为了比较生成的 TIFF 文件,我发现 GNU tiffcmp (对于GnuWin32 tiff的 windows 部分)和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 比较器 - http://www.premediasystems.com/pdfc.html “ - 将非常优雅和高效地完成此操作。它也不是免费的,并且是仅 Mac OS X 的应用程序。
根据您的需要,转换为文本的解决方案将是最简单和最直接的。我确实认为位图的想法很酷。
blubeam pdf 软件将为您执行此操作
您可以使用 Tarkware Pdf Comparer批量比较 pdf文件。但它不是免费的,需要 Adobe Acrobat。