API Documentation

よくある質問(FAQ)

PII-Fi APIに関するよくある質問と回答をまとめました。


一般的な質問

Q: 対応している言語は?

A: 現在、日本語(ja)と英語(en)に対応しています。デフォルトは日本語です。

Q: レート制限はありますか?

A: 現在、明示的なレート制限は設定されていませんが、過度なリクエストは制限される場合があります。大量のテキストを処理する場合は /detect/batch の使用を推奨します。

Q: バッチ処理の上限は?

A: 1回のリクエストで最大100件まで処理できます。


認証・セキュリティ

Q: APIキーはどのように取得しますか?

A: お問い合わせフォームよりご連絡ください。APIキーは pk_live_ で始まる文字列です。

Q: APIキーが漏洩した場合は?

A: 直ちに担当者にご連絡ください。新しいAPIキーを発行し、古いキーを無効化します。

Q: データは保存されますか?

A: APIに送信されたテキストはリクエスト処理後に破棄されます。ログにはテキスト内容は記録されません。

Q: APIの処理結果を機械学習に使用してもよいですか?

A: いいえ、本サービスの処理結果(マスキング済みテキスト、検出結果、マッピング情報など)を機械学習・AIモデルの学習データとして使用することは禁止されています。これは利用規約に定められており、違反した場合はサービスの利用を停止させていただく場合があります。

Q: 自社でPII検出エンジンを開発するために利用できますか?

A: いいえ、本サービスをアルゴリズム解析やリバースエンジニアリング、自社エンジン開発の参考にする目的で利用することは禁止されています。詳しくは利用規約をご覧ください。このような利用が疑われる場合(大量の網羅的なテストパターンの送信など)、サービスの利用を停止させていただく場合があります。


検出・マスキング

Q: どのようなPIIタイプを検出できますか?

A: 詳細は検出可能なエンティティタイプをご覧ください。人名(漢字・カタカナ・ローマ字の多表記対応)、電話番号、メールアドレス、住所、組織名・部署名など12カテゴリ59種に対応しています。さらに7種の文脈解析パイプラインとカスタム認識器で業務固有のパターンを追加できます。

Q: 特定のエンティティタイプのみ検出できますか?

A: はい、enabled_entities パラメータを使用します。

{
  "text": "田中太郎(090-1234-5678)",
  "enabled_entities": ["JPII_PHONE_NUMBER"]
}

この例では電話番号のみ検出され、人名は無視されます。

Q: 非識別化方式の違いは?

A: 詳細は非識別化方式をご覧ください。

方式 説明 出力例 復元可能
replace タグ形式で置換 <人名> No
mask 部分マスク 090-****-5678 No
full_mask 完全マスク **** No
hash ハッシュ化 JPII_PERSON_NAME_a1b2c3d4 No
fake ダミーデータ置換 山田花子 Yes

Q: 検出精度はどのくらいですか?

A: エンティティタイプにより異なりますが、電話番号やメールアドレスなどのパターンベースの検出は99%以上の精度です。人名の検出は文脈に依存するため、90-95%程度の精度です。

Q: マスク文字は変更できますか?

A: はい、mask および full_mask 方式ではマスク文字を指定できます。mask_char パラメータで任意の1文字を指定してください。

{
  "text": "田中太郎",
  "deidentification_type": "full_mask",
  "mask_char": "#"
}

出力例: ####

Q: 誤検出を減らすには?

A: 以下の方法があります:

  1. enabled_entities: 必要なエンティティタイプのみを指定
  2. カスタム認識器: 業務固有のパターンを高優先度で登録
  3. ポリシー設定: 不要なエンティティタイプを無効化

LLMワークフロー

Q: なぜLLMに個人情報を送ってはいけないのですか?

A: LLMプロバイダーに個人情報を含むデータを送信すると、以下のリスクがあります:

  • 学習データとして使用される可能性
  • セキュリティインシデント時の漏洩リスク
  • コンプライアンス上の問題

PII-Fi APIでダミーデータに置換することで、これらのリスクを軽減できます。詳細はLLMワークフローをご覧ください。

Q: 復元が失敗する場合は?

A: 以下の原因が考えられます:

  1. LLMがダミーデータを書き換えた: マーカーモード(use_markers: true)を使用してください
  2. マッピング情報が不完全: /detect のレスポンスから mapping_info を正しく保持してください
  3. テキストが大幅に変更された: 復元は単純な文字列置換のため、構造が大きく変わると失敗することがあります

Q: マーカーモードとは?

A: use_markers: true を指定すると、ダミーデータが [[PII_XXX:値]] 形式で出力されます。この形式はLLMが誤って書き換えにくいため、復元の成功率が高まります。

田中太郎 → [[PII_000:山田花子]]

カスタム認識器

Q: カスタム認識器は永続化されますか?

A: はい、カスタム認識器はポリシーに保存されるため、サーバー再起動後も有効です。

Q: 正規表現の制限はありますか?

A: Python の re モジュールでサポートされる正規表現が使用できます。複雑なパターン(先読み、後読みなど)も使用可能です。

Q: 同じIDで認識器を更新できますか?

A: いいえ、同じIDの認識器がすでに存在する場合はエラーになります。更新する場合は、一度削除してから再度追加してください。


辞書マッチング

Q: 辞書マッチングとは何ですか?

A: 正規表現では表現しにくい固有名詞(会社名、製品名、プロジェクト名など)を、単語リストを使って検出する機能です。詳細は辞書マッチングガイドを参照してください。

Q: ファジーマッチングとは何ですか?

A: 辞書エントリと完全に一致しなくても、タイプミスや表記ゆれなどの「類似した文字列」を検出する機能です。辞書作成時に fuzzy: true を設定すると有効になります。

Q: ファジーマッチングの閾値はどのくらいが適切ですか?

A: 用途に応じて調整してください。

閾値 特徴 適したケース
0.9 非常に厳密 長い単語(10文字以上)の1文字ミス
0.8(推奨) バランスが良い 5文字以上の単語で1文字のタイプミス
0.7 やや緩め 表記ゆれが多い固有名詞

Q: 短い単語でファジーマッチングが効きません

A: 3文字以下の短い単語では、1文字の違いでも類似度スコアが大きく低下するため、閾値を超えにくくなります。短い単語には fuzzy: false(完全一致)の使用を推奨します。5文字以上の単語で最も効果を発揮します。


トラブルシューティング

Q: リクエストがタイムアウトする

A: Content-Type: application/json ヘッダーが設定されているか確認してください。このヘッダーがないとリクエストがハングすることがあります。

Q: 401 Unauthorized エラー

A:

  • APIキーが正しいか確認してください
  • Authorization: Bearer YOUR_API_KEY の形式になっているか確認してください
  • APIキーが有効期限切れになっていないか担当者に確認してください

Q: 422 Unprocessable Entity エラー

A: リクエストパラメータが不正です。エラーレスポンスの detail フィールドを確認してください。詳細はエラーコードをご覧ください。

Q: 検出されるべきPIIが検出されない

A: 以下を確認してください:

  1. enabled_entities: 検出したいタイプが指定されているか
  2. ポリシー設定: そのエンティティタイプが有効になっているか
  3. パターン: 標準パターンにマッチしない形式の場合はカスタム認識器を追加

Q: 検出してほしくないものが検出される

A: 以下の方法で対処できます:

  1. enabled_entities: 必要なタイプのみを明示的に指定
  2. カスタムポリシー: 不要なエンティティタイプを enabled: false に設定

お問い合わせ

その他のご質問はお問い合わせフォームよりご連絡ください。