pdfaudit について
pdfauditは、機械的に確認できるPDF/UAアクセシビリティの基本項目に照らしてローカルPDFを検査し、JSONレポートを返します。文書をアップロードせずに監査でき、読み取りと検査はネットワークを使わずローカルで実行されます。
主な機能
- 01タグ付けと構造ツリーの確認
- 02言語と文書タイトルの検証
- 03画像の代替テキストの確認
- 04読み上げ順序とアクセシビリティ権限の評価
- 05失敗項目と推奨ルートの報告
- 06CLIとMCPサーバーの提供
活用シーン
- 01配布前のPDF監査
- 02アクセシビリティメタデータの不足箇所の特定
- 03スキャンPDFや部分タグ付きPDFの次の対応の判断
MCP 対応
MCPサーバーは `check_pdf_accessibility` を公開します。ローカルPDFのファイルパスを受け取り、7項目のチェック、失敗項目、対応ルート、判定を含むJSONレポートを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| file_path | string | はい | この呼び出しで使用するローカルファイルのパス。 |
詳細
pdfaudit
画面上では問題なく見えるPDFでも、スクリーンリーダーでは使えないことがあります。テキストは存在していても、読む順序が示されておらず、画像に説明がなく、支援技術が必要とする抽出ができないようにファイルがロックされている場合さえあります。pdfauditは、ローカルのPDFについて、機械的に確認できるPDF/UAアクセシビリティの基本項目をチェックし、呼び出し元が対応できるよう、検出内容を正確にJSONレポートで返します。ドキュメントがアップロードされることはありません。監査はディスク上のファイルを読み取り、完全にローカルで実行され、ネットワークには一切アクセスしません。
すべてのドキュメントに対して7項目をチェックします。ドキュメントにはタグが付与されている必要があり(カタログ内に/Marked trueを含む/MarkInfo辞書があること)、構造ツリー(/StructTreeRoot)も含まれていなければなりません。言語が設定され(空でない/Langエントリー)、タイトルが公開されている必要があります(情報辞書内に空でない/Titleがあること。XMPメタデータは参照しません)。すべての画像は、代替テキストを持つ構造要素からたどれる必要があります。読み取り順序を判定できる必要があり、そのためには構造ツリーと少なくとも1つの構造要素が必要です。また、支援技術によるアクセスがロックされていてはなりません。暗号化されていないドキュメントは合格し、暗号化されたドキュメントは、アクセシビリティを支援する抽出が許可される権限ビットが設定されている場合に限り合格します。
各チェックは、固定のID、名前、合否、詳細文字列を報告します。レポートには失敗数が含まれ、次に取るべき対応として、失敗がない場合はalready-compliant、抽出可能なテキストがなく画像が1つ以上あるスキャン文書の場合はocr、抽出可能なテキストはあるがタグが付いていないデジタルPDFの場合はguaranteed、それ以外の場合(部分的にタグ付けされた文書や、対象を絞った修正が必要な混在文書)はrepairを選びます。1行の判定文で、合格数、ルート、失敗したチェックのIDを要約します。
監査では、PDFを意図的に限定して読み取ります。プレーンなオブジェクトブロックをスキャンして、カタログ、情報辞書、構造要素、画像オブジェクト、暗号化辞書を探し、TjおよびTJ演算子からテキストを復元してルートの判定に利用します。この方法で読み取れないファイルについては、実態に即して報告します。ファイルが見つからない場合、PDFヘッダーがない場合、使用可能なオブジェクト構造がない場合は、それぞれに対して誤解を招くレポートではなく、個別のエラーを返します。
CLI
npx @reneturcios/pdfaudit check_pdf_accessibility '{"file_path": "/path/to/document.pdf"}'
npx @reneturcios/pdfaudit --version
レポートはJSONとして出力されます。
{
"filePath": "/path/to/document.pdf",
"checks": [
{
"id": "tagged",
"name": "Document is tagged",
"passed": true,
"detail": "MarkInfo/Marked is true"
}
],
"failed": 0,
"route": "already-compliant",
"verdict": "7/7 checks passed. Route: already-compliant."
}
(上記の例ではchecksリストを省略しています。実際のレポートには、必ず7項目すべてが含まれます。)
終了コード:成功時は0、実行時エラー時は1(解析できないJSON引数、ファイルが見つからない場合、監査可能なPDFではないファイルを含む)、使用方法エラー時は2です。
MCP サーバー
npx -y @reneturcios/pdfaudit mcp
MCP クライアントの設定:
{
"mcpServers": {
"pdfaudit": {
"command": "npx",
"args": ["-y", "@reneturcios/pdfaudit", "mcp"]
}
}
}
ツール
check_pdf_accessibility— ローカルPDFについて、機械的に確認できるPDF/UAアクセシビリティの基本項目を監査し、JSONレポートを返します。ドキュメントがアップロードされることはありません。file_path(文字列、必須)— ローカルPDFへのパス
JSONレポートを含む単一のテキスト項目を返します。2つのスペースでインデントして整形され、キーはfilePath、checks、failed、route、verdictの順に並びます。checks内の各エントリーは、id、name、passed、detailの順に並びます。
Docker
docker run -i ghcr.io/cloudcorprecords/pdfaudit
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/pdfaudit check_pdf_accessibility '{"file_path": "/w/document.pdf"}'
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。