Uso de IA no trabalho

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.

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 dadoRegraMarcador
Nome completoSubstituir apenas os nomes exatos aprovados Alice Kim e Bob Lee[NAME_1], [NAME_2]
E-mailDetectar padrões comuns com parte local, @ e domínio[EMAIL_1], [EMAIL_2]
TelefoneDetectar os dois formatos de telefone presentes neste exemplo[PHONE_1], [PHONE_2]
Outro textoManter inalterado para revisão manualSem 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.

TipoOriginalSubstituição
NAMEAlice Kim[NAME_1]
NAMEBob Lee[NAME_2]
EMAILalice.kim@example.com[EMAIL_1]
EMAILbob.lee@example.com[EMAIL_2]
PHONE010-1234-5678[PHONE_1]
PHONE02-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.

  1. Pesquise por @ no arquivo mascarado e confirme que nenhum endereço de e-mail permanece.
  2. Pesquise por 010- e 02- e confirme que os dois formatos de telefone esperados desapareceram.
  3. Pesquise por Alice Kim e Bob Lee e confirme que os nomes completos aprovados não aparecem mais.
  4. 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.
  5. Observe que A. Kim permanece. Decida manualmente se isso identifica uma pessoa no documento real e masque a referência se necessário.
  6. 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.

Princípios de redação e verificação de todo o site

Fontes de referência

As explicações e os exemplos são de elaboração própria. Os comportamentos e conceitos relacionados podem ser consultados nas fontes oficiais abaixo.