ベンチマーク
· 5分で読めます

Presidioを日本語の文書で測る:読めるまま残った個人情報

執筆:Amine Gaaliche · Claudeで下書きを作成し、内容は人が確認したうえで手作業で編集しています

Presidioは、Microsoftで作られた個人情報検出のオープンソースのライブラリです。日本語の文書に使えるかを確かめるため、当社は2026年10月31日、架空の日本語の文書8件で測りました。ラベルを付けた個人情報2,891文字のうち、spaCyの日本語モデルで動かしたPresidioでは733文字が読めるまま残り、promptShieldでは63文字でした。

Presidioを日本語で動かすには

Presidioの既定の構成は英語向けです。公式の説明では、ほかの言語で使うには、その言語のモデルを用意し、言語ごとに認識器を設定するとされています。日本語についての記載はありません。

今回は、日本の開発者が最初に試すと思われる二つの構成を測りました。一つはspaCyの日本語モデルja_core_news_lgです。このモデルが付けるPERSONやORG、GPEといったラベルはPresidioの対応表に入っているため、追加の設定なしで動きます。

もう一つはGiNZA(ja_ginza 5.3.0)です。GiNZAはPerson、Company、Province、Postal_Addressなど200種類を超えるラベルを使うため、そのままではPresidioがすべての検出を捨ててしまいます。そこで、GiNZAが公開しているラベルの対応表をPresidioの分類につなぎ、ID_NumberをIDに割り当てました。

Presidioには日本固有の認識器がありません。2026年10月31日に確認した対応エンティティの一覧には国別の見出しが19ありますが、日本の見出しはありません。マイナンバー、法人番号、運転免許証番号を見つける規則は、利用する側が書く必要があります。

テストの作り方

文書は8件、合計17ページです。法律事務所の相談カードと利益相反の確認、税理士事務所の会社設立の記録、雇用保険の離職証明書、在宅医療のカンファレンス資料、賃貸の入居申込書、転校の書類、市の犬の登録台帳、社内調査報告書があります。

氏名、組織名、住所、ID番号、電話番号、メールアドレス、生年月日に、517か所のラベルを付けました。漢字とかなは1文字ずつ、数字や英字は一続きを1文字として数えると、2,891文字になります。

文書とラベルは当社がAIエージェントに作成させたもので、顧客のデータは含まれていません。作成したエージェントは、promptShieldの検出コードも検出結果も見ていません。ID番号はチェックディジットまでスクリプトで検査していますが、ラベルを人が1件ずつ確認したわけではありません。

この8件は、検出の改良に使う前の未見のテスト用として作り、2026年10月31日に1回採点しました。今回のpromptShieldの数字はその採点の結果と同じで、当時の開発版のものです。その後も日本語の検出には手を加えています。両ツールには、同じ方法で抽出した同じテキストを渡しました。

結果

対象はデジタルで作成したPDFです。Presidioは組み込みの認識器と日本語モデル1つで動かし、スコアのしきい値は設けていません。

構成読めるまま残った文字検出率誤検出(1文書あたり)
promptShield6397.8%1.4件
Presidio(ja_core_news_lg)73374.6%8.9件
Presidio(GiNZA)1,09562.1%8.1件
Presidio(ja_core_news_sm)1,73839.9%6.8件

読めるまま残った個人情報が0文字だった文書は、promptShieldが8件中2件、Presidioはどの構成でも0件でした。同じ8件をWord、テキスト、Excel、PowerPoint、スキャン画像に変換した版を含めても、傾向は変わりません。

差がついた分野

分野ごとの検出率です。

分野Presidio(ja_core_news_lg)promptShield
氏名91%97%
組織名66%97%
住所65%99%
ID番号32%98%
電話番号100%100%
メールアドレス100%100%
生年月日89%95%

電話番号とメールアドレスは、Presidioの汎用の規則で両方とも100%でした。差が出たのは、日本の文書に固有の書き方が多い分野です。郵便番号から番地まで続く住所が丸ごと残った例や、法人番号、運転免許証番号、弁護士の登録番号が残った例がありました。

誤検出の数

誤検出は、確認する人が1件ずつ外す手間になります。個人情報を1文字も含まない検出を、同じ語の重複を除いて数えると、1文書あたりPresidioは8.9件、promptShieldは1.4件でした。promptShieldの誤検出11件のうち9件は犬の登録台帳で、犬種や犬の名前を氏名と判断したものです。

GiNZAの構成は、書類名や制度名のように個人情報ではない語を拾う回数が少なめでした。

どのモデルも、すべての個人情報を見つけられるわけではありません。そのためpromptShieldでは、既定の設定で、保護する領域を確認済みにするまでファイルをダウンロードできないようにしています。

読めるまま残った1文字が問題になるのは、たとえばその文書を生成AIに渡すときです。個人情報保護委員会は、2023年6月2日の「生成AIサービスの利用に関する注意喚起等」で、個人情報を含むプロンプトを入力する事業者に、利用目的の達成に必要な範囲内かを十分に確認するよう求めています。

この測定の限界

8件は小さな数で、1件の文書が結果を大きく動かします。promptShieldの見落とし63文字のうち17文字は、在宅医療のカンファレンス資料1件に集中していました。文書はAIが書いた架空のもので、実際の書類にある崩れた書式や手書きは含まれていません。

別の未見の文書で2026年11月1日に測ると、promptShieldの検出率は下がりました。全形式の合計で、今回の8件は97.1%、一般の業務文書8件は94.3%、名簿の多い文書8件は88.4%です。11月3日に測った、表の多い別の文書8件は93.1%でした。この3組は非公開で、Presidioでは測っていません。

Presidioには、日本語の規則を足していません。マイナンバーや住所の規則を自分で書けば、今回より良い結果になるはずです。どこまで差が縮まるかは、公開しているラベルと採点スクリプトで測れます。

Presidioが向いている場合

Presidioは現在、コミュニティが運営しているプロジェクトです。ログやチャットのようなテキストの流れを自社のPythonの処理に組み込み、認識器を自分たちで書いて育てるなら、Presidioは良い土台になります。

promptShieldの役割はもっと限られています。手元の1台のパソコンで、1件ずつの文書を、人が確認しながら処理します。範囲を絞っているので、日本の業務文書に合わせて検出を調整できます。検出エンジンを自社で作った理由は別の記事で説明しています。

再現について

日本語の8件の文書のPDFとラベル、両ツールの出力、採点スクリプトを公開しています。公開先は、GitHubのpromptshield-Inc/pii-detection-benchmarksです。文書とラベルはcorpus/jaに、出力はresults/2026-10-31-jaにあります。

Presidioの3つの構成は、同じリポジトリのスクリプトと版を固定した環境で、どなたでも動かし直せます。採点スクリプトを実行すると、この記事の文字数がそのまま出ます(検出率は、丸めの関係でja_core_news_lgの構成だけ74.7%と表示されます)。公開しているのはPDFの結果だけです。欧州の言語で行った比較は、Presidioとの比較ページにまとめています。

よくある質問

Presidioは日本語に対応していますか?

spaCyやGiNZAの日本語モデルを設定すれば動きます。ただし、日本固有の認識器はありません。2026年10月31日の測定では、ja_core_news_lgの構成で個人情報の74.6%を検出しました。

PresidioでGiNZAを使うには、何が必要ですか?

ラベルの対応付けが必要です。GiNZAのラベルはPresidioの対応表にないため、設定しないと検出がすべて捨てられます。

マイナンバーや法人番号は、Presidioで検出できますか?

既定の構成には、それらを見つける認識器がありません。番号の形やチェックディジットの規則を、認識器として自分で追加する必要があります。

このテストは自分で再現できますか?

Presidioの実行と採点は再現できます。promptShieldの結果は、公開している出力を採点して確かめられます。

役に立った場合は、拍手でお知らせください。

共有