
画像モデレーションAPIガイド:ユーザーがアップロードした不適切な画像をフィルタリングする方法

難しいのはAPIを呼び出すことではありません。難しいのは、APIを中心にアップロードワークフローを設計することです。
まとめ
- パブリックまたはセミパブリックなユーザーがアバター、投稿、マーケットプレイスの写真、AI生成画像、メッセージの添付ファイルをアップロードできる場合は、画像モデレーションを使用してください。
- 画像が公開される前に、サーバーサイドでモデレーションを実行してください。
- 一時ストレージを使用し、承認された画像のみを永続ストレージに移動してください。
- 自動モデレーションは最初のレイヤーとして扱い、完璧な最終判断としては扱わないでください。
- 曖昧なケースには、人間によるレビュー、ユーザー報告、異議申し立てを追加してください。
- EvoLink Moderationは、OpenAI互換の
/v1/moderationsエンドポイントを通じて、画像のみおよびテキスト+画像のリクエストに対応しています。
画像モデレーションがテキストモデレーションと異なる理由
テキストモデレーションと画像モデレーションは、関連はしていますが異なる問題を解決します。
テキストモデレーションは単語、フレーズ、言語パターンを検査できます。画像モデレーションはピクセル、オブジェクト、視覚的なコンテキスト、場合によっては画像内に埋め込まれたテキストを解釈する必要があります。
これにより、いくつかの違いが生まれます。
| 課題 | テキストモデレーション | 画像モデレーション |
|---|---|---|
| 入力サイズ | 通常は小さい | はるかに大きいことが多い |
| コンテキスト | 言語と会話 | 視覚的なシーン、オブジェクト、OCR、キャプション |
| よくあるエラー | 皮肉、隠語、文脈の見落とし | アート、医療画像、水着、ミーム、トリミング、オーバーレイ |
| ワークフローへの影響 | コメントが拒否またはキューに入る | アップロードされたメディアに一時ストレージが必要な場合がある |
| ユーザーの感受性 | ユーザーは書き直しが可能なことが多い | プロフィール写真や個人的な画像の拒否はより敏感に感じられる |
このため、信頼性の高い画像モデレーションシステムは通常、APIとプロダクトルール、レビューキュー、ユーザー報告を組み合わせます。
一般的な画像モデレーションのユースケース
1. プロフィール写真とアバター
プロフィール写真はプロダクト全体で表示されます。また、悪用されやすいものでもあります。
モデレーションチェックでは通常、以下を検出します。
- 性的またはわいせつな画像
- 過激な暴力
- 自傷行為の画像
- ヘイトシンボル
- 脅迫的または威圧的なビジュアル
アバターの場合、誤検出は重要な問題です。通常のプロフィール写真が拒否されると、ユーザー体験がすぐに悪化する可能性があります。良いパターンは、高リスク画像のみを自動ブロックし、不確実な画像はレビューに送り、明らかに低リスクの画像は許可することです。
2. フォーラムやソーシャルメディアへのアップロード
フォーラムやソーシャルプラットフォームでは、テキストと画像が組み合わされることが多いです。投稿のキャプションが画像の意味を変えることがあり、画像がキャプションの意味を変えることもあります。
これらのワークフローでは、テキスト+画像モデレーションが有用です。アプリケーションが公開前に投稿の両方の要素を評価できるためです。
3. マーケットプレイスの商品写真
マーケットプレイスの画像モデレーションは、NSFWコンテンツだけの問題ではありません。商品プラットフォームでは、以下も検出する必要がある場合があります。
- 禁止品目
- 武器や薬物
- ウォーターマーク
- 画像品質の問題
- 誤解を招く写真
- ポリシーに関わる視覚的な主張
画像品質チェック、OCR、ウォーターマーク検出、またはマーケットプレイス固有のルールについては、ワークフローに応じてSightengine、Amazon Rekognition、Azure AI Content Safetyなどの専用ビジュアルモデレーションサービスが有用な場合があります。
4. AI生成画像
AI生成画像もコンテンツポリシーに違反する可能性があります。ユーザーがアプリ内で画像を生成したり、AI生成アセットをアップロードしたりする場合は、両方をモデレーションしてください。
- プロンプトまたはキャプション
- 生成された画像
これは、出力がパブリックである場合、収益化されている場合、またはブランドセーフな体験に関連している場合に特に重要です。
5. メッセージの添付ファイル
プライベートまたはセミプライベートなメッセージは、モデレーションがプライバシーの期待と交差するため、より難しいプロダクト判断を生み出します。アップロードを配信前にスキャンするプロダクトもあれば、報告されたコンテンツのみをスキャンするプロダクトもあり、クライアントサイドの警告とサーバーサイドの強制を組み合わせるプロダクトもあります。
適切な設計は、プロダクト、法的義務、プライバシーポリシー、ユーザーの期待によって異なります。
画像モデレーションAPIの仕組み
ほとんどの画像モデレーションAPIは、同じ基本パターンに従います。
- 画像URL、アップロードされたファイル、ストレージオブジェクト、または画像バイトを提供します。
- APIが1つ以上のモデレーションモデルで画像を分析します。
- レスポンスがカテゴリラベル、信頼度スコア、またはブールフラグを返します。
- アプリケーションが画像を許可、レビュー、またはブロックするかを判断します。
DetectModerationLabels APIは、信頼度スコアと階層的なタクソノミーを持つモデレーションラベルを返します。Sightengineの画像モデレーションAPIは、選択されたモデルの詳細なモデレーションスコアを返します。OpenAIのModerationエンドポイントは、テキストと画像のカテゴリフラグとスコアを返しますが、画像サポートはカテゴリによって異なります。参考資料:
- OpenAI Moderation guide
- Amazon Rekognition DetectModerationLabels
- Sightengine image moderation principles
推奨されるアップロードアーキテクチャ
ほとんどのパブリックアプリケーションでは、最も安全なパターンは以下の通りです。
user upload
-> temporary storage
-> image moderation API
-> allow / review / block
-> permanent storage only if allowed or review-approvedこれにより、チェックされる前に不適切な画像が公開されることを防ぎます。
パターン1:アップロード前のクライアントサイド警告
クライアントサイドのチェックはユーザーに素早く警告できますが、唯一の適用レイヤーにすべきではありません。
クライアントサイドのチェックは以下に使用してください。
- 即時のユーザーフィードバック
- アップロード前の明らかな悪用の削減
- 低リスクフローでの帯域幅の節約
ただし、クライアントサイドのチェックはバイパスできるため、ポリシーは常にサーバーサイドで適用してください。
パターン2:アップロード後、公開前のモデレーション
これがデフォルトの本番パターンです。
- 画像を一時的なプライベートストレージにアップロードします。
- 画像URLをモデレーションAPIに送信します。
- 低リスクの場合、永続ストレージに移動します。
- 中リスクの場合、レビューキューに入れます。
- 高リスクの場合、拒否して一時ファイルを削除します。
パターン3:非同期モデレーション
信頼されたコミュニティや大量のワークフローでは、最初に保存してバックグラウンドでモデレーションを行う場合があります。この場合、チェックが完了するまで画像をプライベートのまま保持するか、アップローダーのみに表示してください。
EvoLink Moderationを画像モデレーションAPIとして使用する
- テキストのみのモデレーション
- 画像のみのモデレーション
- テキスト+単一画像のモデレーション
/v1/moderationsエンドポイントを使用し、標準のモデレーションフィールドに加えてevolink_summaryを返します。サマリーはプロダクトの判断に役立つよう設計されています。
risk_levelflaggedviolationsmax_scoremax_category
画像のみの例
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EVOLINK_API_KEY",
base_url="https://api.evolink.ai/v1"
)
response = client.moderations.create(
model="evolink-moderation-1.0",
input=[
{
"type": "image_url",
"image_url": {
"url": "https://example.com/user-upload.jpg"
}
}
]
)
risk = response.evolink_summary.risk_level
if risk == "high":
block_image()
elif risk == "medium":
send_to_review()
else:
approve_image()テキスト+画像の例
response = client.moderations.create(
model="evolink-moderation-1.0",
input=[
{"type": "text", "text": "User caption or message"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/user-upload.jpg"
}
}
]
)複数画像の処理
EvoLink Moderationは1リクエストにつき1画像に対応しています。ユーザーが複数の画像をアップロードする場合は、並行リクエストを送信するか、キューで処理してください。
def decide_album_status(results):
risk_order = {"low": 0, "medium": 1, "high": 2}
highest = max(results, key=lambda r: risk_order[r.evolink_summary.risk_level])
return highest.evolink_summary.risk_level多くのアプリでは、1つの高リスク画像が投稿全体をブロックし、中リスクの画像は投稿をレビューに送るべきです。
本番環境での画像モデレーションのベストプラクティス
1. サーバーサイドでモデレーションを実行する
クライアントサイドのチェックはUXを改善できますが、最終判断はサーバーが行う必要があります。そうしないと、ユーザーがアップロードAPIを直接呼び出してチェックをバイパスできてしまいます。
2. 一時ストレージを使用する
アップロードされた画像をすぐに公開しないでください。プライベートに保存し、モデレーションを行い、承認後にのみパブリックバケットまたはCDNに移動してください。
3. 段階的な判断を使用する
単純な二分岐を避けてください。3段階のワークフローにより、より細かい制御が可能になります。
- 低リスク:許可
- 中リスク:レビュー
- 高リスク:ブロック
4. 具体的なユーザーフィードバックを提供する
一般的な拒否メッセージはサポート負荷を増加させます。可能な場合は、カテゴリを大まかに説明してください。
- 「この画像には性的コンテンツが含まれている可能性があります。」
- 「この画像には過激な暴力が含まれている可能性があります。」
- 「この画像は公開前にレビューが必要です。」
モデレーションの回避に利用される可能性がある正確な閾値やモデルの弱点を公開しないようにしてください。
5. 報告と異議申し立てを追加する
完璧なモデルはありません。ユーザー報告と異議申し立てを追加して、チームが誤検出を修正し、見逃しを発見できるようにしてください。
6. モデレーション品質を追跡する
以下を計測してください。
- 拒否率
- レビューキュー率
- レビュアーのオーバーライド率
- 異議申し立て成功率
- ユーザー報告率
- リピート違反者率
- レイテンシとAPIエラー率
これらの数値は、閾値の調整や別のモデレーションレイヤーの追加が必要かどうかの判断に役立ちます。
7. 実際のコンテンツでテストする
アプリケーションから匿名化またはポリシーに準拠したサンプルを使用してください。公開ベンチマークの主張は、モデレーションAPIがお使いのコミュニティ、マーケットプレイス、または画像スタイルでどのように動作するかを正確に予測することはほとんどありません。
よくある間違い
間違い1:1つのAPIですべてをキャッチできると思い込む
画像モデレーションAPIは有用ですが、すべてのプロダクトポリシーを理解しているわけではありません。マーケットプレイスのカテゴリ、ブランドセーフティ、著作権、ウォーターマーク、地域のコンプライアンスについては、カスタムルールが必要になる場合があります。
間違い2:モデレーション完了前に公開する
不適切な画像が一瞬でも表示される場合、ユーザーがスクリーンショットを撮って共有する可能性があります。チェックが完了するまでアップロードをプライベートのまま保持してください。
間違い3:不確実な画像をすべてブロックする
閾値が厳しすぎると誤検出が発生します。すべてを自動的に拒否するのではなく、不確実なコンテンツはレビューに送ってください。
間違い4:画像の周囲のテキストを無視する
キャプションは画像の意味を変える可能性があります。プロダクトがキャプションを許可している場合は、テキストと画像を一緒にモデレーションしてください。
間違い5:プライバシーとデータ保持を忘れる
画像には顔、書類、プライベートな空間、未成年者が含まれる場合があります。本番環境で使用する前に、ベンダーのデータ取り扱い、保持期間、リージョン、トレーニング利用の条件を確認してください。
専門的な画像モデレーションプロバイダーを使用すべき場合
EvoLink Moderationは、OpenAI互換のAPIワークフロー内でのテキストと画像の安全性判断に適しています。
以下が必要な場合は、Sightengine、Amazon Rekognition、Azure AI Content Safetyなどの専門的な画像プロバイダーを検討してください。
- OCR中心のモデレーション
- ウォーターマーク検出
- 顔検出
- ディープフェイク検出
- 動画モデレーション
- ライブストリームモデレーション
- カスタムビジュアルクラス
- AWSまたはAzureとのクラウドネイティブ統合
適切な答えは、レイヤードスタックかもしれません。テキスト+画像の安全性ルーティングにはEvoLinkを、画像品質、OCR、またはマーケットプレイス固有のチェックには専門的なビジュアルサービスを使用する方法です。
FAQ
画像モデレーションAPIとは何ですか?
画像モデレーションAPIは、画像を分析し、カテゴリラベル、信頼度スコア、リスクレベルなどの安全性シグナルを返します。アプリケーションはこれらのシグナルを使用して、アップロードされた画像を許可、レビュー、またはブロックします。
EvoLink Moderationは画像モデレーションに対応していますか?
はい。EvoLink Moderation 1.0は、OpenAI互換のモデレーションエンドポイントを通じて、画像のみのリクエストとテキスト+単一画像のリクエストに対応しています。
1回のEvoLinkリクエストで複数の画像をモデレーションできますか?
いいえ。EvoLink Moderationは1リクエストにつき1画像に対応しています。複数の画像をモデレーションする場合は、並行リクエストを送信するか、キューを使用してください。
画像のモデレーションはアップロードの前と後のどちらで行うべきですか?
まず一時的なアップロードストレージを使用し、サーバーサイドでモデレーションを行い、承認された画像を永続ストレージに移動してください。これにより、チェックが完了する前に不適切な画像が公開されることを防ぎます。
マーケットプレイスには画像モデレーションだけで十分ですか?
通常、それだけでは不十分です。マーケットプレイスでは、安全性チェックに加えて、品質ルール、禁止品目のチェック、OCR、ウォーターマーク検出、人間によるレビューが必要になることが多いです。
関連するモデレーションガイド
- Best Content Moderation APIs and Tools for Developers
- omni-moderation-latest Explained: OpenAI Moderation API Guide
- OpenAI Moderation API Pricing: Is It Free? Limits and Alternatives
- How to Add Content Moderation to Your Chatbot or AI Agent


