このノウハウで解決する課題

に取引先資料を入れたいが、守秘義務違反が怖い」「マスキングを毎回手作業でやっていると現場が破綻する」「気づかずに入れてしまうリスクがある」。AI 活用と守秘義務の両立に必要な技術です。

結論

マスキングを する。Python スクリプト 1 本で「PDF / テキストを読み込み → を検出してマスキング → クリーンなテキストを出力」を 3 秒で完了。社内化してメンバー全員が使えるようにする。

必要な準備

  • ツール: Python 3.10+、presidio-analyzer presidio-anonymizer ライブラリ( OSS)
  • 想定環境: 各 PC ローカル(に送る前にローカルでマスキング)
  • 前提知識: Python の基本実行(pip install / python script.py)

手順

1. Microsoft Presidio をインストール

pip install presidio-analyzer presidio-anonymizer
python -m spacy download ja_core_news_lg

Presidio は Microsoft が公開する OSS の PII 検出ライブラリ。日本語対応を別途ダウンロード。

2. マスキングスクリプト

from presidio_analyzer import AnalyzerEngine
from presidio_analyzer.nlp_engine import NlpEngineProvider
from presidio_anonymizer import AnonymizerEngine
import sys

# 日本語NLP設定
config = {
    "nlp_engine_name": "spacy",
    "models": [{"lang_code": "ja", "model_name": "ja_core_news_lg"}],
}
nlp = NlpEngineProvider(nlp_configuration=config).create_engine()
analyzer = AnalyzerEngine(nlp_engine=nlp, supported_languages=["ja"])
anonymizer = AnonymizerEngine()

text = sys.stdin.read()

# 検出
results = analyzer.analyze(
    text=text,
    language="ja",
    entities=["PERSON", "PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD"],
)

# 匿名化
anonymized = anonymizer.anonymize(text=text, analyzer_results=results)
print(anonymized.text)

3. 日本固有の PII を正規表現で追加

Presidio は標準で マイナンバー / 日本の口座番号などを完全には検出しません。正規表現を追加 します:

(例:取引先対応業務の場合。自組織の業務内容に合わせて書き換えてください)

import re

# マイナンバー(12桁)
text = re.sub(r"\b\d{4}\s?\d{4}\s?\d{4}\b", "[マイナンバー]", text)

# 銀行口座(7桁)
text = re.sub(r"\b\d{7}\b", "[口座番号]", text)

# 取引先名(社内マスタから読み込み)
client_map = {"ABC株式会社": "CLIENT_001", "DEF合同会社": "CLIENT_002"}
for original, masked in client_map.items():
    text = text.replace(original, masked)

4. ワークフローに組み込む

# 議事録ファイルをマスキングしてクリップボードに
cat 議事録.txt | python mask.py | pbcopy

このコマンドを各メンバーの PC に Alfred / Raycast / Workflow に登録 → ワンキー実行可能に。

5. 復元マッピングを残す(任意)

CLIENT_001 → ABC株式会社 の対応表をローカル保存。AI 出力を社内文書に戻す時に置換可能。

効果と限界

効果:

  • マスキング作業時間 5 分 → 3 秒
  • 「うっかり PII を入れる」事故を 構造的に防止
  • 守秘義務遵守をシステム的に担保

限界:

  • 完全自動検出は不可能。文脈依存の固有名詞は漏れることがある
  • 必ず マスキング後の出力を目視確認 する 1 段階を残す
  • マスキングしすぎると AI が文脈を理解できず精度が落ちる → 業務に必要な情報だけ残す バランス

応用・派生

  • Excel / PDF 自動マスキング:オフィス文書も同じ枠組みで処理可能(openpyxl / pdfplumber 連携)
  • Web フォームでマスキング:メンバー向け Web UI を 1 ページで構築(Streamlit / Flask)
  • クラウド版 Presidio に Presidio として展開、社内全員から呼び出し可能に