La mayoría de las comparativas de detección de datos personales hacen la pregunta equivocada. Cuentan cuántas detecciones señaló un sistema y tratan esa cifra como calidad.
No lo es. Una canalización que señala cada URL, cada mención de país, cada nombre de departamento produce más de 70 falsos positivos que el revisor tiene que descartar a mano en un contrato típico.
La métrica correcta es las regiones que el revisor conservaría frente a las regiones que el revisor descartaría.
Montamos una comparativa reproducible frente a Microsoft Presidio sobre 14 documentos PDF en 7 idiomas europeos (en, fr, de, es, it, nl, pt) — dos documentos por idioma: un contrato y un estado financiero. El script y los documentos son públicos:{" "} github.com/promptshield-Inc/pii-detection-benchmarks .
Las cifras principales
Sobre los 14 documentos en conjunto:
A primera vista, eso es promptShield encontrando un ~62 % menos de detecciones. La lectura ingenua: Presidio encuentra más, así que es mejor.
Pero esa lectura se derrumba en cuanto se separa por clase de documento.
La separación que importa: contratos frente a estados financieros
En los contratos — donde los datos son datos personales reales sobre las partes contratantes — ambos sistemas emiten más o menos el mismo conjunto de regiones.
Las 209 detecciones de alta señal de promptShield a lo largo de los 7 contratos de nuestro corpus coinciden una a una con las capturas de Presidio en las entidades que de verdad importan: nombres, direcciones, teléfonos, correos electrónicos, identificadores de empresa.
En los estados financieros, la diferencia se dispara. El documento francés etats-financiers_beaumont por sí solo: Presidio emite 69 detecciones de tipo LOCATION, de las cuales 73 son menciones de Francia, París o nombres de país o ciudad que aparecen en prosa jurisdiccional (domicilio social, ley aplicable, dirección de la firma de auditoría).
promptShield emite 22 regiones — cada una de las cuales es una entidad real.
Las 414 detecciones de diferencia entre ambos sistemas no son capacidad. Es ruido que la instalación por defecto de Presidio emite y promptShield filtra.
Lo que filtramos y que Presidio no
Tras construir la comparativa, encontramos seis categorías limpias de ruido en las que Presidio por defecto + los modelos pequeños de spaCy sobredetectan.
1. URL en los accesorios del documento
El UrlRecognizer de Presidio señala cada URL — enlace a la política de privacidad en el pie de página, URL de la página de soporte, formulario de contacto. Unas 8-10 detecciones por contrato que ningún revisor quiere ocultar.
2. Menciones de país en cláusulas jurisdiccionales
«Este Acuerdo se rige por las leyes de Francia» — Presidio señala Francia como LOCATION. Francia en esa frase es accesorio del contrato, no un dato personal sobre el interesado. Construimos un filter_jurisdiction_boilerplate multilingüe que detecta más de 60 expresiones jurisdiccionales en 7 idiomas y descarta cualquier detección LOCATION/ORG que caiga dentro de la ventana coincidente.
3. Fragmentos de PERSON
Los modelos de detección de entidades de spaCy y de transformadores emiten de forma rutinaria a la misma persona como detecciones que se solapan: Pierre, Dubois y Pierre Dubois se convierten todos en entidades PERSON separadas. En nuestro contrato italiano: Presidio emite 26 detecciones PERSON para 10 partes nombradas distintas. El filter_span_coalescence de promptShield descarta las detecciones contenidas y conserva la forma más larga por página.
4. Sustantivos genéricos como ORG
Marketing, Vorstand, Direction Générale, Board of Directors, Comitato di Direzione — la detección de entidades de Presidio los etiqueta como ORG. No son organizaciones que el revisor quiera ocultar. Entregamos una lista de palabras vacías por idioma, de 60 a 90 entradas (generic_orgs_<lang>.txt), que las filtra.
5. Títulos de cargo etiquetados como PERSON
Los sustantivos de cargo en mayúscula al principio de línea (CEO, Directeur, Geschäftsführer) a veces los etiquetan por error como PERSON los modelos de transformadores o spaCy. Un conjunto de palabras vacías multilingüe de 50 entradas y un único filtro los descartan.
6. País o ciudad aislados en contexto no personal
París mencionado como la dirección de la firma de auditoría en el pie de página del contrato no es un dato personal sobre el interesado — la misma palabra en «nacido en París» sí lo es. Examinamos la ventana de 40 caracteres anterior a cada detección LOCATION en busca de expresiones de contexto personal (born in, resident of, née à, geboren in, etc.) y descartamos las aisladas.
Las salvedades honestas
No afirmamos que nuestra canalización sea universalmente mejor. Las salvedades:
- Solo instalación por defecto. Una instalación de Presidio bien ajustada (reconocedores personalizados, motor de entidades de transformadores, umbrales de confianza ajustados) cerraría la mayor parte de la diferencia de precisión. Medimos lo que la mayoría de los usuarios de Presidio despliega en realidad durante el primer mes — no lo que un experto en Presidio podría conseguir.
- Sin etiquetas de verdad terreno. La métrica «both / ours-only / presidio-only» es un indicador de precisión, no una medición estricta de F1. Etiquetar a mano 14 PDF en 7 idiomas son unas 40 horas de trabajo concentrado de un hablante nativo; aún no lo hemos hecho. Las PR son bienvenidas.
- Dos clases de documento. Contratos + estados financieros. Los historiales clínicos, los formularios de recursos humanos o el papeleo de inmigración producirían diferencias distintas — probablemente menores, porque esos documentos tienen una señal de datos personales más rica.
- Corpus sintético. Los documentos reales de clientes tienen errores de OCR, maquetaciones a varias columnas y anexos financieros cargados de tablas que aquí no medimos.
Cuándo usar Presidio en su lugar
Presidio es un gran conjunto de herramientas. Es la elección correcta cuando:
- está construyendo una canalización DLP personalizada en Python y quiere control a nivel de biblioteca,
- necesita integrar Azure AI Language o AWS Comprehend bajo una sola abstracción de datos personales, o
- está procesando flujos de texto (no documentos acotados).
La comparativa de arriba trata específicamente del comportamiento por defecto sobre documentos PDF acotados, que es lo que la anonimización de documentos de escritorio significa en realidad en la práctica.
Presidio nos inspiró. No pretendemos reemplazarlo.
Afirmamos que, para la forma concreta de trabajo que promptShield hace — anonimización de escritorio de contratos, estados financieros, historiales clínicos, documentos de recursos humanos — nuestra canalización produce un resultado que requiere menos trabajo de revisión, con evidencia verificable.
Ejecute la comparativa
Todo el sentido de este artículo es el justificante:
{`git clone https://github.com/promptshield-Inc/pii-detection-benchmarks
cd pii-detection-benchmarks
pip install -r requirements.txt
python benchmark.py`}
El script de Presidio es totalmente autónomo — no necesita tener promptShield instalado para verificar el lado de Presidio. Los CSV publicados en results/ son las cifras que citamos arriba.
Si encuentra un problema de metodología, abra una incidencia o una PR.