多数のPDFファイルを比較するツール?[閉まっている]


84

光学コンテンツについては、多数のPDFファイルを比較する必要があります。PDFファイルはさまざまなプラットフォームで作成されており、ソフトウェアのバージョンも異なるため、構造上の違いがあります。例えば:

  • テキストのチャンクは異なる場合があります
  • 書き込み順序は異なる場合があります
  • 位置はいくつかのピクセルで異なる場合があります

内部構造ではなく、人間のようにコンテンツを比較する必要があります。使用したPDFジェネレーターの異なるバージョン間のリグレッションをテストしたいと思います。


3
部分的な答えは、pdftotextを使用して、含まれているテキストを比較することです。
sklivvz 2008

しかし、これは線、ボックス、写真、チャートなどのすべての非テキスト情報を無視します。また、テキストの光学的位置、その他の構造的位置を示していないと思います。
Horcrux7 2008

私は同意します、それは十分基準ではありません。一方、それは必要な基準であるため、単体テストとしては適切です。
sklivvz 2008

これまで実際にあなたの状況にあったことはありませんが、私はExamDiff Proを試してPDFを比較しましたが、それは私にとってはうまくいきました。
cubex 2008

後でいつでもより良いユニットテストを追加できます!
sklivvz 2008

回答:


39

私たちが書いたような利用可能なツールがないからです。i-netPDFコンテンツ比較ツールをダウンロードして使用できます。私はそれが同じ問題で他の人を助けることを願っています。問題がある場合、またはフィードバックがある場合は、サポートに連絡してください。

ここに画像の説明を入力してください


このツールの利点は、純粋なテキスト比較ツールでも画像比較ツールでもないことです。構造ごとに比較し、含まれている要素が「同じ」かどうかをチェックします。したがって、比較したPDFは100%一致する必要はありませんが、定義可能な類似性の範囲内にあります。そして、それは無料です。
ガンマ

私もこれをお勧めします!ドキュメントにクラッシュしたので、送信しました。彼らはそれを修正しました!:DIは素晴らしい気分です。違いのある画像を生成したり、コンソールにテキストレポートを表示したりできます。
Janus Troelsen 2011年

4
@gammaそのアプリケーションはどこに無料ですか?年間少なくとも200米ドルかかります(!)。30日間で1回だけ無料です。それは私がそれを使ってやるには高すぎる。
ygoe 2012年

@LonelyPixelうん、その通りです。バージョン1.0は無料でした(2010-10-14現在)。かなり変更を加え、有料ツールになりました(2012-10)。ただし、制限なしで30日間試すことができます。それは本当に多くの新機能、安定性と信頼性を獲得しました。まだご覧いただければ幸いです;)
ガンマ

私もpdfファイルを比較する必要があります-私はapachepdfboxを使用してjarを思いつきました。このtestautomationguru.com/…などを確認してダウンロードしてください。
vins 2015年

21

実際にはdiffpdfツールがあります。

http://www.qtrac.eu/diffpdf.html

その弱点は、追加によって新しいテキストが部分的に新しいページにシフトしたときにうまく反応しないことです。たとえば、古いページ4をページ5の終わりとページ6の始めと比較する必要がある場合、2つのスライスを別々に比較するためにパラメーターをシフトする必要があります。


1
元のオープンソースバージョンは、引き続きqtrac.eu/diffpdf-foss.htmlで
Tobias Kienzler 2014

13

自家製のスクリプトを使用しました

  • 2つのPDFのすべてのページをビットマップに変換します
  • PDF1のページを白地に赤に着色
  • PDF2のページで白から透明に変わります
  • PDF1の対応するページの上にPDF2の各ページをオーバーレイします
  • 複数のコアで変換/カラーリングとオーバーレイを並行して実行します

使用したソフトウェア:

  • PDFからビットマップへの変換のためのGhostScript
  • 着色、透明度、オーバーレイのためのImageMagick
  • 並列プロセスを同期するためのinotify
  • 結果を確認するためのPNG対応の画像ビューア

長所:

  • 簡単な実装
  • 使用されるすべてのツールはオープンソースです
  • レイアウトの小さな違いを見つけるのに最適

短所:

  • 変換が遅い
  • PDF間の主な違い(ページ付けなど)は混乱を招きます
  • ビットマップはズームできません
  • 白黒のテキストと図でのみうまく機能します
  • 使いやすいGUIはありません

私は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

1
完全なスクリプトを共有してみませんか?
Janus Troelsen

1
これは私が合成に使用したものです:for i in $(seq -w 0 05); do /cygdrive/c/Progra~1/ImageMagick-6.6.9-Q8/composite.exe 1-$i.png 2-$i.png result-$i.png; done
Janus Troelsen

一時ファイルをディスクに書き込まず、Ghostscriptよりも高速なPopplerのpdftoppmを使用するスクリプトを次に示します:gist.github.com/brechtm/891de9f72516c1b2cbc1pdfdiffディレクトリ内のPDFのページごとに1つのJPGを出力し、さらに2つのPDF間で異なるページ数を出力します。
ブレヒトマシエルズ2016年

12

私はここでこれを見ることができないようです、それでここにあります:スーパーユーザー経由:2つのPDFファイルの違いを比較する方法は?(回答#229891、@ slestakによる)、あります

https://github.com/vslavik/diff-pdf

(Ubuntu Nattyのビルド手順はget-diff-pdf.shにあります

私が見る限り、それは基本的にpdfの各ページのテキスト/グラフィックをオーバーレイし、変更があったかどうかを簡単に確認できるようにします...

乾杯!


9

また、pdftotext(Sklivvzの回答を参照)を使用してPDFのASCIIバージョンを生成し、wdiffを使用してそれらを比較しました。

pdftotextの-layoutスイッチを使用して、読みやすさを向上させ、レイアウトの変更についてのアイデアを取得します。

wdiffから素敵な色の出力を取得するには、次のラッパースクリプトを使用します。

#!/bin/sh
RED=$'\e'"[1;31m"
GREEN=$'\e'"[1;32m"
RESET=$'\e'"[0m"
wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n $1 $2

4

あなたの最善のアプローチは、PDFを適切な解像度で画像に変換し、画像を比較することではないと思います。

PDFから画像を生成するには、Adobe PDFライブラリ、またはPDFファイルをtiffファイルに変換するための最良の方法で提案されているソリューションを使用できます

生成されたTIFFファイルを比較するために、GNU tiffcmpGnuWin32 tiffのWindows部分用)が見つかりtiffinfoはうまく機能しました。tiffcmp -lを使用し、出力の行数を数えて違いを見つけます。少量のコンテンツ変更(アンチエイリアシングの違いなど)に満足している場合は、tiffinfoを使用してピクセルの総数をカウントすると、違いのパーセンテージ値を生成できます。

ちなみに、構造が変更されていない単純なPDF比較を行う人は、コマンドラインdiffを使用して、GNU diff2.7などの特定のパターンを無視することができます。

diff --brief -I xap:-I xapMM:-I / CreationDate -I / BaseFont -I / ID --binary --text

これには、生成されたフォント名の変更を常にキャッチできるとは限らないという問題があります。


2つの画像の比較は、PDFファイル自体の比較よりも複雑だと思います。
Horcrux7 2010

画像の比較は、GnuWin32tiffcmpを使用して実行できます。これについて詳しく説明するために、回答を更新します。
ダニオ2010

1

当社の製品であるPDFコンパレータ(http://www.premediasystems.com/pdfc.html ")は、これを非常にエレガントかつ効率的に実行します。これも無料ではなく、Mac OSX専用のアプリケーションです。


このツールは、ピクセルごとに比較します。これは非常に簡単です。問題は、人間のように比較することでした。
Horcrux7 2010

1
@ Horcrux7:しかし、人間の目は「ピクセルごとに」比較する以外に、見た目が似ているさまざまなページを比較するのはどうでしょうか。
Kurt Pfeifle 2012

@ KurtPfeifle-これは古いコメントだと思います...しかし、人間は画像をピクセルごとに比較しません。人間が画像の違いを比較する方法はかなり複雑ですが、パターン認識とヒューリスティックに大きく依存しています。
CBRF23 2015

@ CBRF23:本当です、そして私はそれを知っています-しかし、結局のところ、このすべてのヒューリスティックは依然として「ピクセルごとの」比較に根ざしています。行われ、いくつかの他の、より高いレベルのヒューリスティックについて ImageMagick:、私の他の回答の一部を参照 1つ-の2つの- 3つ
Kurt Pfeifle 2015

@ CBRF23:...そして元のポスターである(at)Hocrux7は、彼の質問で「ピクセル」についても言及しており、ファイルの「内部構造」を比較することを明示的に望んでいませんでした(ここでの彼のコメントは再び矛盾していますが)。
Kurt Pfeifle 2015

1

ニーズに基づいて、テキストソリューションへの変換が最も簡単で直接的な方法です。ビットマップのアイデアはかなりクールだと思いました。



0

Tarkware PdfComparerを使用してPDFファイルをバッチ比較できます。ただし、無料ではなく、AdobeAcrobatが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.