このノウハウで解決する課題
「Claude に取引先資料を入れたいが、守秘義務違反が怖い」「マスキングを毎回手作業でやっていると現場が破綻する」「気づかずに入れてしまうリスクがある」。AI 活用と守秘義務の両立に必要な技術です。
結論
マスキングを自動化 する。Python スクリプト 1 本で「PDF / テキストを読み込み → PII を検出してマスキング → クリーンなテキストを出力」を 3 秒で完了。社内ツール化してメンバー全員が使えるようにする。
必要な準備
- ツール: Python 3.10+、
presidio-analyzerpresidio-anonymizerライブラリ(Microsoft 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:Azure に Presidio API として展開、社内全員から呼び出し可能に