Show HN: PDF をスキャン風に見せる(CLI またはブラウザ経由で WebAssembly を使用して)

2026/06/21 3:17

Show HN: PDF をスキャン風に見せる(CLI またはブラウザ経由で WebAssembly を使用して)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

make-look-scanned
ツールは、WebAssembly を使用してデジタル PDF をリアルなスキャンされたドキュメントに変換するクライアントサイドユーティリティであり、機密データがユーザーのデバイスから決して外部に漏れることを保証します。このワークフローでは、各ページを画像としてラスタライズし、不具合、グレースケール変換、暖かみのある紙の色調、粒状(ノイズ)、ボケ、エッジシャドウ、JPEG 圧縮を含む包括的なエフェクトパイプラインを適用した後、選択可能なテキストを永続的に除去した画像だけの PDF に再構成します。

本ツールは、ローカル/CLI 用途向けに MuPDF とリンクされた自立型の Go バイナリ(ランタイム依存関係が不要)、および MuPDF の C バインディングを使用できない環境向けのブラウザベースバージョンの PDF.js を使用したという 2 つのパイプラインを通じて配布されます。デフォルトでプロセスは決定論的であり、入力とシードが同じ場合、バイトレベルで同一の出力を保証するために内容ハッシュからシードが派生します。サーバーモードとオフラインモードの間には、それぞれ異なるラスタライズエンジンとコンパイル手法を有するため、軽微な差が生じることは予期されます。

ユーザーは、

config.toml
ファイルで定義されたプレセットシステム(XDG 標準に従う)または CLI フラグを直接通じて視覚スタイルのカスタマイズを行うことができます。これらのフラグは「デフォルト → プレセット → 明示的なフラグ」の優先順序に従い、入力ファイル名の前後どちらかに配置することも可能です。AGPL-3.0 ライセンスの下でリリースされているこの柔軟なローカルホスト型ツールは、データを外部サーバーにアップロードせずに安全なアーカイブ変換器を開発することを開発者に可能にします。

本文

make-look-scanned: 高品質なスキャン再現ツール

概要

紙の印刷物にスキャンされたような見た目を CLI(コマンドラインインターフェース)で再現するツールです。入力された PDF からテキスト情報を破棄し、以下のエフェクトを適用して劣化処理を行います。

  • 歪み(スキュー)
  • グレースケール化
  • 温かみのある紙の色調
  • スキャナによるノイズ粒
  • フォーカスの甘み(ボケ)
  • フレーム端の影
  • JPEG 圧縮によるアーティファクト

このツールは WebAssembly (WAS) を利用するため、ローカル環境でもブラウザ側でも動作します。処理された画像データを元のテキスト情報を含まない PDF として再組み立てます。


ビルド方法

Go と C ツールチェーンが必要です。

go-fitz
は MuPDF を cgo でリンクしており、生成されたバイナリは自立しています(実行時に追加のインストール不要)。

go build -o make-look-scanned .

使用方法

基本構文:

make-look-scanned [オプション] 入力ファイル.pdf
オプションはファイル名の前後どちらかに指定しても構いません。

コマンド例

  • デフォルト設定で処理し、出力先が
    <入力ファイル>.scanned.pdf
    となる場合
    make-look-scanned in.pdf
    
  • 指定したパスに出力する場合 (
    -o
    )
    make-look-scanned in.pdf -o out.pdf
    
  • 詳細なパラメータを指定する場合 (
    --noise
    ,
    --skew
    など)
    make-look-scanned in.pdf --noise 0.4 --skew 2.5 --jpeg-quality 30
    

オプション一覧

オプションデフォルト値意味
-o
<入力ファイル>.scanned.pdf
出力先パスの指定
--preset
なし
config.toml
に定義されたプリセットを使用
--seed
コンテンツハッシュ値ランダムシード(新しい見た目を生成)
--force
false既存ファイルの上書きを許可
--dpi
150レンダー解像度
--skew
0.6最大回転角度(度数法);
0
で歪み無効化
--grayscale
true彩度を排除;
false
でカラー保持
--paper-tone
0.6温かみの色調強さ (0~1)
--noise
0.08スキャナーノイズ強度 (0~1)
--blur
0.4フォーカスの甘み(ガウシアンシグマ)
--edge-shadow
0.15フレーム端の影強度 (0~1)
--jpeg-quality
70JPEG 品質 (1~100)

注記: 数値パラメータを

0
に設定すると、そのエフェクトは適用されなくなります。


再現性について

出力結果はデフォルトで決定論的です。シード値が入力 PDF のコンテンツから自動導出されるため、同一ファイルへの入力に対して常に同じスキャン像が生成されます。

  • 同一性の保証: 入力ファイルとシードが同じ場合、出力 PDF はバイト単位の同一性を保証します。
  • カスタムシード:
    --seed N
    を指定すると、異なる(しかし再生産可能な)見た目を生成できます。

プリセット

再利用可能な設定バンドルは以下の場所の

config.toml
に定義します。 ※
XDG_CONFIG_HOME
環境変数が_unset の場合は
~/.make-look-scanned/config.toml
を使用します。

[presets.medium]
skew = 1.5
paper_tone = 0.6
noise = 0.2
blur = 0.6
edge_shadow = 0.3
jpeg_quality = 45

使用方法:

make-look-scanned --preset medium in.pdf

優先順位:

  1. 構築時のデフォルト値
  2. 選択されたプリセット
  3. コマンドラインでの明示的指定(最優先

ブラウザ環境 (WebAssembly)

効果パイプラインは WebAssembly 形式で動作し、ブラウザ上で実行可能です。PDF.js を用いてページをラスタライズし、生成された画像データを Go 製の処理コードが読み込みます。

1. 開発環境

ネットワーク接続が必要です(PDF.js の CDN 読み込み)。

./web/build.sh                          # web/main.wasm と wasm_exec.js をビルド
cd web && python3 -m http.server 8080   # ローカルサーバーを起動 (http://localhost:8080)

ブラウザで

http://localhost:8080
を開き、HTML ファイルを指定して実行します。

2. 単一自立ファイル(オフライン用)

外部リソースなしで動作する HTML ファイルを作成できます。

task build:web                          # dist/make-look-scanned.html (~8 MB) を出力

dist/make-look-scanned.html
は、WASM、Go ランタイム統合コード、PDF.js を base64 で内包しています。この HTML ファイルをブラウザで直接開くだけで動作します。

注意: 視覚的な結果は CLI 版と同等ですが、PDF.js と MuPDF のラスタライズアルゴリズムが異なるため、バイト単位の同一性は保証されません


ライセンス

  • 全体ライセンス: AGPL-3.0
  • CLI バイナリ: go-fitz を介して MuPDF に静的リンクしています。MuPDF も AGPL-3.0 のため、合成されたバイナリ全体も AGPL-3.0 です。配布時には対応するソースコードの提供が必要です。
  • ブラウザ版: MuPDF は使用せず、Apache-2.0 ライセンスの PDF.js を使用しています。

同じ日のほかのニュース

一覧に戻る →

2026/06/21 7:36

2022 年以前の書籍

## Japanese Translation: 著者は 2022 年以降に出版された書籍、特に未知の作家によるものに過小評価する個人的な無意識のバイアスを認め、すべての文字が人間によって入力され、編集され、校正されたためにより重みがあると信じる古いタイトルの作品を好むと告白している。大規模言語モデルは効果的なコーディングツールのことを認める一方で、このバイアスに不安を感じながらも、それが社会に対して新しい技術の悪影響や特定の業界の更新事項に関連すると見なすわけではない。その作品では、執筆、印刷、新聞、ラジオ、テレビ、インターネットといった歴史的なメディア形式に触れているが、これらを技術的出来事と結びつけてはいない。検証の主張や IT ニュースは提示されていない。著者はこの傾向に対する既知の解決策がないこと述べており、それを不要かもしれないとして結論づけ、その省察を広範な技術導入やビジネスへの影響に対する批判ではなく、個人の読書習慣についての評論として位置づけている。 ## Text to translate: The original summary is strong and accurate; only a minor adjustment to phrasing can make it slightly more direct. Here is an improved version: The author admits a personal subconscious bias that undervalues books published after 2022, especially by unknown writers, preferring older titles on the belief they carry more weight because every word was typed, edited, and proofread by humans. While acknowledging that large language models are effective coding tools, the writer feels uneasy about this bias but does not equate it with concerns that society is being negatively affected by new technology or tie it to specific industry updates. The piece references historical media forms—writing, printing, newspapers, radio, television, and the Internet—without linking them to technical events. No verification claims or IT news are presented. The author states there is no known solution to this inclination and concludes it may not need one, framing the reflection as a commentary on individual reading habits rather than a critique of broader technological adoption or business impacts.

2026/06/21 5:30

愛の物語

## Japanese Translation: このテキストは、「カップルが出会い、ともに生き抜く方法」調査(2017 年、2020 年、2022 年)のデータが表示されている方法を明確にし、誤解を防ぐことを目的としています。主なメッセージは、アイコンチャートは三つの波浪すべてに登場した参加者のみを表示し、各参加者は 1 つのアイコンで表されることです。これらの視覚化は個人を表しているものの、基礎となる分析は人口全体に基づいて行われ、統計的な正確さを確保するために人口特性に基づく加重されたサブセットを使用します。したがって、チャート内の正確な数は加重分析の合計数と一致しない場合があります。個々のアイコンは純粋に視覚化のための目的であり、視覚化は特定の人口統計ではなく一般的な結果を反映しています。より深い方法論的洞察や将来の更新については、Alvin のニュースレターへの購読を推奨します。このデータセットは Stanford University Libraries(https://data.stanford.edu/hcmst2017 でアクセス可能)を通じて Rosenfeld, Thomas, Hausen(2023)から取得されており、視覚化に使用された粘土アニメーションアイコンの作成に際し Amanda Sakuma 氏に特別感謝いたします。

2026/06/21 2:01

SMPTEが標準をフリーアクセス可能に

## Japanese Translation: 以下のものは、日付、場所、ドキュメントの完全な範囲、特定のリーダーの名前、そして企業サポーターの文脈など、欠落していた具体的な詳細を統合しつつ、読みにくさを保ちながら改訂されたバージョンです。 ## サマリー(改訂版) **ニューヨーク州、ホワイトプレインズ、2026 年 6 月 17 日** — SMPTE は、アクセシビリティにおける歴史的な転換を発表しました。同社全体の標準カタログ(発効済み標準、推奨プラクティス、エンジニアリングガイドライン、登録開示文書(RDD)、および今後のリリースをすべて含む)は、今やグローバルなメディアテクノロジーコミュニティ全体に対して無料で利用可能となりました。SMPTE 社長のリッチ・ウェルシュ氏は、この決断が 110 年にわたる進化の後に、将来の相互運用性を確保するために不可欠であると述べました。この戦略的措置は、AI の真正性、コンテンツの出所、IP ベースのワークフローなど、業界全体を変革する課題に直接対処しています。本イニシアチブは、GitHub ベースのワークフローを採用し、構造化された HTML 制作への移行を行うという広範な近代化プロジェクトの一部です。SMPTE 標準副本代表のレイモンド・ヨン氏によると、これらの障壁を取り除くことで透明性が支えられ、業界のニーズに応えるスピードが向上します。一方、ディレクターのスティーブ・LLAMB は、アクセシビリティの向上が誤情報の削減に寄与し、主要テクノロジー大手全体で一貫した実装を可能になると強調しました。このオープンアクセス図書館は、ダイヤモンドレベルの企業会員(Amazon AWS、Apple、Blackmagic Design、CBS/Paramount Global、Disney、Dolby、Fox、Google、Ross Video、Sony、Telstra)によって支えられています。この進化を持続させ、さらなるイノベーションを育成するため、SMPTE は創設者支援者認識プログラムを開始しました。2026 年 12 月 31 日までに 1 万ドル以上の寄付を行う団体は、「創設者支援者」として公的に認定されます。すべてのドキュメントは、次世代メディアエコシステムにおける透明性を推進するために、SMPTE スタンダードズライブラリを通じてアクセス可能です。 # チェックポイント検証 - **主要なキーポイントはすべて反映されていますか?** はい(日付/場所を追加し、ドキュメントの完全な範囲を記載、名前を特定されたリーダーが引用され、ダイヤモンドメンバーの完全リストが含まれています)。 - **テキストに含まれていない推測を含んでいますか?** いいえ、提供された事実に基づいて物語を展開しています。 - **メインメッセージは明確ですか?** はい、閉鎖からオープンへのアクセシビリティ転換が中心的なテーマとなっています。 - **曖昧な表現がありますか?** 「ダイヤモンドレベル」「特定のドキュメント種類」などの具体的な定義を追加することで軽減されました。