Oculte nomes, e-mails e telefones antes de colar texto em uma ferramenta de IA
Remova ou substitua dados pessoais evidentes antes de enviar texto a um assistente de chat com IA e revise tanto o texto mascarado quanto o relatório de detecção para encontrar o que foi deixado para trás. Este tutorial usa um pequeno exemplo sintético e mantém o arquivo original inalterado.
Conteúdo verificado 2026.09.21Inclui arquivos de exemplo
Ver o sumário
A tradução foi feita com IA. Confira o código, as unidades e os valores junto com o original. A revisão por falantes nativos de cada idioma ainda não foi concluída. English
Para quem éPara quem quer fazer uma verificação prática antes de enviar a uma IA textos de trabalho que possam conter nomes, endereços de e-mail ou números de telefone.
Preparação
Python 3.12
Um editor de texto e um assistente de chat com IA
01Comece com uma pequena mensagem sintética
Este exemplo é totalmente sintético. Os nomes, endereços de e-mail, números de telefone, informações de empresa e o conteúdo da mensagem foram inventados para o tutorial. O objetivo é praticar a remoção de dados pessoais evidentes antes de o texto sair do seu ambiente local.
Salve o texto a seguir como message.txt. Ele contém dois nomes, dois endereços de e-mail, dois números de telefone e uma referência deliberadamente ambígua que uma regra simples de mascaramento não detectará.
text
Project review notes
Alice Kim asked us to send the revised table to alice.kim@example.com.
If the file is delayed, call Alice at 010-1234-5678.
Bob Lee will review the second draft. His email is bob.lee@example.com and his office number is 02-345-6789.
The final approval should also be checked with A. Kim before Friday.
02Peça à IA um plano de mascaramento, não o texto sensível
Você pode perguntar a um assistente de IA como projetar regras de mascaramento sem enviar o documento sensível real. Descreva as categorias e use exemplos inventados.
Uma resposta útil deve distinguir identificadores estruturados de linguagem não estruturada. Endereços de e-mail e números de telefone costumam apresentar padrões reconhecíveis. Nomes de pessoas são mais difíceis: palavras comuns podem ser nomes, podem aparecer iniciais ou diferentes sistemas de escrita, e a mesma pessoa pode ser mencionada de várias formas.
03Transforme a resposta da IA em regras explícitas de mascaramento
Para este exemplo sintético, use uma pequena lista aprovada para nomes e expressões regulares para e-mails e telefones. Essa abordagem é intencionalmente mais restrita do que um detector geral de dados pessoais.
Tipo de dado
Regra
Marcador
Nome completo
Substituir apenas os nomes exatos aprovados Alice Kim e Bob Lee
[NAME_1], [NAME_2]
E-mail
Detectar padrões comuns com parte local, @ e domínio
[EMAIL_1], [EMAIL_2]
Telefone
Detectar os dois formatos de telefone presentes neste exemplo
[PHONE_1], [PHONE_2]
Outro texto
Manter inalterado para revisão manual
Sem substituição automática
Marcadores consistentes ajudam a manter compreensíveis as referências repetidas sem preservar o identificador original. O script abaixo atribui o mesmo marcador às ocorrências repetidas do mesmo valor detectado.
04Aplique as regras a uma cópia local
O script Python a seguir lê message.txt, aplica as regras aprovadas e grava os resultados em uma nova pasta outputs. Ele também cria um relatório replacements.csv com cada valor original detectado e seu marcador. O script para se outputs já existir e nunca sobrescreve message.txt.
python
import csv
import re
import sys
from pathlib import Path
INPUT = Path("message.txt")
OUTPUT_DIR = Path("outputs")
MASKED_FILE = OUTPUT_DIR / "message_masked.txt"
REPORT_FILE = OUTPUT_DIR / "replacements.csv"
KNOWN_NAMES = ["Alice Kim", "Bob Lee"]
EMAIL_RE = re.compile(
r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
)
PHONE_RE = re.compile(
r"(?<!\d)(?:010-\d{4}-\d{4}|02-\d{3}-\d{4})(?!\d)"
)
def make_replacer(kind, mapping, rows):
def replace(match):
original = match.group(0)
if original not in mapping:
placeholder = f"[{kind}_{len(mapping) + 1}]"
mapping[original] = placeholder
rows.append(
{
"type": kind,
"original": original,
"replacement": placeholder,
}
)
return mapping[original]
return replace
def mask_known_names(text, mapping, rows):
for name in KNOWN_NAMES:
if name not in text:
continue
if name not in mapping:
placeholder = f"[NAME_{len(mapping) + 1}]"
mapping[name] = placeholder
rows.append(
{
"type": "NAME",
"original": name,
"replacement": placeholder,
}
)
text = text.replace(name, mapping[name])
return text
def main():
if not INPUT.is_file():
sys.exit(f"Input file not found: {INPUT}")
if OUTPUT_DIR.exists():
sys.exit(f"Stop: {OUTPUT_DIR} already exists. Review or rename it first.")
original = INPUT.read_text(encoding="utf-8")
rows = []
name_map = {}
email_map = {}
phone_map = {}
masked = mask_known_names(original, name_map, rows)
masked = EMAIL_RE.sub(make_replacer("EMAIL", email_map, rows), masked)
masked = PHONE_RE.sub(make_replacer("PHONE", phone_map, rows), masked)
OUTPUT_DIR.mkdir()
MASKED_FILE.write_text(masked, encoding="utf-8")
with REPORT_FILE.open("x", encoding="utf-8", newline="") as target:
writer = csv.DictWriter(
target,
fieldnames=["type", "original", "replacement"],
)
writer.writeheader()
writer.writerows(rows)
print(f"Unique names masked: {len(name_map)}")
print(f"Unique emails masked: {len(email_map)}")
print(f"Unique phones masked: {len(phone_map)}")
print(f"Masked copy: {MASKED_FILE}")
print(f"Replacement report: {REPORT_FILE}")
if __name__ == "__main__":
main()
Coloque mask_personal_data.py ao lado de message.txt e execute python mask_personal_data.py. Para este exemplo exato, o resultado esperado é o mascaramento de 2 nomes únicos, 2 e-mails únicos e 2 telefones únicos.
05Compare as substituições com o texto original
Calcule manualmente as substituições esperadas antes de confiar no resultado. O script deve registrar seis valores únicos detectados.
Tipo
Original
Substituição
NAME
Alice Kim
[NAME_1]
NAME
Bob Lee
[NAME_2]
EMAIL
alice.kim@example.com
[EMAIL_1]
EMAIL
bob.lee@example.com
[EMAIL_2]
PHONE
010-1234-5678
[PHONE_1]
PHONE
02-345-6789
[PHONE_2]
Alice Kim aparece duas vezes no texto original, mas deve usar [NAME_1] nas duas ocorrências. O relatório contém valores únicos detectados, e não uma linha para cada ocorrência.
06Revise o que as regras automáticas não detectaram
A substituição automática é apenas a primeira etapa. Abra outputs/message_masked.txt e leia todo o resultado antes de colá-lo em qualquer lugar. Neste exemplo, o último parágrafo ainda contém A. Kim. O script não consegue saber, com base apenas na lista aprovada, que essa referência pode corresponder a Alice Kim.
Pesquise por @ no arquivo mascarado e confirme que nenhum endereço de e-mail permanece.
Pesquise por 010- e 02- e confirme que os dois formatos de telefone esperados desapareceram.
Pesquise por Alice Kim e Bob Lee e confirme que os nomes completos aprovados não aparecem mais.
Leia cada linha manualmente procurando iniciais, apelidos, assinaturas, endereços, identificadores de funcionário, números de conta, identificadores específicos do projeto ou outros contextos identificáveis.
Observe que A. Kim permanece. Decida manualmente se isso identifica uma pessoa no documento real e masque a referência se necessário.
Compare replacements.csv com o texto original e confirme que cada substituição corresponde ao trecho pretendido.
07Erros comuns e limites
Não cole o texto sensível original em uma ferramenta de IA apenas para perguntar o que deve ser mascarado.
Não suponha que uma expressão regular consegue identificar com segurança qualquer nome de pessoa.
Não dependa de um único padrão de telefone se a fonte puder conter espaços, códigos internacionais, ramais, parênteses ou outros formatos.
Não exclua o relatório de correspondências antes de terminar a revisão do texto mascarado, mas proteja esse relatório porque ele contém os identificadores originais.
Não sobrescreva o arquivo de origem. Mantenha o original separado da cópia mascarada.
Não suponha que mascarar três categorias remova informações empresariais confidenciais, credenciais, dados financeiros, informações de saúde ou outros conteúdos sensíveis.
Em fluxos de trabalho reais, defina o que deve ser removido com base no documento, na política aplicável e no objetivo da tarefa com IA. Quando possível, forneça apenas o mínimo de texto necessário para a tarefa em vez de mascarar um documento grande e enviá-lo por completo.
Registro de execução e verificação
2026-09-21 · hand-checked example · Python 3.12
Revisei manualmente o texto sintético original e as substituições esperadas.
O conjunto esperado contém 2 nomes completos únicos, 2 endereços de e-mail únicos e 2 números de telefone únicos.
Alice Kim aparece duas vezes, mas deve ser mapeada de forma consistente para [NAME_1].
A referência abreviada A. Kim deve permanecer sem mascaramento e demonstra um falso negativo.
O script lê message.txt e grava apenas outputs/message_masked.txt e outputs/replacements.csv.
O script para se outputs já existir, em vez de substituir uma revisão anterior.
Limites da verificação
Não executei o código Python; o pequeno exemplo e os resultados esperados foram verificados manualmente.
A detecção de nomes completos usa uma lista explícita de dois nomes e não é um sistema geral de reconhecimento de entidades.
A expressão regular de e-mail cobre formatos comuns de endereços, mas não pretende implementar toda a sintaxe válida de e-mail.
A expressão regular de telefone cobre apenas os dois formatos usados neste exemplo sintético.
Mascarar identificadores evidentes não garante anonimização nem conformidade com uma lei específica de privacidade ou política organizacional.
Transforme “automatize isso” em uma descrição de tarefa executável. Anexe uma amostra sintética sem dados sensíveis e um resultado esperado verificado manualmente para completar uma solicitação de script que totaliza registros de trabalho por equipe.
Verifique uma função de agregação com quatro linhas que você pode calcular manualmente e 12 unit tests. Verifique não apenas valores normais, mas também entrada vazia, zero, decimais e entrada inválida.
Separe um resumo plausível em fatos, cálculos e interpretações. Recalcule proporções e médias a partir de dados mensais sintéticos e reescreva frases com fontes ausentes ou causas exageradas como afirmações que possam ser verificadas.
Trate uma regex gerada por IA como um rascunho, não como uma regra final. Monte uma pequena tabela de testes sintéticos, compare os resultados esperados com as correspondências reais, revise o padrão e salve um relatório de revisão antes de usá-lo em dados reais.