Estas quatro famílias leem a aritmética e a geometria do próprio documento, não sua estrutura — e é isso que faz de duas delas os únicos achados que sobrevivem a uma regravação completa por outra ferramenta. Um falsificador que lava um arquivo pelo Ghostscript apaga a cadeia de revisões e a string de produtor; os números ainda precisam fechar, e os glifos ainda precisam cair onde um gerador os teria posto.
Parte do guia de sinais — quatro das dezoito famílias que o motor reporta.
Sinais, não veredictos. Todo achado aqui é um fato estrutural sobre um arquivo. "Este documento foi modificado depois de gerado" é verdadeiro ou falso sobre os bytes; "este documento é fraudulento" é um julgamento sobre uma pessoa, e o Tamperlens não o faz. A API não retorna nenhum campo de veredicto booleano, por construção.
br-identifier-checksum
alta média baixa- O que detecta
- Um identificador brasileiro impresso na página cujo próprio dígito verificador publicado diz que ele está errado — um CPF, um CNPJ, uma chave de acesso de NF-e, ou a linha digitável de 47 dígitos de um boleto.
- O boleto é o que justifica a família. A linha impressa de um boleto não é texto livre: é um rearranjo fixo do código de barras de 44 dígitos, e o seu quarto campo carrega o dígito verificador mód-11 exatamente do valor e do vencimento que o resto da linha codifica. Reconstruindo o código de barras a partir da linha impressa e rodando a conta, um valor que alguém redigitou contradiz uma aritmética que o banco emissor já fez — sem nada com que comparar. Nenhum código de barras é decodificado e nenhum pixel é lido.
- Isso importa além dos boletos: é um dos poucos achados aqui que sobrevive a um documento ser regerado por inteiro. Uma reescrita por qpdf ou Ghostscript lava todo sinal de nível de byte; ela não muda quanto os dígitos da página somam.
- Evidência retornada
-
Por achado: o
kind, a página, oshapepelo qual foi reconhecido, qual componentefailed, a quantidade de dígitos e apenas os quatro últimos. Para um boleto, oamountCentavose adueDateque a linha codifica. O número em si nunca é republicado — um CPF é dado pessoal, e um relatório acaba armazenado, registrado em log e encaminhado. - Causas legítimas
- Erros de digitação e transcrição. Um CPF que falha é mais vezes um CPF digitado errado do que um inventado, e é por isso que ele é reportado como baixa e nunca mais que isso.
-
Números de teste deliberadamente inválidos.
Formulários em branco e modelos trazem
111.111.111-11e companhia de propósito; números de dígitos repetidos são excluídos de saída. - OCR. A camada de texto de uma página digitalizada carrega erros de transcrição que não dizem nada sobre fraude, então páginas que são uma imagem inteira não são lidas.
- O que não consegue ver
- Isto não é verificação de identidade nem consulta. Nenhuma base é acessada e nada sai do processo. Saber que onze dígitos satisfazem uma identidade publicada não diz nada sobre a quem eles pertencem, nem se são da pessoa nomeada ao lado.
- Um dígito verificador que passa nunca é reportado, porque não vale nada. Qualquer um gera um CPF válido em um laço, e todo preenchedor de modelo já gera. Silêncio aqui não é atestado de saúde.
- O código de barras em si não é lido. Comparar a linha impressa com as barras — o terceiro portador — exige um decodificador vetorial que está especificado e não construído.
- Lógica de severidade
- alta quando a linha impressa de um boleto, na forma pontuada canônica, falha no dígito verificador geral mód-11 — a falha que um valor ou vencimento editado produz, e que um boleto emitido corretamente não pode ter. média quando o dígito mód-10 de um único campo falha (um bloco digitado errado, que transcrição também produz), quando a mesma falha geral aparece numa sequência de dígitos sem pontuação, ou para uma chave de NF-e. baixa para CPF ou CNPJ.
- Uma sequência de 47 dígitos sem pontuação só é lida como boleto numa página que traga ao menos três nomes de campo da Febraban. Cerca de uma sequência arbitrária em dez passa pela checagem de layout e então falha num dígito verificador, e sem essa exigência a família diria isso como "alguém editou um boleto".
running-balance-break
média- O que detecta
- Uma coluna de saldo que deixa de decorrer das linhas ao lado dela. Um saldo corrente é uma corrente: o saldo de cada linha é o saldo da linha anterior somado ao que aquela linha registra. Uma coluna que satisfaz isso cinco vezes seguidas é um saldo corrente, e um passo que ela não consegue justificar é um passo que os números impressos ao lado não explicam.
- Esta é a única família capaz de ver um documento gerado do zero. Todas as outras aqui perguntam se um arquivo foi alterado — uma revisão foi anexada, duas datas discordam, um texto está pintado sob uma caixa — e todas pressupõem que existiu um original. Um extrato produzido inteiro por um preenchedor de modelo, em uma revisão, com metadados coerentes e um só produtor, passa por todas elas. O que ele não faz de forma confiável é permanecer coerente consigo mesmo, porque as linhas são inventadas uma a uma e a corrente restringe todas ao mesmo tempo.
- Evidência retornada
- Por corrente: a página, quantas linhas e quantos elos ela tinha, quantos elos fecharam, quantos romperam, qual elo rompeu primeiro e de quanto o saldo se moveu ali. Mais o formato numérico que o documento resolveu e como isso foi decidido.
- Nenhum texto da página é retornado, e nenhum saldo. O movimento é uma diferença entre dois saldos — que é o achado — enquanto a posição financeira em si não é algo que este motor copia para um corpo de relatório que outra pessoa vai armazenar e encaminhar.
- Causas legítimas
- Saldo transportado. Uma corrente que continua de outra página ou de outro extrato legitimamente começa de um número que esta página nunca mostra.
- Uma linha que não conseguimos ler. Uma tarifa desenhada como imagem, um valor com algo pintado por cima, um número num formulário que não percorremos — todos estão simplesmente ausentes, e um valor ausente é idêntico a um valor faltando.
- Arredondamento e múltiplas moedas. A tolerância é de dois centavos mais um ponto-base, o que absorve arredondamento mas não uma conversão.
- O que não consegue ver
- Um extrato digitalizado. Não há camada de texto para ler e não há OCR aqui, então a família não diz nada — o que não é o mesmo que dizer que o documento está limpo.
-
Um documento cujo formato numérico é ambíguo.
1.234,56é mil e duzentos no Brasil e um vírgula dois nos Estados Unidos. O formato é decidido uma vez por documento, a partir do uso de separadores do próprio documento, e um documento que usa as duas convenções é recusado em vez de adivinhado. - Um falsificador que refez a coluna. Recalcular todos os saldos depois de uma edição derrota isto por completo. A família levanta o piso; não fecha a porta.
- Lógica de severidade
- média, e deliberadamente não mais que isso. Um achado aritmético parece prova de um jeito que um achado estrutural não parece, então ele fica limitado até que a medição diga outra coisa. Medida contra 3.842 documentos publicados, a família dispara zero vezes — e a mesma medição não encontrou nenhum extrato bancário real naquele corpus, então a taxa de acerto é demonstrada em fixtures e não numa população.
- A pré-condição é a família: uma coluna precisa fechar ao menos cinco elos e romper no máximo dois. Uma tabela que não é um saldo corrente rompe em quase todos os elos e é descartada em silêncio — existem 18 correntes candidatas naquele corpus e nenhuma delas é um extrato.
glyph-anomalies
baixa- O que detecta
- Um valor que não fica sobre a linha de base do texto impresso ao seu lado, numa linha que carrega um valor monetário. Um gerador posiciona todos os glifos de uma linha impressa a partir de uma única matriz de texto, então a linha fica reta. Um editor que substitui um valor não consegue refluir a página — ele remenda o fluxo de conteúdo, recalcula a translação, e a substituição cai uma fração de ponto fora.
-
Isto é geometria, não estrutura. É a única razão de
existir: contagem de revisões, par
/IDe string de produtor são todos apagados quando o documento é regravado por outra ferramenta, e onde os glifos caem não é. É um dos poucos achados que sobrevive a uma redestilação completa. - Evidência retornada
-
Por achado: a página, o deslocamento da linha de base em
ems, quantos trechos há na linha, e três booleanos registrando se a mesma linha também mostrou troca de subconjunto de fonte, kerning explícito dentro de um número, ou pequena divergência de tamanho. Nenhum texto da página é retornado — os trechos que esta família observa são justamente os valores impressos. - Causas legítimas
- Ferramentas de design e diagramação que posicionam texto elemento por elemento. Medido em 1.368 documentos publicados, isto dispara em 24 deles, e os produtores são Canva, Quartz, Distiller, Word, pdfTeX e iText — toda a cadeia de ferramentas corrente. Não há produtor a excluir.
- Sobrescritos, chamadas de nota e notação em linha são excluídos por construção: um trecho elevado precisa ter ao menos 85% do tamanho do texto ao lado, o que um sobrescrito não tem.
- O que não consegue ver
- Documentos digitalizados. A camada de texto de um scan é desenhada em modo de renderização invisível, então não é texto que um leitor vê e esta família nunca a lê. Cerca de um terço dos dois corpora de referência não desenha texto visível algum, e o silêncio nesses casos não é atestado de limpeza.
-
Qualquer coisa sobre largura de glifos. Nenhum
programa de fonte é lido e nenhum vetor
/Widthsé carregado — exclusão deliberada, já que um programa de fonte é binário controlado por quem envia o arquivo. - Um valor redigitado sozinho na própria linha. A verificação compara um trecho com seus vizinhos, então um número sem nada ao lado não tem linha de base da qual sair.
- Lógica de severidade
-
baixa, sempre, e o teto é medido e não cauteloso. Em
1.006 falsificações pareadas contra suas próprias origens, este achado
aparece em 43 e em 1 das 160 origens; as operações que redigitam texto
o disparam em 6,6% dos casos onde a origem não disparava, e as 228
falsificações que não redigitam nada o disparam 0,0%
das vezes. Também aparece em 1,4% dos documentos publicados dos EUA e
2,2% dos brasileiros, e sinaliza como novos 3 das 82 falsificações que
o resto do motor não pega. Severidade
baixa não carrega piso de pontuação, então este achado
sozinho não consegue tirar um documento limpo da faixa baixa — que é o
peso honesto para um resíduo que a diagramação legítima também produz.
Veja
docs/GLYPH-PHASE0-2026-08-05.md.
structure-warnings
baixa média- O que detecta
-
Tudo o que o parser não conseguiu reconciliar entre a contabilidade
interna do arquivo e seus bytes reais: entradas de referência cruzada
apontando para deslocamentos que não contêm o objeto que afirmam conter,
seções de referências cruzadas ilegíveis ou reconstruídas, subseções e
entradas malformadas, laços na cadeia de referências cruzadas,
comprimentos de stream que discordam do stream, referências pendentes e
bytes sobrando depois do
%%EOFfinal. - Um PDF corretamente escrito é internamente autoconsistente. Irregularidades significam ou um produtor fora de conformidade, ou manipulação posterior dos bytes — e elas também delimitam quanto do documento o resto do relatório pôde examinar, e é por isso que são reportadas mesmo quando parecem sem graça.
- Esta família também carrega a divulgação de documento criptografado, descrita por completo na próxima seção.
- Evidência retornada
-
warningCount, a listacodesdeduplicada e ordenada, até 25 avisos individuais com mensagens,xrefConflicts,trailingGarbageBytes,revisionChainBrokeneparseTruncated. - Causas legítimas
- Produtores fora de conformidade estão em toda parte. Muitos geradores de longa vida e inteiramente honestos emitem deslocamentos de referência cruzada levemente errados, porque todo leitor de PDF do mundo real os conserta em silêncio e ninguém nunca percebeu. Arquivos que passaram por gateways de e-mail, antivírus ou caminhos de transferência ingênuos podem adquirir bytes sobrando no final. Um download truncado produz uma versão espetacular deste sinal e não significa nada sobre a autenticidade do documento.
- Lógica de severidade
-
Silenciosa quando não há avisos e o documento não está criptografado.
média quando há ao menos um conflito de referência
cruzada, ou ao menos um aviso cujo código está no conjunto sério —
xref-conflict,bad-offset,unparseable-xref,bad-xref-stream,bad-xref-subsection,bad-xref-entry,xref-chain-loop,xref-reconstructed,stream-length-mismatch— ou seja, a contabilidade do arquivo contradiz seus bytes em vez de estar meramente incompleta. baixa nos demais casos.
Veja o relatório no seu próprio arquivo
O verificador gratuito roda todas as famílias desta página e mostra a evidência completa — sem conta, sem nada armazenado. Para rodar no seu próprio fluxo, veja o guia rápido da API ou crie uma conta para uma chave com 50 documentos grátis por mês.
O Tamperlens reporta sinais de risco, não veredictos de autenticidade. Sinais podem ter causas legítimas; combine-os com sua própria lógica de decisão.
O resto do guia
- Como um PDF registra a própria origem Cinco famílias.
- O que as páginas de um PDF entregam Seis famílias.
- O que uma assinatura de PDF realmente cobre Três famílias.
- Todas as dezoito famílias O índice, o vocabulário de severidade e como os sinais viram uma pontuação.