Caracteres invisíveis em texto copiado
Já lhe aconteceu? O texto parece impecável no ecrã e, mesmo assim, algo não bate certo. A pesquisa não encontra uma palavra que está mesmo ali à frente. Uma ligação leva a uma página de erro. Um excerto de código recusa-se a correr. Muitas vezes a culpa é de um carácter que não se vê.
Que caracteres são estes
Um texto é uma fila de pontos de código, e nem todos desenham alguma coisa. Os suspeitos do costume:
- Caracteres de largura zero (U+200B espaço de largura zero, U+200C e U+200D ligadores, U+FEFF marca de ordem de bytes). No ecrã não ocupam lugar nenhum.
- Marcas de direção do texto (U+202A a U+202E e parecidas). Dizem em que sentido se escreve, o que faz sentido para árabe ou hebraico e nenhum num parágrafo em português.
- Hífen suave (U+00AD). Assinala onde a palavra pode ser cortada, e só se nota quando a linha quebra.
- Espaços esquisitos: o espaço não separável e toda uma família de espaços estreitos, largos e finos que se parecem com um espaço normal, mas não são.
- Pontuação tipográfica: aspas curvas, travessão longo, reticências num só carácter, marcadores e setas.
Este último grupo vê-se, mas é outro carácter, diferente do que está no teclado, e os programas muitas vezes tratam-no de maneira diferente.
De onde vêm
Quase sempre da simples cópia:
- janelas de conversa e páginas web, cuja paginação põe hífenes suaves ou espaços de largura zero para controlar a quebra das linhas;
- processadores de texto, que trocam as aspas e os hífenes simples por versões "inteligentes" à medida que escreve;
- tradutores e extração de texto de PDF, que podem meter espaços estranhos ou partir palavras;
- documentos que passaram por vários programas, cada um com os seus hábitos.
Ninguém fez nada de mal, é assim que o texto viaja. E não dizemos que este ou aquele serviço mete caracteres invisíveis de propósito nas respostas: não temos dados que o permitam afirmar.
Porque dão problemas a sério
- A pesquisa falha. Uma palavra com um carácter escondido lá dentro passa a ser outra sequência. "Contrato" e "con[largura zero]trato" não coincidem.
- As comparações enganam. Duas linhas que à vista são iguais aparecem como diferentes.
- Código e endereços deixam de funcionar. Basta uma aspa curva num comando ou um espaço de largura zero numa ligação para tudo parar, e a mensagem de erro quase nunca explica porquê.
- Os verificadores de plágio perdem-se. Caracteres escondidos e espaços trocados mudam a divisão em palavras, e podem falhar coincidências ou apontá-las mal.
- A paginação estraga-se. Folgas esquisitas, linhas que não quebram ou quebram onde não devem.
Como encontrar e limpar
O AuthorText trata disto de duas maneiras.
A primeira é a verificação. Destaca no texto os caracteres que parecem marcas de água e a tipografia, para ver onde estão em vez de adivinhar. O detetor conhece 259 destes pontos de código: caracteres de largura zero, hífen suave, operadores invisíveis, marcas de direção, seletores de variação, caracteres de etiqueta, caracteres de uso privado e mais alguns.
A segunda é a ferramenta "Limpar e normalizar". Tira estes caracteres e reduz a pontuação tipográfica a ASCII simples: aspas retas, hífen simples, três pontos. Antes de usar o resultado, compare-o com o original.
Um roteiro rápido:
- Cole o texto na verificação e veja os sítios destacados.
- Decida se quer normalizar tudo (para código, endereços e dados, em regra sim) ou só uma parte.
- Limpe e compare.
Um aviso: num texto literário, o travessão longo pode ser uma escolha deliberada. Normalizar convém aos textos técnicos e, na prosa, fica ao seu critério.
Outra coisa: as marcas de água estatísticas
"Marca de água" tem um segundo sentido, e convém não os misturar. Há investigadores que propuseram marcar os modelos de linguagem ao nível dos tokens: durante a geração, o modelo é empurrado de leve para certas palavras, segundo um padrão que depois pode ser testado por quem tem a chave.
Uma marca destas não é feita de caracteres. Não há nenhum ponto de código escondido no texto. Está na escolha das palavras, e por isso um limpador de caracteres não a encontra nem a tira. O AuthorText também não diz que a deteta: a nossa análise olha para o estilo, não para uma chave secreta. Caracteres invisíveis e marcas de água estatísticas são dois assuntos separados, e o primeiro não diz nada sobre o segundo.
Mais um ponto. Um texto com caracteres escondidos não é por isso de IA, e um texto sem eles não é por isso humano. Mostram como o texto foi copiado, não quem o escreveu.
O que fazer
Antes de publicar, entregar ou executar um texto copiado, dê-lhe uma olhadela. Verifique o texto para ver caracteres escondidos e tipografia, e use "Limpar e normalizar" quando precisar de ASCII simples. Se desconfia do texto por outras razões, o nosso pequeno guia dos sinais de texto de IA explica o que mais observar e porque nada disso é prova.