100%の比較精度

XORはPDF比較アプリです。修正の前と後のPDFの差を100%の精度で見つけます。

新旧のPDFを比較する方式は以下の二種類。

  • 解析比較方式
  • ヴィジュアル比較方式

前者はPDFのデータ内容を解析して対になる要素を比較する方式。「どこが変わったか」だけでなく「どのように変わったか」をリポートしてくれて便利な反面、変更内容によっては差異の誤検出や検出漏れが起こります。修正の過程で追加・削除・移動が発生すると、両方のPDF間での要素のペアリングが不正確になるためです。

他方、ヴィジュアル比較方式はPDFの各ページを画像として認識して各ピクセルを比べます。こちらは「どのように」はレポートしてくれないものの、「どこが」だけは100%の精度で見つけ出します。

XORもヴィジュアル比較方式を採用しているので比較精度は100%を誇ります。

App icon of the XOR

Microsoft Store Badge

Araxis Merge

Araxis Merge 2019のアイコン

Araxis Merge 2019というソフトウェアの存在を知りました。主な機能は以下の通りとのこと。

  • ファイルの比較とマージ
  • フォルダー比較と同期化
  • バイナリ ファイル比較
  • イメージ ファイル比較
  • レポート出力

どうやらPDFの比較もできるそうな。しかもWindows版だけではなくMac版もあるのですね。

そうなるとXORとも用途が重なる上に、XORよりも多機能です。しかもStandard Editionが27,000円と安価。これは強敵かも。

ということで早速評価版を申し込んで試してみました。もしPDFの比較機能がXORとそっくりだったらXORを勧めづらくなりかねないので。

でも、結果は取り越し苦労でした。XORとは目指すところが完全に違うようです。

Araxis Merge 2019に対する私の印象は「diffの技術を基に各種便利機能を実現したアプリ」です。とりわけテキストの比較に多大な効果を発揮してくれそうです。

PDFヴィジュアル比較へのこだわり

XORは二つのPDFをヴィジュアル的に比較します。解析比較ではどうしても比較漏れが起きたり、処理が重くなってアプリが異常終了しがちなので。

もちろんPDFのヴィジュアル的な比較は普遍的なニーズなので既存製品がいくつもあります。でも、それらは皆、二つのPDFを与えると、全ページ分の比較結果のビットマップファイルがバッチ処理で生成される感じです。ビットマップファイルは、例えばこんな感じの。

Proof Checker PROによるビットマップ比較結果
ビットマップ比較の結果。Proof Checker PROのサイトから拝借

でも、私がやりたかったのはこれではなかったのですよ。そう、私が理想とするヴィジュアル比較は「対になるページをいつでも比較できて、いつでも並べた状態に戻せる」というものでした。バッチ処理でファイルを吐き出すのではなくインタラクティブ(対話型)のアプリです。画像ファイルこの方が断然効率的かつ便利だと思うので。

というのも、バッチ処理でビットマップファイルを生成してくれても、元のPDFと見比べる工程が発生します。しかも新旧両方のPDFと見比べるのは結構大変です。つまるところ不効率です。

よって試行錯誤の末、現在のXORの仕様に落ち着きました。

インタラクティブアプリの使い勝手の良さは実際に試せば分かっていただけると思います。30日間の無料使用期間があるので手頃なMacをお持ちでしたら是非お試しください。

DiffPDFを試してみました(1)

DiffPDFというPDF比較アプリがあります。「PDF比較ツール」といった検索をかけるとAcrobatに次いで割と上位に表示されますよね。ライセンスは$160、20日の試用期間があります。

こちらがなかなかの評判なので試してみました。

下図はテストデータを読み込ませた直後の状態。両方とも1ページのみです。

DiffPDFの比較前

まず気づくのが「Mode」。三種類の比較モードが用意されています。

DiffPDFのモード

せっかくなので三つとも試すことにします。

Appearance

見た目の比較モード。いわゆるヴィジュアル比較方式です。

DiffPDF(Appearance)

薄い黄色は差異が含まれる箇所。すべての変更箇所を見つけてくれています。さすが。ヴィジュアル比較は頼もしいですよね。

Characters

文字比較かな。

DiffPDF(Characters)

画像関連の比較がまったくなされないのはしかたないにしても、写真下の「f11 1/125」と「f16 1/60」やタイトル下の「Mandarin fish」と「Mandarinfish」の違いを検出してくれていないのは残念です。どちらもテキスト情報なのに。

Words

文字比較かな。

なぜ「Characters」と別れているのかは不明ですが、明らかに比較結果の表示が違うので、アルゴリズムが違うのでしょう。文節重視の比較でしょうか?

DiffPDF(Words)

「Mandarin fish」と「Mandarinfish」の違いを検出してくれたけど、「f11 1/125」と「f16 1/60」はやはり見逃しています。

感想

このデータに限って言えば、頼りになるのは「Appearance」のモードだけでした。

そう、解析方式によるPDF比較ではどうしてもデータ構造との相性の良し悪しが出ます。うまく行くときもあればいかないときもあり、結果を鵜呑みにすると痛い目に遭いかねないという。

だからこそXORもヴィジュアル比較方式を採用しました。「どう変わったか?」は認識できないけど、そもそも変更箇所が正しい修正かどうかは人間が確かめる必要があるのだから、変更箇所だけ洗い出してくれれば十分だろうという判断です。

DiffPDFのライセンスは$160だから、XORを8ヶ月分契約するよりも便利だと思われるならお勧めです。