Downloads · 30 days
11
26% of all-time downloads
brahim-23/eu-pii-anonimization-multilang
eu-pii-anonimization-multilang is a token classification model from brahim-23. Use it when you need labels on individual words, such as names. The card lists the license as apache-2.0.
A multilingual PII detector built for EU compliance reality: 24 official languages, GDPR special categories, AI Act high-risk data - in one model.
Downloads · 30 days
11
26% of all-time downloads
All-time downloads
43
Public
Parameters
278M
2.5 GB on disk
Likes
0
Public
Click a slice to open those files.
.onnx1.4 GB · 55%
From the Hugging Face model README
A multilingual PII detector built for EU compliance reality: 24 official languages, GDPR special categories, AI Act high-risk data - in one model.

GDPR and the AI Act require you to detect and redact personal data across every language your users write in. Most open-source PII models were trained on English with a few translations bolted on, and they cover the basics — names, emails, phone numbers — while missing exactly the categories regulators care about: biometric data, genetic data, health information, political opinions, ethnic origin.
bardsai/eu-pii-anonimization-multilang is trained end-to-end on real multilingual data (not English-translated), covers 36 entity classes mapped to GDPR Article 9 special categories and AI Act high-risk identifiers, and ships with quantized ONNX weights so you can run it in production pipelines without GPU infrastructure.
Compliance and privacy engineers at EU companies who need to:
from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch
model_name = "bardsai/eu-pii-anonimization-multilang"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForTokenClassification.from_pretrained(model_name)
text = "John Smith, passport AB123456, phone +48 123 456 789"
inputs = tokenizer(text, return_tensors="pt", truncation=True)
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=-1)
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
labels = [model.config.id2label[p.item()] for p in predictions[0]]
for token, label in zip(tokens, labels):
if label != "O":
print(label, token)
For production, use the quantized ONNX weights in onnx/model_quantized.onnx — same outputs, ~4x smaller, CPU-friendly latency.
36 classes across eight families, with B-/I- BIO labeling:
Full label list in config.json (id2label / label2id).
This is a model, not a compliance program. A few things to keep in mind:
model.safetensors — model weightsconfig.json — config and label mappingtokenizer.json, tokenizer_config.json — tokenizer assetsonnx/model.onnx — ONNX exportonnx/model_quantized.onnx — INT8 quantized for CPU productiontraining_args.bin — training metadata@misc{bards.ai_2026,
author = { bards.ai and Michał Swędrowski and Michał Pogoda-Rosikoń and Karol Samorański },
title = { eu-pii-anonimization-multilang (Revision 6de9f68) },
year = 2026,
url = { https://huggingface.co/bardsai/eu-pii-anonimization-multilang },
doi = { 10.57967/hf/8721 },
publisher = { Hugging Face }
}
We build product ML for teams shipping AI to real users — RAG, agents, fine-tuned models, evals, and the unglamorous infrastructure that keeps them working. 16+ open models on Hugging Face, 10+ publications, production deployments at Comcast, Chili Piper, and Surfer SEO.