新旧PDFの文字差分を行単位で一覧にし、変わった所を赤枠で囲んだ比較画像を出力するPython&単一HTMLツール(サンプルPDF3組つき)
- Digital680 JPY

契約書、見積書、仕様書などを改訂したとき、新旧のPDFを見比べて変更点を探す作業に時間がかかることがあります。金額の数字が1文字変わっただけでも、目視では見落とすことがあります。 このキットは、その確認作業の一部を機械に任せ、目視の確認を減らす手助けになる比較ツール2点と、試すためのサンプルPDFをまとめたものです。最終的な確認は、ご自身の目で行ってください。 ■ キットのツール 1. Python版(pdf_visual_and_text_diff.py) 新旧2つのPDFをコマンドで指定すると、テキストの差分を行単位でJSONとHTMLのレポートにまとめ、変更のあったページについて、旧版を左・新版を右に並べたPNG画像を出力し、変わった所を赤枠で囲みます。PDFは出力しません。 赤枠は新旧のページ画像の画素の違いを細かい升目ごとにまとめて計算しているため、枠が変わった桁とずれて、数字の一部だけを囲んで見えることがあります。商品画像は、同梱のサンプル(見積書)を比べた実際の出力の上半分です。 2. 単一HTML版(pdf_text_diff_checker.html) ブラウザで開き、新旧のテキストを2つの入力欄に貼り付けると、行ごとの差分を表示します。数字の違う行には数値・金額変更アラートが付きます。PDFを読み込む機能やドラッグ&ドロップの機能はありません。PDFから文字をコピーして貼り付けてください。通信を行わないため、ネットワークにつながない環境でも使えます。 文字の比較は、Python版・HTML版とも行単位です。単語単位の比較ではありません。 ■ 同梱ファイル(ZIP) ・pdf_visual_and_text_diff.py:Python版の比較スクリプト ・pdf_text_diff_checker.html:単一HTML版 ・build_html_tool.py:HTML版を作り直すスクリプト ・generate_sample_pdfs.py:サンプルPDFを作るスクリプト ・samples フォルダ:サンプルPDF 3組(見積書・仕様書・変更なし) ・sample_output フォルダ:3組をPython版で比べた結果(PNG・JSON・HTML) ・README.md:使い方、出力されるファイル、注意点 ■ 動作を確かめた環境(2026年10月19日) ・Python版:Windows 11、Python 3.14、PyMuPDF・Pillow(サンプルPDFの作成には reportlab も使います) ・HTML版:Windows 11 の Microsoft Edge ・サンプルPDFを作るスクリプトはメイリオ(C:/Windows/Fonts/)を使うため、そのまま実行できるのはWindowsだけです Mac、Linux、ほかのバージョンでは動作を確かめていません。 ■ 無料の方法との違い テキストだけを比べるなら、無料の比較ツールでも足ります。このキットは、PDFのページを画像にして変わった所を赤枠で囲み、新旧を並べたPNGと、差分の一覧(JSON・HTML)を手元に残せる点が違います。 ■ ご注意 ・同じ出力先で続けて比較すると、前の比較の画像が残ったままになります。比較ごとに出力先を分けてください。 ・新旧でページ数が違う時、片方にしかないページの画像は作られません。 ・個人・法人を問わず、ご自身の業務や受託した作業に使えます。スクリプト単体の再配布・転売はご遠慮ください。
