cd /news/developer-tools/corpus-scrub-0-1-0-detecta-y-redacta… · home topics developer-tools article
[ARTICLE · art-62928] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

corpus-scrub 0.1.0: detecta y redacta PII y secretos en corpus de entrenamiento antes del entrenamiento LLM

A developer released corpus-scrub 0.1.0, an open-source CLI tool that detects and redacts personally identifiable information (PII) and secrets in training corpora before LLM training. The tool uses spaCy models for named entity recognition and regex patterns for emails, phone numbers, IBANs, and credit card numbers, operating locally without sending data to external services. It also includes a secret detection ruleset audited against gitleaks, with tests ensuring rule accuracy.

read2 min views1 publishedJul 17, 2026

Los modelos memorizan y filtran lo que hay en los datos de entrenamiento.

corpus-scrub

los limpia antes de entrenar: detecta PII (email, teléfono, IBAN, tarjeta, nombres) y secretos (API keys, tokens) y los redacta localmente, sin enviar nada a ningún servicio.

Los corpus raspados de la web contienen rutinariamente datos personales y credenciales. La literatura lo deja claro:

GDPR y el art. 10 de la EU AI Act prohíben datos personales no estructurados en conjuntos de entrenamiento sin consentimiento. La solución barata es limpiar el corpus antes de entrenar.

corpus-scrub

es una CLI local-first (AGPL-3.0-or-later) que escanea JSONL/TXT/Parquet y:

en_core_web_lg

para PERSON) + regex propios para EMAIL / IBAN / CARD / PHONE que no dependen de modelo y funcionan en cualquier idioma.4c232b5

), verificadas regla por regla contra el gitleaks.toml

original en los tests.mask

(<TYPE>

), hash

(sha256 truncado) o drop

.Multi-idioma para nombres (ES/DE/FR) vía modelos spaCy _lg

dedicados, con fallback multilingüe explícito y tests que fallan si el fallback se usa por accidente.

python -m venv .venv && source .venv/bin/activate
pip install -e .

corpus-scrub scan --input corpus.jsonl --policy mask --out redacted.jsonl --report report.json

corpus-scrub scan --input corpus.jsonl --lang en

Los detectores universales (email/teléfono/IBAN/tarjeta) son regex, así que no necesitan modelo y cubren cualquier idioma. El NER de PERSON usa Presidio para EN y spaCy directo para ES/DE/FR.

No todo está garantizado, y está documentado:

_lg

descargados; si faltan, los tests de precisión fallan en vez de pasar silenciosamente contra el fallback.El ruleset de secretos pasó una auditoría regla-por-regla contra la fuente de gitleaks. Se encontró y corrigió una divergencia real: la regla pypi-upload-token

usaba un comodín en vez del prefijo base64 fijo del token real, lo que generaba falsos positivos demostrados. El fix añadió un test que compara cada regla portada contra el gitleaks.toml

embebido como fixture, así que futuras derivas se detectan solas.

Cobertura de tests: 82% (fast suite sin descarga de modelos; slow suite con los _lg

).

Componente Uso
Presidio + spaCy NER PERSON (EN)
spaCy es/de/fr_core_news_lg
NER PERSON multilingüe
regex gitleaks detección de secretos
pytest + CI fast/slow suites, cobertura
git clone https://github.com/amurlaniakea/corpus-scrub
cd corpus-scrub
python -m venv .venv && source .venv/bin/activate
pip install -e .
pytest -m "not slow"   # suite rápida, sin descargas

Repo: https://github.com/amurlaniakea/corpus-scrub

Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez — amurlaniakea@gmail.com

── more in #developer-tools 4 stories · sorted by recency
── more on @corpus-scrub 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/corpus-scrub-0-1-0-d…] indexed:0 read:2min 2026-07-17 ·