ビザ申請や銀行の本人確認(KYC)、新しい仕事のオンボーディングページを埋めているとします。フォームは身分証のスキャン、パスポート写真、直近の公共料金の領収書を求めてきます。スマホで撮影するか、用紙をスキャンしてアップロードします。フォームが即座に跳ね返ってきます。「ファイルが大きすぎます。最大200 KBです」。そこでほとんどの人はこうします。適当な画像圧縮サイトを新しいタブで開き、パスポートのスキャンを放り込み、小さくなったものをダウンロードして、それをアップロードする。
ここでほとんど誰も立ち止まらないのが、次のステップです。あなたは今、聞いたこともないサイトにパスポートのコピーを渡したばかりです。ただファイルを200 KB小さくするためだけに。猫の写真なら何でもありません。身分証なら話は別です。この記事が扱うのはその話です。
なぜ書類は「ただの写真」ではないか
パスポートのスキャン、マイナンバーカード、運転免許証、領収書――これらは何でもない画像ではありません。あなたの法的な身分を帯びており、ほとんどの法域でそれらは明確に「個人データ」です。GDPR、ブラジルのLGPD、日本のAPPI(個人情報保護法)を含む法律群のもとでは、未評価の処理業者に個人データを送ることは「理論上のミス」ではなく、名前のついたコンプライアンスの穴です。検索で上位にくる「アップロード型」圧縮ツールとは、言葉の定義として、あなたがバイトを送り届けるサーバーのことです。アップロードしたものが自社のモデル改善に使われることを明記しているものもあります。慎重なところでも、あなたが制御できないインフラに(ごく短時間とはいえ)コピーを残し、そのコピーはバックアップチェーンと漏洩リスクの一部になります。
これはそうしたツールが「悪」だという意味ではありません。アップロード経路には「無料で高速」という謳い文句に含まれないコストがあるということです。そして身分証にとって、そのコストこそが避けたいものです。解決策は圧縮しないことではなく、ファイルがあなたの端末から出ない場所で圧縮することです。
こうしたフォームが本当に求めているもの
サイズ上限はいい加減に見えますが、バックエンドではたいていそうだからです。古いシステム、安いストレージ、数メガバイトの塊を飲み込みたくないという事情。しかしそれらは現実にあり、守らなければなりません。役所のポータル、銀行のKYCフロー、オンボーディングページを眺めると、パターンは繰り返します。
- 厳格なバイト上限。一般的な上限は100 KB、200 KB、1 MB。容赦なく201 KBを弾くところもあります。
- 形式のホワイトリスト。多くはJPEGかPNGを受け付けます。特定の一方を求めるものもわずかですが存在します(パスポート写真はJPEG、署名済みフォームはPNG)。
- 寸法の範囲。パスポートやビザの写真はしばしば350×450 px程度を指定します。用紙のスキャンならA4を150 DPIにした比率に近いものを想定します。
罠はこうです。今のスマホは1200万画素で2〜5 MBの写真を撮ります。用紙をPNGでスキャンすると500 KBから数MBになることもざらです。どちらも上限を大きく超え、しかもどちらにも、知らないサーバーに浮かべたくない身分データがまさに入っています。
プライベートに上限をクリアする
ブラウザネイティブな圧縮はクラウドツールと同じ「小さくする」をしますが、ファイルはあなた自身のブラウザが読み、端末のメモリに留められ、圧縮計算を実行するWeb Workerに渡されます。サーバーが使うのと同じMozJPEGやPNG8のエンジンが、すべてあなたのCPU上で動きます。結果はブラウザが端末へ書き戻すファイルです。画像がどこかへネットワーク接続を開くことは一切ありません。「アップロード」のステップは存在しません。なぜなら、処理をするためにピクセルを必要とする相手が向こう側にいないからです。
これはローカル圧縮ガイドで説明したものと同じエンジン、同じプライバシーモデルです。アカウント不要、APIキー不要、往復なし。そして書類にとって有用なことに、EXIFや位置情報のメタデータは既定で削除されるので、GPSがスキャンと一緒に飛んでいくことはありません。
このサイトの実エンジンによる実数値
これがただのお題目でないことを示すため、人々が本当に悩む書類を模した2枚のテスト画像を作り、このサイトが使うまさに同じエンジンで回しました。これらの数値を出すために何もアップロードしていません。圧縮はローカルで走りました。
| テスト画像 | 元のサイズ | 圧縮後 | 削減 |
|---|---|---|---|
| スマホで撮った身分証写真(JPEG) | 467.0 KB | 247.1 KB(MozJPEG) | −47.1% |
| 写真付きのスキャン用紙(PNG) | 622.5 KB | 98.7 KB(PNG8、256色) | −84.1% |
身分証写真は日常のケースです。どのフォームの枠にも必要な以上にずっと大きいスマホ写真が、顔の判別がついたままほぼ半分になります。スキャン用紙は劇的なケースです。白地に文字と写真が入った書類が84%も縮むのは、PNG8が256色という引き締まったパレットに落とし、印刷上は見えない劣化にするからです。あなたの実際の書類は変わるでしょうが、桁は同じです。これらのポータルが求めているのは、スマホが吐き出すごく一部にすぎません。
本気で形式を選ぶ
書類は2つの陣営に分かれ、正しい形式はどちらを持っているかで決まります。
- 写真が主の証明書(パスポート写真、運転免許証の写真、KYCの自撮り)。これらは階調と肌の色です。JPEGを使い、上限をクリアしつつ顔が明らかにあなたである範囲で品質を下げます。サイトの既定品質のMozJPEGは、テストした身分証を467 KBから247 KBにしました。品質をもう少し下げれば、ほとんどの200 KB制限を余裕で潜ります。
- 文字が多い、または線がシャープなスキャン(署名済み契約書、小さな字の領収書、枠のあるフォーム)。JPEGは小さな文字をにじませます。PNG8を使い、すべての文字をくっきり保ちます。スクリーンショット圧縮ガイドは、PNG8が文字を保ちJPEGがにじませる理由を説明しています。同じ理屈が確定申告書にも当てはまります。
多くのポータルはどちらも受け付けるので、内容で決めます。階調→JPEG、小さな字→PNG8。ポータルが特定の形式を求める場合、ツールは不要な変換を強いるのではなく、出力形式を選ばせてくれます。
ぴったりの上限を出すには
「200 KB以内」は簡単です。「100 KB以内」や厳格な役所フォームの「20 KB以内」にはもう少し意図が要ります。
- まず解像度を下げる。1200万画素の写真は350×450の枠にとってばかばかしく過剰です。寸法を縮めることはどの品質スライダーより効き、顔もシャープに保てます。
- 品質を下げて確認。JPEG品質を一段下げ、プレビューし、書類が読めるままか確認、を繰り返します。ツールはダウンロード前に結果をプレビューするので、当てずっぽうではありません。
- 下限を知る。フォームが20 KBのような極端な値を求めるなら、それは別の exercise です。20 KB圧縮ガイドと100 KB以内ガイドが、その厳しい上限の正確な手順を案内します。
私が書類に使うフロー
- ツールを開く。ログイン不要。ページは静的で、圧縮は端末のWorkerで走ります。
- 書類を放り込む。一度に最大20ファイル、各50 MBまで。ポータルが身分証の表裏と住所証明を同時に求める場合に便利です。
- 品質と出力形式を選ぶ。写真系証明書はJPEG、文字スキャンはPNG8。ポータルが受け付けるものに合わせます。
- 圧縮。ブラウザ内で実行。アップロードはなく、ファイルは端末を出ません。
- プレビューしてダウンロード。文字が読めるか顔がくっきりか確認し、小さなファイルを保存します。
- タブを閉じる。どのサーバーにもコピーは残りません。そもそも送ったコピーがないからです。
書類ならではの2つの注意
- 小さな文字を潰さない。品質30の確定申告書は上限をクリアしても、審査員が弾くようなにじみになります。文字がぼやけたら品質を上げるかPNG8へ。読みやすさが小さな数字に勝ります。
- 変換前にポータルの形式と合わせる。ポータルがPNGを期待しているのにJPEGへ変換すると、「形式違い」で弾かれることがあります。フォームが求める出力形式を選びます。
近いケースの関連ガイド
- ブラウザ内圧縮の仕組みを順を追って?しくみページでパイプラインを説明しています。
- 透過ロゴやステッカーを柔らかい縁を崩さず圧縮?透過PNGガイドがPNG8の半透明ハローの罠を扱います。
- ショップ用の商品写真を圧縮(JPEG品質、プラットフォーム上限)?商品写真ガイドが深掘りします。
- スクリーンショットをくっきり保つ?スクリーンショットガイドがPNG8で文字をきれいに保つ理由を示します。
まとめ
次にフォームが書類の大きさで弾いてきたら、適当なクラウド圧縮ツールにパスポートを貼り付ける反射を抑えてください。あなた自身のブラウザで小さくしてください。ポータルの上限はクリアし、ファイルは端末上で端から端まで保たれ、見えないサーバーに身分のコピーを渡すことは一度もありません。猫の写真なら便利さが勝ちます。身分証ならプライバシーが勝つべきです。そしてローカル圧縮なら、二者択一である必要はありません。
あなたの身分証は、200 KB小さくするだけのために端末を出るべき最後のファイルです。