PDF比較(差分チェック)・図面の重ね合わせ
2つのPDFの文字・図の差分比較と図面の重ね合わせ
2つのPDFの文字・図の差分比較と図面の重ね合わせ
ファイルはこのブラウザ内でのみ処理されます。サーバーにはアップロードされません。
2つのPDFの追加・削除箇所をページごとに視覚的に比較
パスワード付きのPDFです。
別のツールで続ける
処理しています…
すべての処理はこのブラウザ内で行われます。ファイルがサーバーに送信されることはありません。
ダウンロードするファイルの準備ができました
この結果で編集を続ける
ページプレビューを開く
削除されたテキスト 追加されたテキスト 画像・レイアウトの変化
対応する原本のページなし(追加されたページ)
対応する修正版のページなし(削除されたページ)
変更一覧
設定を変えると前の結果は隠れます。もう一度作成して最新の設定で保存してください。
暗号化されたPDFは先にパスワードを解除してください。ファイル全体を書き直すため、既存の電子署名は無効になります。原本を保管し、結果をご確認ください。
読み込み中…
処理中…
0.0
停止していません。計算が終わると結果が表示されます。
PDF比較(差分チェック)・図面の重ね合わせについて
2つのPDFの「どこが違うか」を調べる方法は2つあります。文字を取り出して単語同士を突き合わせるテキスト比較と、2つのページを画像に描いてピクセル同士を重ねる視覚比較です。テキスト比較は文の修正を正確に捉えますが、印影・署名・図面の線のような文字以外の変化は見えません。ピクセル比較は何でも捉える代わりに、段落が1行下がっただけでページの半分を「変更」と塗ります。
このツールの基本タブは両方を使います。まず文書全体を単語単位で比較し、消えた単語は元の文書に赤枠、新しく加わった単語は修正版に緑枠で示します。次に対応づけたページを同じ大きさで描画し、テキスト比較で説明済みの箇所を除いた残りのピクセル変化をオレンジの点線で示します。ほかに図面向けの赤/シアン重ね合わせタブと、ページ数・ページサイズだけを素早く確かめるタブがあります。
テキスト比較:ページごとではなく文書全体を1本の列として見る
2つのPDFからPDF.jsで文字を取り出して単語の列を作り、Unixのdiffやgitと同系統のMyersアルゴリズムで最小の編集を求めます。ページごとではなく文書全体をつないで比較するので、2ページ目に段落が1つ挟まって後ろが1ページずつずれても、ずれた部分をすべて変更とは扱いません。共通する単語が最も多いページ同士を組にして並べて表示します。
比較の前に各単語はUnicodeのNFKCで正規化されるため、全角「ABC」と半角「ABC」、合字「fi」と「fi」は同じ語として扱われます。大文字小文字を無視、句読点を無視のオプションを使うと「契約書。」と「契約書」も同じとみなします。変更が非常に多い(編集距離4,000語超)場合は計算を打ち切り、中間部分全体を1回の削除と追加として報告するので、まったく別の文書同士では意味のある結果になりません。
テキスト比較が実際と違うことを言う場合
- 日本語の単語境界:日本語は空白で区切られないため、1つの「単語」が長い文字列になりがちです。1文字直しただけでも、その塊全体が削除+追加として出ます。
- 読み順:段組みやテキストボックスの多い文書は、PDF内の文字の格納順が版ごとに違い、内容が同じでも削除と追加の組が生じることがあります。
- 見えない違い:文字は同じで色・太さ・サイズだけが変わった場合はテキスト比較に出ません(描画結果が十分違えばピクセル比較が拾います)。
- スキャン文書:文字の層がなければテキスト比較は何もできず、ピクセル比較だけが残ります。
ピクセル比較の誤検出:ずれた行と書き出し直したPDF
対応するページを横900pxで描画し、1ピクセルのRGB各チャンネルの差のうち最大値がしきい値を超えると「違う」と数えます。感度「低・標準・高」のしきい値は110・64・32(0〜255基準)で、10×10pxのマスの中に違うピクセルがそれぞれ12・5・2個以上あればそのマスに印を付け、隣り合うマスを1つの枠にまとめます。A4なら1マスは約2.3mmです。
最も多い誤検出は行のずれです。3行目に数語追加されて段落が1行長くなると、その下の行がすべて数ピクセル下がり、文字は同じでもピクセルは全部違います。そこでテキスト比較の枠と重なるピクセル枠を消し、テキスト比較で同じ単語として対応づけられたのに位置だけ変わった単語の範囲(元の位置と新しい位置の両方)はピクセル比較から除きます。ただし罫線・下線・図など文字以外のものが一緒にずれた場合はオレンジの枠が残るので、緑と赤の枠を先に見てください。
同じ原稿を別のソフトでPDFに書き出し直した場合も、フォントのヒンティングやアンチエイリアスの違いで文字の縁がわずかに変わります。多くは64未満なので標準感度で除外されますが、高感度ではページ全体がオレンジになることがあります。印影が消えたかどうかだけ知りたいなら低感度が扱いやすいです。
重ね合わせタブとページ数・サイズタブ
重ね合わせタブは、図面の改訂確認で昔から使われる方法を再現します。元の線を赤、修正版の線をシアンに染めて重ねると、両方にある線は暗く、片方にしかない線はその色で浮かび上がります。ページは順番(1ページ同士、2ページ同士)で組にし、サイズが2pt超違う組は重ねずに一覧で知らせます。修正版で図面全体が数mm移動していると、すべての線が赤とシアンの二重線になりますが、このタブには位置を合わせる機能はありません。
ページ数・サイズタブは内容をまったく読まず、ページ数と各ページの用紙サイズ(MediaBox)、表示範囲(CropBox)、回転(/Rotate)だけを比べます。「ページが増えたか、用紙やトリミング・回転が変わったか」を数秒で確かめる用途です。ページ順序の入れ替えは検出できません。番号順で比べるので、途中に1ページ挟まると「末尾に1ページ追加」に見え、その後ろにサイズの違うページがあればサイズ変更が複数出ます。
例
契約書の修正版で条項が1つ追加された場合
- 入力
元12ページ、修正版13ページ。4ページに「第7条の2」の段落を追加、9ページで金額「300万円」→「350万円」- 結果
変更2件:修正版4ページに段落追加、9ページ「300万円」削除・「350万円」追加
後ろが1ページずつずれても、文書全体をつないで比較するので5〜13ページが丸ごと変わったとは出ません。4ページの追加段落より下の行も文字が同じなのでピクセル比較から除かれ、一緒にずれた罫線や図だけがオレンジ枠で残ることがあります。
感度によるピクセルのしきい値
- 入力
同じ位置のピクセルが元RGB(40,40,40)、修正版RGB(90,90,90)- 結果
差50:標準(64)・低(110)では無視、高(32)では違うピクセル
灰色の文字が少し薄くなった程度は標準感度では表示されません。同じマスにこうしたピクセルが2個以上集まると、高感度で枠が付きます。
使い方
- 元のPDFと修正版のPDFを入れます(入れ替えボタンで順番を逆にできます)。
- 大文字小文字・句読点の無視とピクセル感度を決めて比較します。
- 変更一覧をクリックして該当ページを確認し、比較レポートPDFとテキスト要約を保存します。
よくある質問
行がずれただけなのにオレンジの枠が出ます。
文字が同じままずれた行はピクセル比較から除くので、残るオレンジ枠はたいてい一緒にずれた罫線・下線・図です。緑と赤の枠が実際の文の変更です。気になるなら感度を下げるかオフにできます。
スキャンした文書同士も比較できますか?
テキスト比較は動かず、ピクセル比較だけになります。読み取り位置が少し違うだけでページ全体が違って見えるため、結果は粗くなります。
文字の色だけの変更も見つかりますか?
テキスト比較には出ませんが、色の差がしきい値を超えればピクセル比較がオレンジ枠で示します。
ページ数・サイズタブで順番の入れ替えも分かりますか?
いいえ。ページ数と用紙サイズだけを見ます。順番や内容は基本の比較タブを使ってください。
出典
- Eugene W. Myers, An O(ND) Difference Algorithm and Its Variations (Algorithmica, 1986)
- Unicode Standard Annex #15 — Unicode Normalization Forms (NFKC)
- PDF.js — getTextContent API
基準日: