**X‑ray:PDF 文書における不適切な赤字消去(レダクション)を検出するための Python ライブラリ**

2025/12/24 6:54

**X‑ray:PDF 文書における不適切な赤字消去(レダクション)を検出するための Python ライブラリ**

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

要約

Japanese Translation:


Summary

x‑rayは、PDF文書内の不適切な赤字(黒い四角形が背後にあるテキストを完全に覆えていない)を自動で検出するPythonライブラリです。PyMuPDFでPDFをスキャンし、四角形の形状を特定してページコンテンツ上に重ね合わせ、各形状が実際に隠された情報を遮蔽しているかどうかをテストします。不適切な赤字はJSON(またはPython辞書)として報告され、ページ番号、境界ボックス、および隠されたテキストがリスト化されます。

Installation

uv add x-ray          # 既存のuvプロジェクトに追加
pip install xray      # 標準的なpipインストール

インストールせずに実行することも可能です:

uvx --from x-ray xray <PDF_URL>

Usage

コマンドライン:

xray path/to/file.pdf
xray https://free.law/pdf/example.pdf
# バッチURL
cat urls.txt | xargs -n 1 xray

Python import:

import xray
bad_redactions = xray.inspect("some/path/to/file.pdf")
# `inspect` は str、pathlib.Path、URL(https://)、または PDF コンテンツの bytes を受け取ります。

Output

このツールは、ページ番号をキーとし、不適切な赤字オブジェクトのリストを値とするJSONを出力します。各オブジェクトには

bbox
タプルと隠された
text
が含まれます。モジュールとして使用した場合、同等のPython辞書が返されます。

Project context

  • Free Law Projectで数百万件のPDFを監査し、法的透明性を確保するために使用されています。
  • GitHub上でオープンソース化されており、貢献にはCLAへの署名が必要で、issues経由で管理されます。
  • リリースはGitHub Actionsで自動化されており、手動リリースでは
    CHANGES.md
    pyproject.toml
    の更新、タグ付け、およびPoetryによる公開を行います。
  • BSDライセンス(許諾型)で配布されています。

x‑rayの軽量なインストールと明確なレポート機能は、法務テック企業や規制当局、オープンデータイニシアチブが不備のある赤字を迅速に特定し、コンプライアンスと透明性を維持するのに役立ちます。

本文

x‑ray – PDF 文書における不適切なレダクションの検出


なぜ x‑ray が必要なのか?

Free Law Project では 数百万件の PDF を扱っていますが、しばしば見られる問題は「不適切なレダクション」です。
本来はテキストを完全に隠すべきところを、人々は既存(多くの場合黒字)テキスト上に黒い長方形やハイライトを重ねるだけで済ませてしまいます。その結果、元の内容が容易に復元可能な状態になります。

x‑ray は次の目的で作られました:

  1. 「無意味」なレダクションを含む PDF を検出する
  2. 簡易コマンドラインツールと Python API で迅速にチェックできるようにする

すぐに始める

インストール

ツールコマンド
uv
uv add x-ray
pip
pip install xray

ヒント:
インストールせずに実行したい場合は

uvx
を使ってください:

uvx --from x-ray xray <PDF_URL>

使い方

# ローカルファイルの場合
xray path/to/your/file.pdf

# HTTPS 経由のリモート PDF
xray https://example.com/document.pdf

ツールは JSON を出力し、ページ番号をキーにしてレダクションオブジェクトのリストを返します:

{
  "1": [
    {
      "bbox": [58.55, 72.20, 75.65, 739.40],
      "text": "The Ring travels by way of Cirith Ungol"
    }
  ]
}
  • bbox
    – レダクション矩形の四元組
    (x0, y0, x1, y1)
  • text
    – 矩形内に隠されたテキスト

出力を

jq
などでパイプしてさらに加工することも可能です。


バッチチェック

URL を 1 行ずつ書いたファイル(例:

urls.txt
)を作成し、次のように実行します:

xargs -n 1 xray < urls.txt

Python API

from pprint import pprint
import xray

# ファイルパスで PDF を検査
bad_redactions = xray.inspect("some/path/to/file.pdf")
pprint(bad_redactions)

# バイト列(例:ダウンロードしたデータ)で検査
pdf_bytes = requests.get("https://example.com/doc.pdf").content
bad_redactions = xray.inspect(pdf_bytes)

対応入力タイプ

タイプ意味
str
または
Path
ローカルファイルパス
"https://"
で始まる
str
URL からダウンロード
bytes
メモリ上の PDF コンテンツ

重要:
ファイル名をバイト列(例:

b"file.pdf"
)として渡すと失敗します。文字列または Path を使用してください。


動作原理

x‑ray は高速な PDF パーシングに PyMuPDF を利用しています。検出パイプラインは以下の通りです:

  1. PDF 内の全ての長方形を取得
  2. 各長方形と重なる文字(レターボックス)を特定
  3. 長方形領域を画像としてレンダリング
  4. 生成された画像が単色かどうかを判定(単色なら「不適切なレダクション」)
    • 単色でない場合は、レダクションは妥当とみなす

コントリビューション

  • GitHub の Issue を開いて機能追加やバグ報告を行う
  • コントリビューションには署名済み Contributor License Agreement (CLA) が必要です – リポジトリのテンプレートを参照
  • リリースは GitHub Actions で自動化されており、手動リリースも定められた手順に従って行います

ライセンス

本プロジェクトは BSD ライセンス の下で配布されており、自由に利用・他プロジェクトへの組み込みが可能です。

同じ日のほかのニュース

一覧に戻る →

2025/12/24 2:33

ファブリス・ベルラドが MicroQuickJS をリリース

## Japanese Translation: GitHubの最新オファリングは、AI駆動のコード作成、統合開発ワークフロー、および組み込みセキュリティを一つの体験に融合した統一プラットフォームです。 - **AIツール**:CopilotとSparkは開発者がより高品質なコードを書き、プロンプトを管理し、外部サービスへ接続するのを支援します。 - **ワークフロー**:Actionsは任意のワークフローを自動化し、Codespacesは即時にクラウド開発環境を提供します。Issues、Plans、およびCode Reviewはチームが作業を追跡し変更点をレビューできるようにし、すべて単一パイプライン内でハンドオフを減らします。 - **セキュリティ**:Advanced Securityはビルド時に脆弱性をスキャンし、シークレット保護は認証情報の漏洩を事前に防止します。 - **対象ユーザー**:エンタープライズから中小チーム、スタートアップ、非営利団体まで、アプリモダナイゼーション、DevSecOps、DevOps、およびCI/CDなどのユースケースで利用可能です。 - **対応業界**:ヘルスケア、金融サービス、製造、政府機関その他多数。 - **追加リソース**:ドキュメント、ブログ、変更履歴、マーケットプレイス、イベント/ウェビナー、電子書籍/レポート、ビジネスインサイト、スキルトレーニング、サポート、コミュニティフォーラム、Trust Center、およびパートナープログラムがすべて利用可能で、チームの成功を支援します。 - **エンタープライズソリューション**:GitHub Enterprise PlatformにはAdvanced Security、Copilot for Business、プレミアムサポート、24/7 エンタープライズレベルサービスなどのAI駆動開発プラットフォームと追加機能が含まれ、それぞれ階層化された価格モデルで提供されます。 これらの機能を組み合わせることで、あらゆる規模の組織においてコード生成をより迅速かつ安全に行い、ワークフローを効率化します。

2025/12/24 4:35

テレンス・マリック『Disciples』

## Japanese Translation: テレンス・マリックの独特な美学―長いモンタージュ、自然光、詩的ナレーション、そして従来の物語構造への拒否――は、そのスタイルを直接模倣せずに採用する新しい映画作家たちの波を呼び起こしました。 代表例としてラメル・ロス監督の『ニッケル・ボーイズ』(2024年)が挙げられます。この作品はコールソン・ホワイトヘッド小説の改編で、ベストピクチャー賞ノミネートを獲得しました。ロスはマリックの『The Tree of Life』に触発され、その制作に関わったプロデューサーの一人が手助けしたといいます。彼は監督のアプローチを第一人称視点と断片的な詩性へと翻訳し、没入型の神話的物語を創造していますが、それでも独自性を保っています。 他の現代映画監督――クロエ・ザオ(『ノマドランド』)、クリント・ベンツリー(『Train Dreams』)、デイヴィッド・ゴードン・グリーン(『ジョージ・ワシントン』)、そしてローラ・ダン――はマリックの視覚言語を響かせますが、表面的な模倣を避けるために自らの感性と融合させる必要があります。A.J. エドワーズ(『The Better Angels』)やデイヴィッド・ロウリー(『Ain’t Them Bodies Saints』)による試みは、スタイルフレームワーク内で真の人間性を捉える難しさを示しています。 マリックのキャリアは、『Badlands』と『Days of Heaven』という初期叙事詩から始まり、20年間の休止期間を経て、『The Thin Red Line』『The New World』『The Tree of Life』などの後期作品へと進化しました。彼の作品は常に精神性・自然・人間存在を探求しつつ、批評家から高い評価を受ける一方で、ボックスオフィスでは稀にしかヒットしません。マリックの総合的な目標――失われた精神性とアメリカ映画を再接続すること――は、芸術的解放とハリウッドの従来の物語期待との間で緊張を生み出します。 この記事では、マリックの美学と制作手法が多くの人々にインスピレーションを与えている一方で、本当の影響力は表面的な技術を単純に模倣するのではなく、それらの要素を自分自身の物語ビジョンへと翻訳することにあると主張しています。

2025/12/20 16:14

**パーフェクト・ソフトウェア ― 一人向けのソフトウェア**

## Japanese Translation: > 記事は「完璧なソフトウェア」とは、*あなたが望むとおりに、欲しい時に正確に動作するツール*であると主張しています―それ以上でも以下でもありません。成長よりも十分性を優先し、スケールして何百万人にもサービスを提供する必要はなく、ユーザーのニーズに完全に合致するだけです。 > 18か月間、Blogger、GitHub Pages、Medium、Ghost、Obsidian Publish、Notion といった人気プラットフォームを試したものの成功せず、著者は Claude LLM が利用可能になった際に自らのソリューション構築を開始しました。Markdown をコンテンツに、Python スクリプトで自動化、Netlify でホスティング、大規模言語モデルで知能を実装し、1 人開発者でも「完璧」な精度を達成できるカスタムスタックを構築しました。 > この転換を示す具体例として、ランダムに投稿を表示して偶然の発見を促す Obsidian プラグイン **Serendipity** と、任意のウェブサイトでワンクリックでテキストを整列させる Chrome 拡張機能があります。いずれも著者自身の好みに基づいて作られ、個人開発者が汎用ソリューションに頼らずに自分のワークフローに合わせてソフトウェアを再獲得できることを示しています。 > この記事は、完璧なソフトウェアを構築するために「10 倍エンジニア」である必要はなく、LLM と1 人開発者の好奇心だけで十分だと主張します。この手法は個人的な問題解決に焦点を当てることで開発の *喜び* を取り戻し、自律性・有能感・関連性―自己決定理論における重要なニーズ―を再導入し、幸福度を高めます。 > この改訂版要約はすべての主要ポイントを網羅し、原文に忠実であり、曖昧さや混乱を招く表現を排除した明確で理解しやすいメッセージを提示しています。