Broad and Efficient PII Detection with Unified Labels
Organizations: Cisco AI Defense
Abstract
Personally Identifiable Information (PII) detection models must efficiently find identifiers across diverse contexts while maintaining a low false-positive rate (FPR) on high-volume traffic. Recent detectors increasingly rely on complex architectures that raise deployment cost, yet many are fine-tuned on only a few synthetic datasets that limit their coverage. Combining public datasets is challenging because their taxonomies differ, and even after categories are mapped to a common schema, labels can disagree on what counts as a detection, producing inconsistent training and evaluation signals. To address these problems, we present a practical 141M-parameter encoder-based detector trained on 1.12 million examples from 77 public datasets, relabeled under a detailed definition of broad contextual detection for 12 structured PII categories. Evaluated on the AI4Privacy and Nemotron-PII benchmarks at a low-FPR operating point, our model achieves the highest recall against larger baselines in 11 of 14 comparisons under our labels and 9 of 14 under the original labels. Its largest recall gains include useful additional coverage, such as multilingual disclosures and IP addresses embedded in URLs. It achieves this with 2-10x higher throughput and 94-97% less peak GPU memory than the baselines, delivering leading detection performance at substantially lower cost.
Figures & tables
| Category | Direct context | Broad context |
|---|---|---|
| Credit Card Number | 29.3% / 0.3% | 71.2% / 32.5% |
| Driver License Number | 83.3% / 0.3% | 96.1% / 31.6% |
| Passport Number | 88.1% / 0.2% | 92.0% / 27.3% |
| Social Security Number | 62.3% / 0.5% | 87.4% / 24.5% |
| Tax Identification Number | 36.3% / 0.0% | 68.7% / 24.1% |
| Combined | 54.2% / 0.24% | 80.4% / 27.5% |
| Dataset | Category | Ours | NVIDIA GLiNER | Fastino GLiNER2 | Privacy Filter |
|---|---|---|---|---|---|
| AI4Privacy | Credit Card Number | 0.976 / 0.955 | 0.685 / 0.573 | 0.568 / 0.416 | — |
| Driver License Number | 0.909 / 0.306 | — | 0.723 / 0.185 | — | |
| Email Address | 0.999 / 1.000 | 0.983 / 0.983 | 0.982 / 0.983 | 0.990 / 0.990 | |
| Passport Number | 0.967 / 0.740 | — | 0.825 / 0.197 | — | |
| Phone Number | 0.904 / 0.797 | 0.808 / 0.743 | 0.935 / 0.886 | 0.948 / 0.953 | |
| Social Security Number | 0.923 / 0.237 | 0.494 / 0.126 | — | — |
| Dataset | Baseline | Categories | Ours F1 | Baseline F1 |
|---|---|---|---|---|
| AI4Privacy | NVIDIA GLiNER | 5 | 0.865 | 0.791 |
| Fastino GLiNER2 | 6 | 0.816 | 0.851 | |
| Privacy Filter | 2 | 0.895 | 0.840 | |
| Nemotron | NVIDIA GLiNER | 7 | 0.935 | 0.905 |
| Fastino GLiNER2 | 6 | 0.937 | 0.934 | |
| Privacy Filter | 2 | 0.985 | 0.922 |
| Model | Params | Memory | Latency | Inputs/s |
|---|---|---|---|---|
| Ours | 141M | 0.33 | 19.9 | 59.65 |
| NVIDIA GLiNER | 445M | 11.03 | 76.5 | 13.43 |
| Fastino GLiNER2 | 307M | 5.77 | 26.6 | 30.78 |
| Privacy Filter | 1.4B / 50M | 6.25 | 173.9 | 6.05 |
Appendix figures & tables9 assets
Supplementary material from the paper’s appendix.
Appendix
| Aspect | Guidance and example |
|---|---|
| Scope | The primary account number or an explicitly identified partial segment of it, but not the CVV, CSC, or CVC. My credit card number ends in 4327 4327 |
| Evidence | The text must identify the value as a card number, since matching the format is not enough. Your order number is 4111 1111 1111 1111. not labeled |
| Span | The number itself, without the surrounding words that describe it. The credit card number is 1111-2222-3333-4444 1111-2222-3333-4444 |
| Edge cases | A value presented as a card number is labeled even if it fails the checksum. My credit card number is 1234-5678-9012-3456 1234-5678-9012-3456 |
| Setting | Value |
|---|---|
| Base model | jhu-clsp/mmBERT-small |
| Training examples | 1,116,154 |
| Chunk size / overlap | 512 / 128 tokens |
| Epochs | 1 |
| Batch size | 512 chunks (128 per GPU) |
| Hardware | 4 NVIDIA RTX PRO 6000 |
| Category | Language | Direct context words |
|---|---|---|
| Credit Card Number | German | kreditkarte, kreditkartennummer, debitkarte, debitkartennummer, zahlungskarte, kartennummer |
| English | credit card, credit card number, debit card, debit card number, payment card, card number, card no | |
| Spanish | tarjeta de crédito, tarjeta de credito, tarjeta de débito, tarjeta de debito, tarjeta bancaria, tarjeta de pago, número de tarjeta, numero de tarjeta | |
| French | carte de crédit, carte de credit, carte de débit, carte de debit, carte bancaire, carte de paiement, numéro de carte, numero de carte | |
| Hindi | \devanagarifont क्रेडिट कार्ड, \devanagarifont डेबिट कार्ड, \devanagarifont भुगतान कार्ड, \devanagarifont कार्ड नंबर, \devanagarifont कार्ड संख्या | |
| Italian | carta di credito, carta di debito, carta bancaria, carta di pagamento, numero della carta, numero di carta |
| Language | Broad context words |
|---|---|
| German | lizenz, führerschein, fuhrerschein, fahrerlaubnis, ausweis, id, identifikation, identität, identitaet, verifizieren, verifizierung, überprüfen, ueberpruefen, überprüfung, ueberpruefung, konto, dokument, nachweis, nummer, reisepass, sozial, versicherung, steuer, fiskalisch, karte, zahlung, bezahlen, kauf, transaktion, abrechnung |
| English | license, licence, lic, permit, id, identification, identity, identify, verify, verification, credential, account, document, record, number, passport, social, security, tax, taxpayer, fiscal, card, payment, pay, purchase, transaction, billing, checkout |
| Spanish | licencia, permiso, id, identificación, identificacion, identidad, verificar, verificación, verificacion, cuenta, documento, credencial, número, numero, pasaporte, social, seguridad, impuesto, fiscal, tributario, tarjeta, pago, pagar, compra, transacción, transaccion, facturación, facturacion |
| French | licence, permis, pièce d identité, piece d identite, identifiant, identification, identité, identite, vérifier, verifier, vérification, verification, compte, document, justificatif, numéro, numero, passeport, social, sécurité, securite, impôt, impot, fiscal, carte, paiement, payer, achat, transaction, facturation |
| Hindi | \devanagarifont लाइसेंस, \devanagarifont लाइसेन्स, \devanagarifont परमिट, \devanagarifont आईडी, \devanagarifont पहचान, \devanagarifont सत्यापन, \devanagarifont सत्यापित, \devanagarifont खाता, \devanagarifont अकाउंट, \devanagarifont दस्तावेज, \devanagarifont रिकॉर्ड, \devanagarifont संख्या, \devanagarifont नंबर, \devanagarifont पासपोर्ट, \devanagarifont सामाजिक, \devanagarifont सुरक्षा, \devanagarifont कर, \devanagarifont टैक्स, \devanagarifont कार्ड, \devanagarifont भुगतान, \devanagarifont पेमेंट, \devanagarifont खरीद, \devanagarifont लेनदेन, \devanagarifont बिलिंग |
| Italian | licenza, patente, id, identificazione, identità, identita, verificare, verifica, conto, account, documento, credenziale, numero, passaporto, sociale, sicurezza, imposta, fiscale, tributario, carta, pagamento, pagare, acquisto, transazione, fatturazione |
| Category | AI4Privacy label | Nemotron label(s) |
|---|---|---|
| Bank Routing Code | — | bank_routing_number |
| Credit Card Number | CREDITCARDNUMBER | credit_debit_card |
| Driver License Number | DRIVERLICENSENUM | — |
| Email Address | ||
| IP Address | — | ipv4 , ipv6 |
| Passport Number | PASSPORTNUM | — |
| Category | NVIDIA GLiNER | Fastino GLiNER2 | Privacy Filter |
|---|---|---|---|
| Bank Routing Code | bank_routing_number | routing_number | — |
| Credit Card Number | credit_debit_card | card_number | — |
| Driver License Number | — | drivers_license_number | — |
| Email Address | private_email | ||
| IP Address | ipv4 , ipv6 | ip_address | — |
| Passport Number | — | passport_number | — |
| Detail | Ours | NVIDIA GLiNER | Fastino GLiNER2 | Privacy Filter |
|---|---|---|---|---|
| Chunk / overlap (tokens) | 512 / 128 | 350 / 50 | 384 / 64 | 128,000 / 0 |
| Category score | Maximum global-classifier score | Maximum span score | Maximum span score | Maximum token score |
| Spans | Token-classifier spans in categories the global classifier flags | Spans above a score threshold | Spans above a score threshold | Viterbi spans in categories above a score threshold |
| Dataset | Category | Ours | NVIDIA GLiNER | Fastino GLiNER2 | Privacy Filter |
|---|---|---|---|---|---|
| AI4Privacy | Credit Card Number | 0.985 / 0.984 | 0.705 / 0.605 | 0.706 / 0.578 | — |
| Driver License Number | 0.934 / 0.462 | — | 0.809 / 0.235 | — | |
| Email Address | 0.999 / 1.000 | 0.992 / 0.992 | 0.993 / 0.994 | 0.992 / 0.993 | |
| Passport Number | 0.980 / 0.822 | — | 0.885 / 0.345 | — | |
| Phone Number | 0.956 / 0.877 | 0.880 / 0.835 | 0.962 / 0.926 | 0.961 / 0.968 | |
| Social Security Number | 0.949 / 0.414 | 0.533 / 0.162 | — | — |
| Dataset | Category | Ours | NVIDIA GLiNER | Fastino GLiNER2 | Privacy Filter |
|---|---|---|---|---|---|
| AI4Privacy | Credit Card Number | 0.986 / 0.993 | 0.707 / 0.606 | 0.815 / 0.719 | — |
| Driver License Number | 0.949 / 0.598 | — | 0.870 / 0.298 | — | |
| Email Address | 0.999 / 1.000 | 0.994 / 0.995 | 0.997 / 0.997 | 0.994 / 0.994 | |
| Passport Number | 0.985 / 0.881 | — | 0.940 / 0.511 | — | |
| Phone Number | 0.991 / 0.960 | 0.897 / 0.858 | 0.976 / 0.951 | 0.967 / 0.976 | |
| Social Security Number | 0.970 / 0.549 | 0.586 / 0.200 | — | — |
PII Detection
Personally identifiable information (PII) detection finds sensitive personal details in text, conversations, images, and other data.
See all 39 papers