PDF圧縮のテスト:方法、ファイルサイズ、機能

ここでは、2026年10月13日に実施した独自の測定結果を紹介します。自作のテストPDF三種類を使った九回の圧縮処理について正確なバイト数を記録し、機能は別途検証しました。この結果から、他のツールとの順位付けや、お手持ちのPDFの圧縮結果を予測することはできません。

テストしたことと、していないこと

このサイトのPDF圧縮ツールで使用している圧縮コードを、変更せずそのままテストしました。ただし、測定ではブラウザー内ではなく、Node.jsから直接呼び出して実行しました。これにより、各処理の入力、設定、保存された結果を正確に記録できます。

  • 圧縮モジュール:WebAssembly版のQPDF 12.2.0、ラッパーのバージョンは0.3.0です。ラッパーのビルドスクリプトではQPDF 12.2.0が指定されており、インストール済みモジュールにバージョンを問い合わせた結果も12.2.0でした。
  • 環境:Windows 11、ビルド26200、x64上のNode.js 24.18.1。
  • 対象範囲:合成した入力ファイル三種類、九回の圧縮処理、および処理を拒否することを確認するための署名プレースホルダー入りテストファイル一つ。
  • 事後検証:保存された十二個のPDF、計24ページについて、それぞれ構造検査とレンダリングしたページの表示確認を実施しました。

今回の測定に含まれないもの:

  • 処理時間。時間は測定していません。
  • 個々のブラウザーや、実際のスマートフォンおよびタブレットでの動作。
  • 実際の写真、スキャン、大容量ファイル、利用者の文書。
  • 他の圧縮ソフトやオンラインサービス。
  • お手持ちのファイルで期待できる平均的な削減量。

テストファイル、設定、ダウンロード

このテストでは、自作したPDFだけを使用しています。顧客の文書、実際に撮影された写真、実在する人物の署名は含まれていません。画像入りファイルに含まれる画像も生成したものです。色のグラデーションを伴うテクスチャーで、写真でもスキャン画像でもありません。

  • テキストファイル、3,029 バイト:二ページにテキスト、入力済みのフォームフィールド一つ、リンク一つ、ページの回転、構造ツリー内のマーク一つを含みます。
  • 画像入りファイル、1,359,079 バイト:同じ構成要素に加え、640 × 800 ピクセルの生成画像を含みます。画像を含まないテキストファイルはわずか3,029 バイトなので、このファイルサイズの大部分は画像によるものです。
  • 最適化済みのテキストファイル、2,721 バイト:これ以上サイズを削減できないケースとして使用します。
  • 署名プレースホルダー入りファイル、3,139 バイト:署名の構造だけを含み、実際のデジタル署名は含みません。このファイルで、圧縮ツールが署名付きファイルの処理を拒否するかを確認します。

すべての処理で同じ初期条件を使用

  • 各処理は、変更されていない元のバイト列から開始します。一回の処理で複数回の試行が必要な場合も、各試行は直前の結果ではなく、元のファイルからやり直します。
  • すべての結果に、二ページ全体が含まれています。ページの削除、ZIP形式での格納、画像のピクセル数を減らす縮小、ページ全体の画像化は一切行っていません。この条件をそろえることで初めて、モード間でバイト数を比較できます。
  • 各結果は、それぞれ別のファイル名で保存しました。入力と出力について、バイト数とSHA-256チェックサムを記録しています。チェックサムはファイルの指紋に相当し、たった一バイトでも変わるとチェックサムも変わります。
  • 各処理について、モード、指定されている場合は目標サイズ、実際に使用したJPEGの品質を記録しています。

三つのモードが技術的に行うこと

記録と表では、モード名をlossless、balanced、smallとしています。ツール内では、losslessは「ロスレス最適化」、balancedは「バランス重視」、smallは「サイズが小さいファイル」という名称です。「ロスレス最適化」は、オブジェクトや圧縮されたデータストリームなど、ファイルの構造だけを最適化します。「バランス重視」は、それに加えて対象となる画像を品質レベル80のJPEGに再エンコードします。目標サイズを達成できなかった場合は、70で再試行します。「サイズが小さいファイル」はレベル65から開始し、目標を達成できなければ50、次に40で試行します。目標サイズを指定していて、元のファイルまたは構造を最適化したファイルがすでに目標を満たしている場合、非可逆のJPEG再エンコードを試す必要はありません。最後に、確認したファイルのうち最も小さいものを採用します。元のファイルより小さいものがなければ、元のファイルを維持します。したがって、一定の削減量を保証するものではありません。

QPDF 12.2のドキュメントによると、この処理でQPDFが画像の解像度を下げることはありません。ただし、JPEGへの再エンコードによって目に見える画像の乱れが生じることがあり、QPDFは再エンコードした画像データが小さくなる場合に限って採用します。画質への影響については、ガイド品質を損なわずにPDFを圧縮で説明しています。

確認用のファイルとチェックサム

次の表には、すべてのテストファイルと結果ファイルへのリンクを掲載しています。ダウンロード後、お好みのチェックサム確認ツールでSHA-256チェックサムを照合してください。一致すれば、測定に使用したファイルとまったく同じファイルです。英語の記録ファイルreproducibility-manifest.jsonには、すべての処理で使用した正確な呼び出し内容と設定が含まれています。

2026年10月13日の測定に使用した入力ファイルと結果ファイル、およびバイト数とSHA-256チェックサム
ファイル内容バイトSHA-256
text-input.pdf入力:テキストファイル3,02935d8fa138b0343d3dd61e58fe7ba75c6c55581d8973294698c9a4e78f97eaa60
image-input.pdf入力:生成画像を含む画像入りファイル1,359,079bdb027a008a387cf82b8218c57ced81f00889042f7fad85a577ebbe1f779730a
alreadyOptimized-input.pdf入力:最適化済みのテキストファイル2,72151eac67f8c16f35a206c258f0b79ae6eb435170b73ecf893ecd9dea50d7dbeda
signed-placeholder-input.pdf入力:署名プレースホルダー。実際の署名ではありません3,139a62f7a96b03f287ec8686c6908c98edf78f3116ea16060c49c767bc95c7dc3b0
text-lossless-output.pdf結果:テキストファイル、lossless2,721b775013b0dc458b3e8cf867a93bb94352452b04302eb1ecebab3ac5c0daafdfe
image-lossless-output.pdf結果:画像入りファイル、lossless1,358,764f17192271ad99aeae5910991ec79e8ca21b1d0a124e6e40de9ed102892529146
image-balanced-output.pdf結果:画像入りファイル、balanced179,708491bb1a46b2e6b098bb431882daf1526bd2f5e1041bf2a7d2b2a749315a01c57
image-balanced-repeat-output.pdf結果:画像入りファイル、balanced、再実行179,708ad1612e002465204b99a47815f54efe81c9fdf63580ac8ad53b991f193ce4c6f
image-small-output.pdf結果:画像入りファイル、small125,710d5f9d6eae5829ef534e1033db8423dac42ea61373e924924f66b55a763473b17
image-small-met-250000-output.pdf結果:画像入りファイル、small、目標250,000 バイト125,710d5f9d6eae5829ef534e1033db8423dac42ea61373e924924f66b55a763473b17
image-small-unmet-128-output.pdf結果:画像入りファイル、small、目標128 バイト74,7071ff4d7db12907e5c716efffb282e27d805199ddd4766dc10aa64a08fa6593a7e
image-small-already-met-output.pdf結果:画像入りファイル、small、目標1,359,079 バイト1,358,7646b5a9384b3871c6a7c6623e208975de6ac6226ea64b9f67ab07872b0283c4545
already-optimized-lossless-output.pdf結果:最適化済みのテキストファイル、lossless(元のファイルを維持)2,72151eac67f8c16f35a206c258f0b79ae6eb435170b73ecf893ecd9dea50d7dbeda
reproducibility-manifest.json呼び出し内容、設定、測定値を含む記録(英語)29,0100778b8a0482d73dbe686dac1cadc0ac990f78ced3a49a7f7183702ebfcb17aa4

結果:ファイルサイズをありのままに提示

2026年10月13日の測定結果をグラフで表示

このグラフは、Windows 11上のNode.jsでQPDF 12.2.0(WASM)を使用して行った、全九回の測定結果を示します。テストファイルや処理方法で絞り込み、正確なバイト数と残存サイズの割合の表示を切り替えられます。

9回の測定中9回を表示

  1. テキスト · 可逆圧縮

    サイズ削減済み

    元のファイル
    3,029 バイト
    結果
    2,721 バイト
    指定された上限
    上限の指定なし
  2. 画像 · 可逆圧縮

    サイズ削減済み

    元のファイル
    1,359,079 バイト
    結果
    1,358,764 バイト
    指定された上限
    上限の指定なし
  3. 画像 · バランス重視

    サイズ削減済み

    元のファイル
    1,359,079 バイト
    結果
    179,708 バイト
    指定された上限
    上限の指定なし
  4. 画像 · バランス重視、再実行

    サイズは同じ、チェックサムは異なる

    元のファイル
    1,359,079 バイト
    結果
    179,708 バイト
    指定された上限
    上限の指定なし
  5. 画像 · 強力

    サイズ削減済み

    元のファイル
    1,359,079 バイト
    結果
    125,710 バイト
    指定された上限
    上限の指定なし
  6. 画像 · 強力

    目標達成

    元のファイル
    1,359,079 バイト
    結果
    125,710 バイト
    指定された上限
    250,000 バイト
  7. 画像 · 強力

    目標未達、完全なPDFを出力

    元のファイル
    1,359,079 バイト
    結果
    74,707 バイト
    指定された上限
    128 バイト
  8. 画像 · 強力

    処理前から目標を達成

    元のファイル
    1,359,079 バイト
    結果
    1,358,764 バイト
    指定された上限
    1,359,079 バイト
  9. 最適化済みのテキスト · 可逆圧縮

    元のファイルを変更せずに保持

    元のファイル
    2,721 バイト
    結果
    2,721 バイト
    指定された上限
    上限の指定なし

    変更なし — 元のファイルを保持

過去の測定です。ブラウザー、スマートフォン、現在のバージョン、他のツールについて判断できるものではありません。パーセント値は削減量ではなく、残存サイズを示します。入力された上限は数値上の条件であり、達成を保証するものではありません。下の表には、フィルターにかかわらず全九回の測定結果が表示されます。

このテストから、お手持ちのPDFがどの程度小さくなるかを予測することはできません。結果はファイルの内容によって変わります。三種類のテストファイルだけでも、その幅が見られます。小さなテキストファイルはlosslessモードで10.17 パーセント小さくなりましたが、画像入りファイルは同じモードでわずか0.02 パーセントでした。画像入りファイルで86.78 パーセントの削減が得られたのは、JPEGへの再エンコードを行ってからです。表には、ほとんど削減できなかったものも含め、九回すべての処理を掲載しています。

2026年10月13日の測定:Windows 11上のNode.jsでQPDF 12.2.0(WebAssembly)を使用した九回の処理。各二ページの合成テストファイルを使用
テストファイルモード目標サイズ元のファイル(バイト)結果(バイト)削減量JPEGの品質状態
テキストlosslessなし3,0292,721308 バイト (10.17 %)未使用サイズを削減
画像losslessなし1,359,0791,358,764315 バイト (0.02 %)未使用サイズを削減
画像balancedなし1,359,079179,7081,179,371 バイト (86.78 %)80サイズを削減
画像balanced、再実行なし1,359,079179,7081,179,371 バイト (86.78 %)80同じサイズ、異なるチェックサム
画像smallなし1,359,079125,7101,233,369 バイト (90.75 %)65サイズを削減
画像small250,000 バイト1,359,079125,7101,233,369 バイト (90.75 %)65目標達成
画像small128 バイト1,359,07974,7071,284,372 バイト (94.50 %)40目標未達、完全なPDFを出力
画像small1,359,079 バイト1,359,0791,358,764315 バイト (0.02 %)未使用、JPEGへの再エンコードなし目標は処理前から達成済み
最適化済みのテキストlosslessなし2,7212,7210 バイト (0 %)未使用元のファイルを変更せず維持

削減率は常に実際のバイト数から計算しています。削減したバイト数を元のサイズで割った値です。balancedでの処理では、1,359,079 バイトのうち1,179,371 バイトを削減したため、86.78 パーセントとなります。お手持ちのファイルについては、圧縮率の計算ツールで計算できます。

JPEGの品質は、削減率を表すパーセントではありません

80、65、40などの値はJPEGエンコーダーの設定であり、サイズの削減率を示すパーセントではありません。今回、品質レベル80では86.78 パーセント、レベル65では90.75 パーセント削減できました。別のファイルでは、同じレベルでも結果が大きく異なることがあります。

削減できないケースも含める理由

最大の削減量だけを示すテストでは、重要なケースが見えなくなります。これ以上削減できない場合は、どうなるのでしょうか。2,721 バイトの最適化済みテキストファイルでは、losslessモードでそれより小さいファイルは得られませんでした。そのため、圧縮ツールは元のファイルを維持しました。出力は2,721 バイト、削減量は0 バイトで、入力と出力のSHA-256チェックサムは同一です。これにより、このケースでは効果のない書き換え済みファイルが渡されないことを、実際の圧縮モジュールで確認できました。その場合の対処法は、ガイドPDFのサイズが小さくならないで紹介しています。

目標サイズを達成した場合、達成できなかった場合、すでに満たしていた場合

  • 目標250,000 バイト:レベル65での最初の試行で、すでに125,710 バイトになりました。これで目標を達成し、結果は目標を指定しなかった処理とバイト単位で完全に一致しています。
  • 目標128 バイト:画像を含む二ページに対しては、現実的でないほど小さい目標です。最後のレベル40でも、74,707 バイトまでしか小さくなりませんでした。圧縮ツールは目標未達と表示しますが、ファイル自体は出力します。このテストファイルでは、保存された74,707 バイトの結果ファイルに両ページが含まれており、後述の機能検証にも合格しました。このとき、画像データには非可逆の再エンコードが行われています。この処理結果だけでは、他のすべてのファイルでも全内容が維持されることを証明できません。
  • 目標1,359,079 バイト、つまり元のサイズとまったく同じ値:目標はすでに達成済みと判定されました。実行されたのは、構造に対するロスレス最適化だけです。結果は1,358,764 バイトで、losslessでの処理と同じサイズでした。画像はJPEGに再エンコードされていません。記録された呼び出し内容にJPEGの設定が含まれていないためです。

同じサイズでもチェックサムは異なることがあります

balancedでの処理を繰り返すと、再び正確に179,708 バイトになりましたが、SHA-256チェックサムは異なりました。また、目標がすでに満たされていた処理もlosslessでの処理と同じサイズですが、チェックサムは別の値です。考えられる理由の一つは、PDFの書き込み時に、新しい文書識別子などが生成されることです。一方、smallで目標を指定しなかった処理と、目標250,000 バイトを指定した処理は、バイト単位で完全に一致しました。つまり、チェックサムは特定の保存済みファイルを識別するものです。ブラウザー内での処理も含め、同じ処理を繰り返しても、サイズが同じだからといって必ずしもバイト単位で同一のファイルが得られるわけではありません。

表示と機能を別々に検証

ファイルが小さくなっただけでは、テキスト、フォーム、リンクが維持されているかどうかは分かりません。プレビューが正常に見えるだけでも、その証明にはなりません。そのため、保存されたファイルを、互いに独立した二つのライブラリーで検証しました。pdf-libは保存済みファイルの内部構造を読み取り、PDF.js 6.4.299はページをレンダリングしてテキストと注釈を読み取ります。この検証では、隔離されたChromiumのバージョン151.0.7922.34のインスタンス内でPDF.jsを実行しました。完成したファイルに対するこの検証は、Windows 11上のNode.jsで測定した圧縮処理とは別のものです。ブラウザー内やモバイル端末での圧縮は測定しておらず、この検証から他のPDFソフトの動作について判断することもできません。各検証にはそれぞれ独自の方法があり、結果が当てはまるのは、これらのテストファイルに限られます。

2026年10月13日の保存済みテストファイルに対する機能検証と、その限界
検証項目方法結果この検証では証明できないこと
ページ数、ページサイズ、回転九個すべての結果ファイルをpdf-libで検証合格:二ページで、サイズと回転も想定どおり内容や画像については判断できません
テキストとベクターで構成されるページ内容pdf-libで両ページのデコード済みコンテンツ命令を比較九回すべての処理で完全に一致画像データについては判断できません。JPEGへの再エンコードを行った処理(balancedとsmall)では画像データを再エンコードしましたが、目標がすでに満たされていたsmallでの処理では再エンコードしていません
フォームフィールドpdf-libでreferenceフィールドの保存済みの値を読み取り、PDF.jsで注釈から値を読み取り検証したすべてのファイルで、入力済みの値DE-2026-4711が同一編集、スクリプト、すべてのPDFソフトでの動作は検証していません
リンクpdf-libとPDF.jsでリンク先アドレスを読み取りリンクが存在し、テスト用アドレスhttps://example.test/unchangedも同一すべてのPDFソフトでクリックを試したわけではありません
テキスト検索PDF.jsで、保存された十二個すべてのPDFのページ 1から、既知のテキスト「Selectable text, page 1, row 0: test document.」を抽出すべてで検出文字認識(OCR)やスキャンされたページは検証していません
構造ツリーpdf-libで構造ツリーの有無を確認存在を確認タグの妥当性やPDF/UAに準拠したアクセシビリティは検証していません
表示PDF.jsで十二個のPDFの全24ページをPNGとしてレンダリングし、各ページを個別に目視確認合成テストファイルの範囲では合格品質の採点、写真、スキャン内の小さな文字の検証は行っていません
署名付きファイルプレースホルダー入りファイルで圧縮処理を実行SIGNED_PDFで処理を拒否、出力ファイルなし実際の署名に対する暗号学的な検証は行っていません

フォームフィールドについての補足です。この値はPDF.jsの通常のテキスト抽出では確実に現れるわけではないため、注釈を通じて読み取りました。したがって、圧縮済みPDFで入力済みのフォームの値を検索して見つからなくても、その値が失われたとは限りません。

balancedとsmallでは、目標がすでに満たされていたsmallでの処理を除き、画像を非可逆のJPEGとして再エンコードしました。その際、テキストと線のデコード済みコンテンツ命令は変わりませんでしたが、テクスチャーの画像データは変わりました。画像入りファイルから得られた結果をレンダリングしたページでは、画像の位置と表示範囲、およびページの回転は元のファイルと同じでした。ファイルを自分で確認する際には、次の点に注意してください。生成画像は元のファイルの時点ですでに複数行のテキストに重なっています。この重なりはテストファイル自体のもので、圧縮による損傷ではありません。結果にもそのまま残っています。これによって、すべての行の読みやすさを判断したり、品質を採点したりできるわけではありません。また、テクスチャーと色のグラデーションを含む生成画像だけでは、写真、スキャン画像、スキャン内の小さな文字が同じ品質レベルでどう変化するかはほとんど分かりません。関連する内容は、ガイドスキャンしたPDFを圧縮をご覧ください。

署名プレースホルダーで確認できるのは、圧縮ツールが署名構造を持つファイルを認識し、処理しないことだけです。圧縮コード上では、暗号化されたファイルと認証済みファイルも処理を拒否します。このテストは実際の署名の有効性を確認するものではなく、保護を回避するものでもありません。詳しくは、ガイド署名やフォームを含むPDFを圧縮をご覧ください。

限界と、自分で確認する方法

このツールはPDF24やAdobeより優れていますか?

このページでは、その問いには答えていません。他のソフトやオンラインサービスで、同じファイルを処理するテストは行っていません。そのため、品質、速度、価格について比較評価する根拠はありません。パーセント表示やスライダーのあるランキングも、このような比較の代わりにはなりません。公平に比較するには、同じ完全な入力ファイル、同じページ、記録された設定、正確なバイト数を用意し、すべての結果に同じ機能検証を行う必要があります。

お手持ちのPDFを確認する方法

  1. 元のファイルを変更せずにコピーして保管してください。
  2. PDF圧縮ツールを開き、ファイルを選択してください。画像の細部が重要な場合は、ロスレスモードから始めてください。
  3. ファイルのプロパティなどで、元のファイルと結果の正確なサイズをバイト単位で記録し、圧縮率の計算ツールで削減量を計算してください。
  4. 次の試行も毎回、すでに圧縮した結果ではなく、元のファイルから始めてください。ファイルを上書きしないように、結果は毎回新しいファイル名で保存してください。
  5. 保存したファイルを、受信者も使用するプログラムで開いてください。すべてのページを確認し、文書内にあると分かっている単語を検索し、フォームの値とリンクを確認してください。また、画像や小さな文字を元のサイズで確認してください。
  6. PDFにデジタル署名が付いている場合、暗号化されている場合、または認証済みの場合は、このツールで圧縮せず、発行者に手順を確認してください。

プライバシー設定

任意の利用状況分析と広告を許可するか選んでください。この未公開プレビューでは、許可してもどちらも無効のままです。どちらを選んでも文書ツールを使えます。ページ下部からいつでも選択を変更できます。

必須の設定

必須

選択内容とカラーテーマはこのブラウザーに保存されます。任意のサービスを許可しなくても文書ツールを使えます。

停止中

任意の利用状況の測定です。現在は稼働していません。許可すると設定を保存しますが、このプレビューで分析サービスが起動することはありません。

停止中

任意の広告です。現在は配信していません。許可すると設定を保存しますが、このプレビューで広告サービスが起動することはありません。

任意の利用状況分析と広告は無効です。