LLM生成ALTテキスト統制 2025 — 品質スコアリングと署名付与の実践

公開: 2025年9月29日 · 読了目安: 5 · 著者: Unified Image Tools 編集部

LLM を使って ALT テキストを大量生成するワークフローは一般化しましたが、表現のばらつきや不適切表現、著作権情報の欠落が問題になっています。2025 年の Web コーダーには、AI が吐き出したテキストをそのまま使うのではなく、スコアリング・編集・署名を組み合わせた統制フローを設計することが求められます。本稿では、LLM 生成 ALT の品質指標、承認フロー、C2PA メタデータへの統合手順をステップごとに整理します。

TL;DR

  • スコアリング指標の三位一体: Semantic Relevance, Toxicity, Policy Compliance を 0〜1 で定義し、閾値を下回る ALT は即再生成。
  • 編集ワークベンチ: alt-safety-linter で禁則語・プライバシー表現を検出し、レビュアーが修正したバージョンに署名を付ける。
  • C2PA連携: ALT テキストを assertions に含め、署名済みマニフェストで配信。CDN 側で改ざんを防止。
  • 権利表記の強制: LLM 出力に © や人物名が含まれない場合は、画像メタデータから自動補完。
  • 継続改善: 実際のスクリーンリーダーログを収集し、LLM プロンプトとスコアリングモデルを定期更新。

品質スコアリングの設計

指標モデル・計算方法推奨閾値失敗時の対処
Semantic RelevanceCLIP 類似度 / 自社の ViT0.78 以上ALT を再生成、プロンプトに構図情報を追加
ToxicityPerspective API / OpenAI Safety0.08 以下禁則語リスト更新、プロンプトから比喩表現を削除
Policy Compliance正規表現 + カスタム LLM 判定0.9 以上スタイルガイド違反をフラグ、レビュアーが手動修正
// pipelines/alt/scoring.ts
import { scoreRelevance } from './models/clip'
import { scoreToxicity } from './models/toxicity'
import { evaluatePolicy } from './rules/policy'

export async function scoreAlt({ imageVector, altText }: { imageVector: Float32Array; altText: string }) {
  const [relevance, toxicity, compliance] = await Promise.all([
    scoreRelevance(imageVector, altText),
    scoreToxicity(altText),
    evaluatePolicy(altText)
  ])
  return { relevance, toxicity, compliance }
}

スコア結果は alt-moderation.log に保存し、C2PA マニフェストと紐付けます。

LLM生成とレビューフロー

graph TD
    A[Prompt Builder] --> B[LLM Generation]
    B --> C[Scoring]
    C -->|Pass| D[Reviewer Workbench]
    C -->|Fail| E[Prompt Adjuster]
    D --> F[C2PA Signer]
    F --> G[CDN Delivery]

レビューワークベンチでは、LLM 出力と画像プレビューを並べて表示し、修正の差分を記録します。

// components/AltWorkbench.tsx
function AltWorkbench({ imageUrl, generatedAlt }: Props) {
  const [value, setValue] = useState(generatedAlt)
  return (
    <div className="grid gap-4 md:grid-cols-2">
      <img src={imageUrl} alt="preview" className="rounded-lg" />
      <textarea value={value} onChange={e => setValue(e.target.value)} className="h-64 font-mono" />
      <aside>
        <h3>禁則ワード</h3>
        <ForbiddenList text={value} />
        <h3>アクセシビリティ診断</h3>
        <AltQualityScore text={value} />
      </aside>
    </div>
  )
}

レビュアーは ALT を確定したら署名を付与します。

// pipelines/alt/sign.ts
import { sign } from '@contentauth/toolkit'

export async function signAlt({ altText, manifest }: { altText: string; manifest: any }) {
  const signed = await sign(Buffer.from(altText), {
    signer: {
      name: 'Unified Image Tools ALT Review',
      certificate: process.env.C2PA_CERT!,
      privateKey: process.env.C2PA_KEY!
    },
    assertions: [
      {
        label: 'org.unified.alt-text',
        data: { altText, version: manifest.version, reviewer: manifest.reviewer }
      }
    ]
  })
  return signed
}

署名済みALTをHTMLに埋め込む

// components/OptimizedImage.tsx
import manifest from '../../data/c2pa-manifest.json'

export function OptimizedImage({ id }: { id: string }) {
  const data = manifest[id]
  return (
    <figure>
      <img src={data.src} alt={data.alt.text} data-alt-signature={data.alt.signature} />
      <figcaption>{data.caption}</figcaption>
      <link rel="alternate" type="application/c2pa" href={data.manifestUrl} />
    </figure>
  )
}

data-alt-signature 属性は変更検知用であり、配信側で検証して改変された場合は署名付き ALT に差し替えます。

監査ログとダッシュボード

metadata-audit-dashboard のスキーマ拡張例を示します。

CREATE TABLE alt_audit (
  asset_id TEXT,
  alt_text TEXT,
  relevance NUMERIC,
  toxicity NUMERIC,
  compliance NUMERIC,
  reviewer TEXT,
  signed_at TIMESTAMP DEFAULT now()
);

Grafana では以下のチャートを用意します。

  • Relevance p50/p90
  • Toxicity アラート件数
  • レビュアーごとの平均修正文字数
  • ポリシー違反カテゴリ別の発生傾向

LLMプロンプト最適化

LLM のプロンプトはログとの突き合わせで継続改善します。

prompts:
  default: |
    画像を説明するALTテキストを120文字以内で生成してください。
    禁止: 人種・性別の推測、推測が必要な感情表現。
    必須: 主題、背景、色、構図に言及。
  product: |
    商品画像のALTを80文字以内で生成。
    必須: 商品名、主要な特徴、色。

prompt-evaluator.ts で各プロンプトの合格率を算出し、週次で改善。Google の Helpful Content アップデートに合わせ、誤情報防止ルールも更新しましょう。

スクリーンリーダーでの実地検証

実際のユーザー環境で破綻がないかを確認するため、NVDA/VoiceOver の音声ログを収集します。

# Windows (NVDA)
nvda --speech-log --playback optimized-image.html > logs/nvda-20250929.log

ログは LLM スコアリング結果と紐づけ、違和感のある箇所を特定します。

チェックリスト

  • [ ] LLM 生成 ALT のスコアリング結果が 3 指標とも閾値を満たす
  • [ ] レビュアーによる修正内容が監査ログに残る
  • [ ] ALT テキストが C2PA マニフェストに含まれ署名されている
  • [ ] 禁則語・プライバシー項目が自動検出される
  • [ ] スクリーンリーダーでの再生ログが定期的に確認されている
  • [ ] プロンプトの合格率がダッシュボード化されている

まとめ

LLM による ALT 自動生成は効率化の一歩ですが、そのままではアクセシビリティや法令リスクを伴います。スコアリング・レビュー・署名を統合したガバナンスを構築することで、信頼できる ALT を大量に用意しつつ、透明性と監査性を両立できます。Web コーダーはこの仕組みをコードとして組み込み、アクセシビリティを継続的に改善するエンジンを備えましょう。

関連記事

基礎

AI支援アクセシビリティレビュー 2025 — Web制作会社の画像監修ワークフロー刷新

画像大量制作プロジェクトでALT文・音声説明・字幕をAIで補完しながら品質を担保する手順を解説。WCAG 2.2基準と国内法対応、監査ダッシュボードの作り方も紹介。

メタデータ

画像品質ガバナンス・フレームワーク 2025 — SLAと監査を一体化した統制モデル

エンタープライズ規模の画像運用における品質SLO設計、監査サイクル、意思決定レイヤーを一本化するガバナンス・フレームワークを提示。実務で使えるチェックリストと役割分担を詳細に解説。

メタデータ

C2PA署名と信頼性メタデータ運用 2025 — AI画像の真正性を証明する実装ガイド

AI生成画像や編集済みビジュアルの信頼性を担保するための C2PA 導入、メタデータ保全、監査フローを網羅。構造化データと署名パイプラインの実装例付き。

メタデータ

モデル/プロパティリリース管理の実務 2025 — IPTC Extension での表現と運用

画像の権利クリアランスを継続的に担保するための、モデル/プロパティリリース情報の付与・保管・配信のベストプラクティス。ガバナンスポリシーとあわせて解説。

メタデータ

リアルタイムアセット整合性監査 2025 — 画像の差分と改ざんを秒単位で検知

エッジとオリジンのアセット差異をリアルタイムに捕捉する監査パイプライン。ハッシュ監視、ビジュアルディフ、C2PA 証跡を統合し、改ざんとデプロイ事故を即時に検出する方法を解説。

メタデータ

安全なメタデータ方針 2025 — EXIF 削除・自動回転・プライバシー保護の実務

EXIF/XMP の安全な扱い方針、回転ズレの防止、ユーザーのプライバシー保護。必要最小限の項目のみ保持する設計。