Consegna un file a qualcuno che non deve mai vedere i dati personali che contiene — e assicurati che non possa. Quando estrai una fetta di produzione in un CSV perché un fornitore riproduca un bug, o inoltri un lotto di ticket a un team di analisi esternalizzato, i nomi, le email e i numeri di conto non stanno in colonne ordinate. Vivono dentro le righe di log e i corpi dei ticket come testo libero. Puoi pulire un file di testo ora senza account: caricalo, spunta le categorie da togliere e scarica un .txt semplice che puoi confrontare con l'originale.
Dove si nascondono davvero i dati personali
In un foglio di calcolo sai quale colonna contiene l'email. In un log o in un export di ticket no: il cognome del cliente spunta a metà frase, il telefono è incastrato in uno stack trace, il numero di carta l'ha incollato in una nota un operatore di fretta. È questo che rende il testo in blocco così permeabile. Cancellare i valori a mano su migliaia di righe è lento, e una svista è una violazione — quindi il lavoro deve essere meccanico.
Carica il file e scegli tra le categorie che la pipeline sa trovare:
- Nomi di persone, anche a metà riga.
- Email e telefoni, nelle loro forme internazionali comuni.
- Numeri di carta (PAN), riconosciuti dalla struttura e verificati prima della rimozione.
- IBAN e dati bancari, validati dalla loro cifra di controllo integrata.
- Documenti d'identità — DNI, NIF, NIE, CIF e simili — individuati dal loro carattere di controllo.
- Indirizzi postali che legano un record a un luogo.
Tutto ciò che già conosci — un codice interno di pratica, il nome di un progetto, un handle preciso — va in una deny-list e viene rimosso nello stesso passaggio.
Rimozione validata, non un colpo di fortuna
Le categorie che farebbero più male se un valore reale sfuggisse sono proprio quelle che la pipeline si rifiuta di indovinare. Una sequenza di sedici cifre è trattata come carta solo se soddisfa l'algoritmo di Luhn, così una PAN autentica viene rimossa mentre un numero d'ordine della stessa lunghezza resta intatto. Un IBAN viene riscritto solo se il suo resto mod-97 è corretto. I DNI/NIF/NIE/CIF spagnoli sono validati dalla loro lettera di controllo, e i telefoni dal loro schema nazionale. Poiché questi test sono aritmetici, funzionano allo stesso modo qualunque sia la lingua del testo intorno: a un identificatore strutturato non importa se la frase attorno è in tedesco o in portoghese.
Gli ID strutturati viaggiano tra le lingue; i nomi no
Il rilevatore di nomi si appoggia a modelli spagnolo e inglese, quindi i nomi di persona nel testo tedesco, francese e italiano vengono trovati solo in parte. Sii onesto su questo: aggiungi alla deny-list i cognomi che conosci e rileggi quei file. Carte, IBAN, email, telefoni e identificatori con cifra di controllo sono indipendenti dalla lingua e non hanno bisogno di questa riserva.
Modificare a mano contro un passaggio deterministico
- Un trova-e-sostituisci salta la riga scritta in modo diverso
- Ogni revisore toglie un insieme leggermente diverso
- Nessuna traccia di cosa è stato tolto, né dove
- Un solo valore trascurato è una fuga
- Ogni porzione di una categoria scelta è trovata in un passaggio
- Lo stesso input dà lo stesso output, passaggio dopo passaggio
- Cancellare, mascherare con
*o sostituire con<ENTITY>— decidi tu - La lista di audit tiene scostamenti, mai il valore
L'output è un .txt semplice, quindi puoi confrontarlo con la sorgente tramite un diff e constatare tu stesso che ogni porzione rilevata è sparita: rimossa fino a non lasciare nulla, mascherata con una fila di asterischi, o sostituita da un marcatore tipizzato. Lo stile che scegli è applicato allo stesso modo in tutto il file. E la traccia di audit registra solo dove stava una porzione — il suo inizio e la sua fine — mai i caratteri che c'erano, così nemmeno il log stesso può rivelare cosa ha tolto.
La minimizzazione dei dati è il punto legale
L'articolo 5, paragrafo 1, lettera c del GDPR rende vincolante la minimizzazione: i dati personali devono essere limitati a quanto necessario. Un fornitore che fa il debug di una query, o una macchina di staging che esegue una suite di test, non ha bisogno di identità reali — quindi per il principio non dovrebbe riceverle. L'articolo 4, punto 5 traccia la linea che ti interessa davvero: i record pseudonimizzati restano tracciabili, mentre rimuovere del tutto gli identificatori spinge il file verso l'anonimizzazione e fuori da quel rischio. Consegnare un export grezzo a un terzo, o copiare dati vivi in un ambiente non di produzione, è esattamente dove guardano i regolatori. Rimuovere prima la PII è il modo più economico per restare dalla parte giusta di quella linea — e questo strumento elabora testo e restituisce testo: non annota visivamente un PDF, non sfoca un volto e non emette un bip su un file audio, che sono lavori distinti con strumenti propri.
Pulisci un file ora
Carica il .txt, .docx o PDF, scegli le categorie e lo stile di riscrittura, conferma il prezzo e scarica la copia pulita. Il rilevamento trova le porzioni; il codice deterministico le riscrive, quindi il risultato è identico a ogni passaggio. Senza account, paghi solo per quello che pulisci.
Quando ti serve
Un ingegnere deve consegnare un file a qualcuno che non dovrebbe mai vedere i dati personali che contiene. Può essere un export della base dati di produzione estratto in un CSV perché un fornitore riproduca un bug, un lotto di ticket di supporto diretto a un team di analisi esternalizzato, o una fetta di log applicativi che diventerà fixture di test per un ambiente di staging. Il file è testo libero, quindi i nomi dei clienti, le email, i telefoni, i numeri di documento, gli IBAN e qualche numero di carta non stanno in colonne etichettate: sono sparsi tra le righe di log e i corpi dei ticket. Cancellarli a mano su migliaia di righe è soggetto a errori, e un valore mancato è una fuga. Carica il file, scegli le categorie da rimuovere, e ogni porzione che è un nome, un'email, un telefono, una carta, un IBAN o un documento viene individuata e riscritta in modo deterministico, così il .txt che consegni conserva la struttura e nessuna delle persone.
L'aspetto della conformità
L'articolo 5, paragrafo 1, lettera c del GDPR rende la minimizzazione dei dati un principio vincolante: i dati personali devono essere limitati a quanto necessario, e un fornitore che fa il debug di una query o una macchina di staging che esegue test non ha bisogno di identità reali. L'articolo 4, punto 5 traccia la linea che ti interessa davvero: la pseudonimizzazione consente ancora di ricollegare un record a una persona, mentre rimuovere del tutto gli identificatori porta il file verso l'anonimizzazione e fuori da quel rischio. Condividere un export grezzo con un terzo o copiare dati vivi in un ambiente non di produzione è esattamente dove guardano i regolatori; rimuovere prima la PII è il modo più economico per restare dalla parte giusta di quella linea.
Ciò che puoi verificare
Il risultato è un .txt semplice che puoi confrontare con la sorgente tramite un diff. Ogni porzione rilevata è sparita: rimossa fino a non lasciare nulla, mascherata con una fila di asterischi, o sostituita da un marcatore tipizzato come <PERSON> o <IBAN_CODE> — a tua scelta, applicato allo stesso modo a ogni passaggio. Le categorie rischiose sono validate, non indovinate: una stringa di sedici cifre viene rimossa solo se supera il controllo di Luhn, un IBAN solo se la sua cifra di controllo mod-97 torna, così i veri numeri di carta se ne vanno e un numero d'ordine qualsiasi resta. La lista di audit conserva solo scostamenti di carattere — inizio e fine — mai il valore che stava lì.
Domande frequenti
- Quali tipi di file posso caricare, e cosa ricevo in cambio?
- Carica un `.txt` di testo semplice, un `.docx` di Word o un PDF. Il testo viene estratto, le categorie che hai scelto vengono individuate e riscritte, e ricevi un `.txt` pulito che puoi confrontare con la sorgente tramite un diff. È un lavoro file-in, file-out: un unico file di testo per l'intero lotto di righe, non un modulo per record.
- Che differenza c'è tra rimuovere, mascherare con asterischi e sostituire con <ENTITY>?
- Rimuovere cancella la porzione e non lascia nulla dove stava il valore. Mascherare mantiene la lunghezza scrivendoci sopra una fila di asterischi. Sostituire inserisce un marcatore tipizzato come `<PERSON>` o `<IBAN_CODE>`, che tiene la riga leggibile e mostra a chi revisiona che tipo di valore c'era. Scegli uno stile e viene applicato allo stesso modo a ogni porzione rilevata del file.
- Riconosce in modo affidabile numeri di carta, IBAN e documenti — o segnala cifre a caso?
- Le categorie rischiose sono validate, non indovinate. Una stringa di sedici cifre viene trattata come carta solo se supera l'algoritmo di Luhn, così una vera PAN se ne va e un numero d'ordine della stessa lunghezza resta. Un IBAN viene rimosso solo se la sua cifra di controllo mod-97 torna, e i telefoni sono riconosciuti dal loro schema nazionale. Poiché sono controlli aritmetici, si comportano allo stesso modo qualunque sia la lingua intorno.
- Funziona su testo tedesco, francese o italiano, o solo su inglese e spagnolo?
- Gli identificatori strutturati — carte, IBAN, email, telefoni, documenti con cifra di controllo — sono indipendenti dalla lingua e funzionano ovunque. I nomi di persona sono diversi: il modello dei nomi si appoggia a spagnolo e inglese, quindi i nomi nel testo tedesco, francese e italiano vengono rilevati solo in parte. Per quei file aggiungi alla deny-list i cognomi che conosci e rileggi l'output.
- Una volta rimosso un valore, si può recuperare il testo originale dal file di output?
- No. I caratteri rilevati vengono riscritti fuori dal file stesso — cancellati, mascherati o sostituiti — e viene scritto un `.txt` nuovo. Non c'è un livello nascosto sotto né metadati che conservano il testo precedente. La lista di audit tiene solo scostamenti di carattere, l'inizio e la fine di ogni porzione, mai il valore che c'era, così nulla nell'output può essere riportato all'originale.