Medido
Cada número, com a sua data, a sua máquina e o ficheiro de onde sai
Esta página reúne as medições que o resto do sítio cita. Cada tabela diz o dia em que foi tirada e a máquina em que correu, e um teste volta a ler cada número do ficheiro que o produziu: quando esse ficheiro se mexe e a página não, a construção fica vermelha.
O que não está aqui é aquilo que ninguém mediu. Onde a fonte não regista a máquina, a página di-lo em vez de inventar uma; onde o corpus é sintético, a frase que o diz viaja com o número.
O motor determinista, sobre o corpus adversarial
A camada controlada por dígito de verificação: documentos de identidade, IBAN, cartões, chaves e tokens. Duas pistas sobre o mesmo gerador — os valores escritos entre espaços, e os mesmos valores escritos como as pessoas os escrevem: colados a um dígito solto, com prefixo, em algarismos arábico-índicos, com uma marca combinante lá dentro.
Corpus: 1.000 documentos em quatro idiomas, 4.522 entidades etiquetadas, 443.724 caracteres. Máquina: Apple M4 Pro, macOS 15.7.4, CPython 3.13.7.
| Pista | Semente | Precisão | Abrangência | Fuga residual | Superfície de fuga parcial | Ida e volta |
|---|---|---|---|---|---|---|
| Cooperativa | 1234 | 1,0000 | 1,0000 | 0,00 % | 0 | 1,000000 |
| Cooperativa | 42 | 1,0000 | 1,0000 | 0,00 % | 0 | 1,000000 |
| Cooperativa | 7 | 1,0000 | 1,0000 | 0,00 % | 0 | 1,000000 |
| Adversarial | 1234 | 0,9940 | 1,0000 | 0,00 % | 0 | 1,000000 |
| Adversarial | 42 | 0,9874 | 0,9989 | 0,00 % | 0 | 0,999641 |
| Adversarial | 7 | 0,9894 | 1,0000 | 0,00 % | 0 | 1,000000 |
Medido a 9 de agosto de 2026 · 1.000 documentos por passagem, três sementes, as duas pistas.
As três linhas adversariais são publicadas com as outras: duas ficam abaixo dos limiares que a integração contínua afirma, porque ali tira-se uma só semente e esta tabela tira três. O que se aguenta nas seis passagens é o par pelo qual se julga uma fronteira de fuga de dados: fuga residual a zero e superfície de fuga parcial a zero.
Documentos, no gateway
Extração e deteção sobre o corpus de documentos, um pedido de cada vez. São números de pedido único: os dois passos dependem do processador e o interpretador serializa-os, por isso quem governa a concorrência é o semáforo de documentos e a reserva de processos, não esta tabela.
| Documento | Extração | Deteção | Total | Valores encontrados |
|---|---|---|---|---|
| PDF de uma página com camada de texto | 1,3 ms | 1,9 ms | 3,2 ms | 6/6 |
| Documento Word: corpo e propriedade de autor | 0,6 ms | 2,1 ms | 2,7 ms | 6/6 |
| Folha de cálculo: células, nome da folha e propriedades | 1,4 ms | 1,1 ms | 2,5 ms | 6/6 |
Medido a 29 de agosto de 2026 em fernando · AMD EPYC-Genoa, 16 vCPU, 30 GB.
- O mesmo trabalho no navegador
- 92 ms de ponta a ponta para um PDF de uma página de 3 MB
O caminho do navegador é outra implementação (pdf.js e pdf-lib) e o banco de ensaios diz que não é comparável com as linhas acima: por isso é publicado na sua própria linha e nunca dentro daquela tabela.
Determinista frente a PLN
A camada determinista não procura nomes de pessoas; disso trata a camada de PLN. Isto é o que cada pilha deixa atrás de si sobre o mesmo corpus: a proporção de valores PERSON e LOCATION do ouro ainda presentes no texto que sai.
Corpus: 400 documentos, 800 entidades do ouro, semente 2026.
| Pilha | Fuga residual | Valores | Tempo de relógio |
|---|---|---|---|
| NER nulo (controlo) | 100,000 % | 800/800 | 0,1 s |
| Determinista + Presidio | 4,875 % | 39/800 | 3,3 s |
| Determinista + Presidio + GLiNER | 0,000 % | 0/800 | 7,1 s |
Medido a 12 de setembro de 2026 · máquina: development laptop.
O zero não é uma promessa de zero em produção: o corpus é sintético e as suas entidades do ouro são apenas PERSON e LOCATION, por isso não diz nada da prosa real, nem das moradas, nem das categorias especiais. A linha de controlo a cem por cento é o que torna legível o zero: sem ela, um zero não se distingue de uma escala partida.
As três pilhas de nomes
O que acrescenta o modelo multilingue, sobre o corpus etiquetado do próprio projeto. Esta medição é a razão por que é entregue desligado.
Corpus: 300 documentos, 50 por idioma, 6 idiomas.
| Pilha | Por documento | Abrangência | Precisão | Abrangência em catalão |
|---|---|---|---|---|
| Presidio | 3 ms | 0,990 | 0,905 | 1,000 |
| Presidio + GLiNER | 13 ms | 1,000 | 0,830 | 1,000 |
| + GLiNER multilingue | 72 ms | 1,000 | 0,787 | 1,000 |
Medido a 12 de setembro de 2026.
O modelo multilingue não encontra um único nome que as outras duas camadas não encontrem já, nem sequer em catalão — o Presidio traz o seu próprio modelo catalão. Demora 5,5 vezes mais e marca 39 trechos a mais que não são nomes: o mesmo texto de 10.000 caracteres passa de 1.118 ms para 3.081 ms.
A fonte regista a data e o corpus desta comparação, não a máquina. O que se transporta de uma máquina para outra é a proporção entre as três configurações, não os milissegundos.
Esse corpus é sintético, por isso uma abrangência de um não é uma afirmação sobre a escrita real. A fuga residual publicada da camada de nomes é a da tabela acima.
O plano de nomes: memória e workers
Medido a 12 de setembro de 2026 dentro da imagem do plano num CCX33 · Falkenstein. Nada é partilhado entre processos, por isso o número de workers é uma divisão e não uma preferência.
- Interpretador vazio
- 26 MB
- Modelos carregados
- 3.331 MB, em 13,9 s
- Depois de um pedido de 10.000 caracteres
- 3.412 MB
- Workers
- 6 processos, 20,5 GB. Oito seriam 27,3 GB, acima do teto de 26 GB que o compose fixa.
A tabela de latência deste plano — p95 por tamanho de texto mais a ida e volta medida — é publicada em Como funciona e não se copia aqui.
Contra o que os fornecedores guardaram
Medido a 19 de setembro de 2026 com a extensão 0.9.0, commit 225bcd18: 4 ficheiros sintéticos testados contra 2 fornecedores. Chegaram a ser enviados 3; a extensão travou 1 antes de sair do navegador. O que cada fornecedor guardou foi lido da sua própria cópia da conversa, não do ecrã, que reidrata.
| Ficheiro | Fornecedor | Marcadores guardados | Veredicto |
|---|---|---|---|
| Documento Word com um IBAN no texto e uma fotografia de documento de identidade incorporada | ChatGPT | 1 | Sem fuga |
| PDF com camada de texto, documento de identidade e IBAN | ChatGPT | 2 | Sem fuga |
| PDF digitalizado, só imagem | ChatGPT | nunca enviado | Travado |
| O mesmo PDF com camada de texto | Claude | 2 | Sem fuga |
O ficheiro digitalizado nunca chegou a ser enviado: nenhuma página tinha camada de texto e a extensão cancelou o envio. Não finge tapar o que não consegue ler, por isso a sua linha não leva marcadores nem veredicto de fuga, mas o seu próprio estado.
Ficheiros testados: 4 · Enviados: 3 · Travados antes de sair: 1 · Fornecedores: 2 · Fugas sobre o que foi enviado: 0 · Achados registados: 7
Os marcadores, ficheiro a ficheiro, estão em Como funciona. Nenhum dos achados daquele dia é uma fuga; o artefacto nomeia-os um a um.
O pacote que se publica
Dois artefactos, não um. O que a Chrome Web Store serve hoje é o ficheiro que quem lê isto instala; o que este repositório construiu e ainda não enviou é um ficheiro diferente. Ambos estão abaixo, cada um com o dia em que foi lido ou construído, juntamente com as permissões que o Chrome concede à extensão e os sites onde ela pode correr.
O que a loja serve — o CRX assinado que quem lê instala:
- Versão que a loja serve
- 0.9.0
- Pacote que a loja serve
- 1.098.014 bytes, lidos do serviço de atualização do Chrome a 20 de setembro de 2026
O que este repositório construiu — o zip que vai ser enviado, e as verificações feitas sobre ele:
- Preparado aqui, ainda por enviar
- Versão 0.9.2 — 1.119.692 bytes, construído a 21 de setembro de 2026
- Verificações do motor dentro do zip
- 63/63, executadas contra o motor empacotado e não contra o código-fonte
- Chrome mínimo
- 116
Os dois diferem sempre que uma construção espera para ser enviada, e essa distância é o habitual. O que não era habitual é o que esta página fazia até hoje: imprimia o número preparado sob a palavra publicado, e afirmava assim uma versão e um tamanho que a loja nunca serviu.
Permissões (3):
storagescriptingalarms
Sítios (4):
https://chatgpt.com/*https://chat.openai.com/*https://claude.ai/*https://licensing.bivelio.com/*
Sítio opcional, pedido só se quem lê o ligar:
https://gemini.google.com/*
Um zip guarda datas de modificação, por isso duas construções dos mesmos ficheiros dão resumos diferentes e um resumo não identifica nada. Deste artefacto publicam-se os bytes e o dia em que foi construído; a verificação que significa alguma coisa executa o motor de dentro do pacote, não o do repositório. A loja serve um CRX — os mesmos ficheiros mais o cabeçalho de assinatura que a própria loja acrescenta ao publicar —, portanto o seu tamanho não é o do zip e esta página não subtrai um do outro.
De onde vêm estes números
Cada tabela acima cita o seu ficheiro. A página que percorre passo a passo o que o produto faz com eles é «Como funciona»; o motor pode correr sobre o seu próprio texto no banco de ensaios.