Como medimos a IA do Anonimatum em 10 idiomas: corpus, recall e precisão

Uma ferramenta de anonimização avalia-se pelo que lhe escapa. Por isso, sempre que a IA do Anonimatum muda, testamo-la com um corpus de 6.123 documentos em 10 idiomas (espanhol, catalão, galego, basco, inglês, francês, alemão, italiano, português e romeno) e comparamos o que deteta com o que deveria detetar. Este artigo explica o que há nesse corpus, como medimos e quais são os números de hoje, incluindo os que ainda não nos agradam.
O que há no corpus de testes
O corpus mistura dois tipos de documentos. Os reais (4.805) são, na sua grande maioria, publicações de organismos públicos com licença de reutilização: diários e boletins oficiais, acórdãos e despachos de tribunais, deliberações de autoridades de proteção de dados e de acesso à informação, atas, convénios e legislação da União Europeia. Os sintéticos (1.318) são gerados com dados inventados para cobrir o que aparece pouco nos reais: recibos de vencimento, faturas, contratos, relatórios médicos, formulários, e-mails, folhas de cálculo e ficheiros Word ou OpenDocument com paginações complexas. Entre eles há faturas em todas as formas: PDF com texto, digitalizadas, fotografadas com o telemóvel, em Word e Excel, anexas a um e-mail e faturas eletrónicas em XML.
1.272 documentos são digitalizações: antes de procurar dados pessoais passam por OCR com o modelo do idioma do documento. Incluem páginas tortas ou rodadas, carimbos, manchas, faxes, fotografias tiradas com o telemóvel e texto manuscrito, porque é aí que a anonimização falha na prática (falamos disso em os riscos do OCR em documentos digitalizados).
| Idioma | Documentos | Digitalizados | Tipos de documento | Reais | Sintéticos | Revistos à mão |
|---|---|---|---|---|---|---|
| Espanhol | 645 | 114 | 43 | 515 | 130 | 84 |
| Catalão | 615 | 143 | 38 | 485 | 130 | 72 |
| Galego | 573 | 101 | 35 | 443 | 130 | 71 |
| Basco | 575 | 112 | 52 | 445 | 130 | 53 |
| Inglês | 627 | 110 | 41 | 491 | 136 | 56 |
| Francês | 637 | 208 | 39 | 501 | 136 | 62 |
| Alemão | 666 | 107 | 39 | 530 | 136 | 61 |
| Italiano | 635 | 103 | 45 | 499 | 136 | 55 |
| Português | 580 | 98 | 34 | 444 | 136 | 57 |
| Romeno | 570 | 176 | 54 | 452 | 118 | 32 |
| Total | 6.123 | 1.272 | — | 4.805 | 1.318 | 603 |
Como medimos: recall e precisão
- Recall (exaustividade): de todos os dados pessoais de um documento, que parte a IA deteta. Um recall de 0,95 significa que escapam 5 em cada 100. É a métrica que mais importa na anonimização: o que não é detetado é publicado.
- Precisão: de tudo o que a IA marca, que parte é realmente um dado pessoal. Uma precisão baixa não deixa escapar dados, mas obriga a retirar marcas a mais na revisão.
- Identificadores estruturados (números de identificação civil e fiscal, IBAN…): têm de ser detetados todos nos documentos com camada de texto; nas digitalizações tolera-se que o OCR leia mal algum algarismo.
Revistos à mão ou com anotação automática
Para medir o recall é preciso saber que dados pessoais contém cada documento. Nos sintéticos sabemos, porque os inventámos. Nos reais há dois níveis:
Documentos reais revistos à mão (603)
Uma pessoa marca tudo o que seria preciso anonimizar: nomes, moradas, telefones, identificadores e empresas. É a medida mais fiável e a que exigimos: pelo menos 20 documentos por idioma e um recall mínimo de 0,95 (0,92 no basco, por agora).
Documentos reais com anotação automática (4.182)
Só estão marcados os nomes indicados nos metadados da própria publicação, como os juízes de um coletivo ou o relator. Não é uma anotação completa, mas cobre milhares de documentos e aponta aos casos difíceis: assinaturas em digitalizações e nomes soltos sem contexto.
Por isso damos dois valores de recall nos reais: o dos revistos à mão, que melhor reflete um documento completo, e o de todos os reais (à mão mais anotação automática), mais exigente porque concentra nomes precisamente onde é mais fácil falhar. A precisão mede-se nos sintéticos e nos revistos à mão, que têm tudo marcado.
Resultados por idioma
Números da execução n.º 18 dos testes da IA, de 21 de outubro de 2026. A precisão está entre 0,966 e 0,993 em todos os idiomas.
- Reais revistos à mão
- Todos os reais (à mão + automática)
- Espanhol
- Reais revistos à mão: 0,985Todos os reais (à mão + automática): 0,916
- Catalão
- Reais revistos à mão: 0,957Todos os reais (à mão + automática): 0,920
- Galego
- Reais revistos à mão: 0,956Todos os reais (à mão + automática): 0,944
- Basco
- Reais revistos à mão: 0,921Todos os reais (à mão + automática): 0,975
- Inglês
- Reais revistos à mão: 0,981Todos os reais (à mão + automática): 0,925
- Francês
- Reais revistos à mão: 0,981Todos os reais (à mão + automática): 0,960
- Alemão
- Reais revistos à mão: 0,987Todos os reais (à mão + automática): 0,985
- Italiano
- Reais revistos à mão: 1,000Todos os reais (à mão + automática): 0,899
- Português
- Reais revistos à mão: 0,994Todos os reais (à mão + automática): 0,870
- Romeno
- Reais revistos à mão: 0,974Todos os reais (à mão + automática): 0,855
| Idioma | Recall sintéticos | Recall revistos à mão | Recall todos os reais | Precisão |
|---|---|---|---|---|
| Espanhol | 0,982 | 0,985 | 0,916 | 0,966 |
| Catalão | 0,974 | 0,957 | 0,920 | 0,974 |
| Galego | 0,977 | 0,956 | 0,944 | 0,989 |
| Basco | 0,966 | 0,921 | 0,975 | 0,985 |
| Inglês | 0,987 | 0,981 | 0,925 | 0,984 |
| Francês | 0,978 | 0,981 | 0,960 | 0,991 |
| Alemão | 0,986 | 0,987 | 0,985 | 0,992 |
| Italiano | 0,979 | 1,000 | 0,899 | 0,990 |
| Português | 0,986 | 0,994 | 0,870 | 0,989 |
| Romeno | 0,963 | 0,974 | 0,855 | 0,993 |
Nos reais revistos à mão, 9 dos 10 idiomas chegam a 0,95 ou mais; o valor mais baixo é 0,921 (basco). Em todos os reais, os valores mais baixos são 0,855 (romeno), 0,870 (português) e 0,899 (italiano). Nos sintéticos, que reúnem os casos mais difíceis do corpus (digitalizações manuscritas, faxes, manchas, páginas rodadas), o valor mais baixo é 0,963 (romeno).
O que mudou em outubro de 2026
Antes das melhorias deste mês os números eram bastante piores. Nos idiomas da Península Ibérica comparamos o recall nos reais revistos à mão; nos restantes, o de todos os reais, que era onde estava o problema.
- Antes das melhorias
- Agora
- Espanhol
- Antes das melhorias: 0,921Agora: 0,985
- Catalão
- Antes das melhorias: 0,814Agora: 0,957
- Galego
- Antes das melhorias: 0,895Agora: 0,956
- Basco
- Antes das melhorias: 0,597Agora: 0,921
- Antes das melhorias
- Agora
- Inglês
- Antes das melhorias: 0,832Agora: 0,925
- Francês
- Antes das melhorias: 0,809Agora: 0,960
- Alemão
- Antes das melhorias: 0,745Agora: 0,985
- Italiano
- Antes das melhorias: 0,846Agora: 0,899
- Português
- Antes das melhorias: 0,769Agora: 0,870
- Romeno
- Antes das melhorias: 0,412Agora: 0,855
- Basco (0,597 → 0,921): moradas com o tipo de via depois do nome da rua («kalea», «hiribidea», «solairua»), assinaturas em maiúsculas, formas de tratamento como «andrea» e «jauna», e formas jurídicas como «S. Koop.» ou «Fundazioa».
- Francês, alemão, italiano, português, inglês e romeno (o romeno, de 0,412 para 0,855): formas de tratamento antes do nome, composição dos tribunais, listas de nomes, o codice fiscale italiano, moradas e formas jurídicas de cada país.
- Sem retrocessos: cada melhoria é testada com o corpus completo, por isso o que um idioma ganha não pode fazer outro perder.
O que falta melhorar
O que escapa hoje concentra-se em dois casos, visíveis sobretudo no valor de todos os reais:
- Nomes mal lidos pelo OCR. Numa digitalização, um nome pode sair colado à palavra seguinte, partido com hífen no fim da linha ou com letras trocadas. Se o OCR não o lê como nome, a IA não o reconhece.
- Nomes soltos sem contexto. Um apelido pouco comum numa lista, sem forma de tratamento, cargo ou verbo à volta, é difícil de distinguir de uma palavra qualquer. É o que mais separa os dois valores nos idiomas com o recall mais baixo em todos os reais.
- No basco, juntam-se apelidos partidos com a declinação colada e nomes estrangeiros. O seu mínimo provisório de 0,92 só pode subir, até chegar aos 0,95 dos outros idiomas.
Entretanto, a resposta prática é a de sempre: a deteção automática propõe e uma pessoa revê antes de aplicar, sobretudo nas digitalizações. A anonimização visual por zonas cobre o que o OCR não consegue ler.
Corre em cada alteração da IA
Estes testes não são uma fotografia para o blogue. O corpus completo passa pela integração contínua em cada alteração da IA, antes de chegar à produção: extrai-se o texto (com OCR nas digitalizações), detetam-se os dados pessoais e compara-se com o esperado. Cada idioma tem um mínimo de recall e de precisão que só pode subir; uma alteração que fique abaixo não é integrada. Os números deste artigo saem desses relatórios e vamos atualizá-los quando mudarem.
Perguntas frequentes
O que significa um recall de 0,98?
Que em cada 100 dados pessoais presentes nos documentos a IA deteta 98. Os outros 2 têm de ser apanhados na revisão humana antes de aplicar a anonimização.
Porque é que o recall em todos os reais é mais baixo do que nos revistos à mão?
Porque a anotação automática só marca os nomes indicados pela publicação (juízes de um coletivo, relatores…), que muitas vezes estão em assinaturas digitalizadas ou em listas sem contexto, precisamente onde a deteção mais falha. Os revistos à mão medem o documento inteiro.
Algum documento do corpus é publicado?
Não. Só publicamos contagens e percentagens por idioma. Nenhum documento, texto, nome ou dado pessoal do corpus sai dos testes.
