linguagem-simples-br
Verificador aberto da Lei 15.263/2025, a Política Nacional de Linguagem Simples. Confere um texto contra os 18 incisos do art. 5º, as técnicas de escrita que a lei manda usar. Diz, inciso por inciso, o que achou, onde achou e o que não confere. Feito para servidor público, órgão e quem escreve para o cidadão.
Experimente no navegador: cole o texto, ou o HTML de uma página, e clique. A página roda esta mesma biblioteca no seu navegador (Pyodide); o texto não sai do seu computador. Na primeira visita ela baixa cerca de 6 MB e fica pronta em 1,7 s (medido em 10/10/2026, numa conexão rápida). Depois disso, conferir o texto do exemplo leva uns 5 ms.
Precisão medida em páginas de serviço do gov.br, por inciso: XII 100%, XV 98%, XVII 98%, IV 98%, VI 96%, II 95%, XIV 88%, VIII 78%, IX 73%; o XIII acerta 31% e por isso só aponta trechos para quem lê decidir. Intervalos em Precisão medida.
O resultado aponta trechos para revisão. Não é parecer jurídico e não certifica que um texto cumpre a lei.
Instalar
Python 3.11 ou mais novo; só a biblioteca padrão, sem outra dependência.
python -m pip install linguagem-simples-br
Ou direto da tag no GitHub:
python -m pip install "git+https://github.com/peterwkdev-creator/linguagem-simples-br@v1.10.0"
Sem instalar nada, cole o texto na
vitrine. Com
o repositório baixado, o comando também roda de dentro da pasta dele, sem
pip.
Primeira vez? (Windows)
- Instale o Python pelo python.org. Na primeira tela do instalador, marque Add python.exe to PATH.
- Abra o PowerShell: no menu Iniciar, digite "PowerShell".
- Instale o verificador:
python -m pip install linguagem-simples-br. - No Bloco de Notas, cole o texto e salve como
carta.txt, na pasta Documentos. Texto no Word ou em PDF: copie e cole no Bloco de Notas. - No PowerShell, rode
cd ~\Documentse depoispython -m linguagem_simples carta.txt.
Uso
Na linha de comando:
python -m linguagem_simples carta.txt
Com carta.txt contendo o texto “Os documentos devem ser entregues no INSS
até sexta-feira.”, o relatório começa assim:
Lei nº 15.263, de 14/11/2025, art. 5º (publicação original, DOU de 17/11/2025, Seção 1, p. 1): relatório dos 18 incisos
O resultado aponta trechos para revisão. Não é parecer jurídico e não certifica que o texto cumpre a lei.
Conferidos nesta versão: II, III, IV, V, VI, VIII, IX, XII, XIII, XIV, XV, XVII. Ocorrências: 2.
Trechos a revisar: 2 (VIII: 1, XII: 1), listados abaixo com linha e coluna.
Classes: automático, regra que o verificador confere; sinal, indício para quem lê decidir; fora do alcance, só uma pessoa confere. Num sinal, nenhuma ocorrência não garante que o inciso foi cumprido.
E segue com os 18 incisos, na ordem da lei. Os dois trechos aparecem assim:
VIII. redigir o nome completo antes das siglas
automático; 1 ocorrência
- linha 1, coluna 38: INSS: primeira ocorrência sem o nome completo antes: “INSS”
XII. redigir frases preferencialmente na voz ativa
automático; 1 ocorrência
- linha 1, coluna 21: voz passiva sem agente: a frase não diz quem faz a ação: “ser entregues”
Instalado pelo pip, o mesmo vale como linguagem-simples carta.txt,
com as mesmas opções (linguagem-simples -h lista todas, com exemplos).
Para guardar o relatório num arquivo, use --saida relatorio.txt.
Em Python:
from linguagem_simples.relatorio import conferir
texto = "Procure o INSS para pedir o benefício."
for resultado in conferir(texto):
for o in resultado.ocorrencias:
print(resultado.inciso.numero, o.trecho, o.mensagem)
# VIII INSS INSS: primeira ocorrência sem o nome completo antes
O arquivo é texto, Markdown ou HTML; - lê da entrada padrão. Word, PDF
e RTF não são lidos: a mensagem pede para copiar o texto para o Bloco de
Notas. Arquivo salvo no padrão antigo do Bloco de Notas (ANSI) é lido com
um aviso. O relatório lista os 18 incisos, na ordem da lei, cada um com a
classe e o que aconteceu. Mais exemplos abaixo.
Reescrita sugerida por IA
Com --reescrever, o Claude, a IA da Anthropic, reescreve o texto a
partir dos apontamentos do relatório, e o verificador confere a reescrita
antes de mostrar:
python -m linguagem_simples texto.txt --reescrever --saida texto-simples.txt
A chave da API: como funciona
- O que é. A reescrita usa a API da Anthropic, que cobra por uso. A chave da API funciona como a senha da sua conta nela, e a biblioteca não traz chave nenhuma. Crie a sua em platform.claude.com/settings/keys; o crédito se compra em platform.claude.com/settings/billing.
- O jeito mais simples. Rode o comando acima no PowerShell (no Linux
e no macOS, no terminal). Sem chave configurada, ele pergunta: cole a
chave e tecle Enter (se o Ctrl+V não colar, use o botão direito do
mouse). Ela não aparece na tela e vale só para essa execução. Com o
texto pela entrada padrão (
-), não há pergunta: use o passo 3. - Para não colar toda vez, ou num script, ponha a chave na variável
ANTHROPIC_API_KEYantes de rodar. A variável vale até fechar o PowerShell. Mas o comando com a chave fica gravado no histórico dele, em disco, mesmo depois de fechar: por isso o passo 2 é o mais seguro.- Windows, PowerShell:
$env:ANTHROPIC_API_KEY = "sua-chave" - Windows, Prompt de Comando:
set ANTHROPIC_API_KEY=sua-chave(sem aspas) - Linux e macOS:
export ANTHROPIC_API_KEY="sua-chave"
- Windows, PowerShell:
- O que a biblioteca faz com ela. Só a põe no cabeçalho da
requisição HTTPS para
api.anthropic.com, sem seguir redirecionamento para outro endereço. Não grava em arquivo, não imprime, não põe no relatório nem no JSON, e nenhuma mensagem de erro a mostra. Chave com espaço, quebra de linha ou caractere invisível no meio é recusada antes de sair do computador. - Quem paga. Cada reescrita faz de uma a três chamadas, cobradas na conta da chave. A saída diz quantos tokens usou, de entrada e de saída, também quando para num erro depois de uma chamada já paga; o preço por token está na página de preços da Anthropic.
- Para onde vai o texto. O texto vai para a Anthropic. Antes de mandar dado pessoal (Lei Geral de Proteção de Dados, a LGPD) ou sigiloso, leia os termos e a política de privacidade dela. A vitrine não faz reescrita: a página no navegador não leva chave, e o texto colado nela não sai do seu computador.
Se a chave não for aceita, se faltar crédito, se o modelo não existir ou se a API estiver fora do ar, a mensagem diz o que fazer.
Como a reescrita é aceita
- O total de apontamentos cai, e nenhum inciso piora.
- Todo número, data, sigla, link e e-mail do original continua no texto, e não aparece número novo.
Senão, a IA tenta mais duas vezes, sabendo o que falhou. Se ainda não passar, a saída diz por que recusou e não mostra o texto.
O texto aceito vai para a tela ou para o arquivo de --saida, que tem de
ser novo: a reescrita nunca grava por cima de um arquivo. Se a gravação
falhar, o texto vai para a tela, para não se perder. Num HTML, só o
texto é reescrito, sem a marcação. --modelo troca o modelo (padrão
claude-sonnet-5-5). Com --json, sai o antes e o depois por inciso, e
os tokens. Código de saída: 0 aceita (ou nada a reescrever), 1 recusada,
2 erro (sem chave, sem rede ou erro da API). Recusada, a saída diz o que
fazer: rodar de novo, que é outra cobrança, ou revisar à mão os trechos
do relatório. Em Python,
reescrita.reescrever(texto, chave=...) faz o mesmo; sem chave, vale a
variável.
O verificador não confere o sentido: compare com o original antes de usar.
O que se mediu
Nos 28 trechos "antes" dos guias oficiais que têm apontamento, as
28 reescritas foram aceitas (41 apontamentos → 1, a sigla DTI, cujo nome
o trecho não dá) e 25 mantiveram o sentido: 89% (73% a 96%). Nas
outras 3, a reescrita afirmou que o mandado foi cumprido, escreveu
"Aceitamos" onde o original não diz quem decidiu e trocou "peticionar"
por "entrar com uma ação judicial", a mesma troca que o guia da SES-DF
faz. Método em docs/precisao.md; para medir de novo
com a sua chave, python docs/medir_reescrita.py medida.jsonl.
Por quê
A Lei 15.263/2025 vale desde 17/11/2025 para a administração direta e indireta de todos os Poderes e entes (art. 1º), inclusive os municípios. O art. 5º lista, em 18 incisos, as técnicas de escrita. Algumas se contam no texto (frase longa, sigla sem o nome antes, voz passiva, link "clique aqui"); outras só uma pessoa confere (o mais importante primeiro, o teste com o público).
Este verificador aponta o trecho de cada uma que se conta, diz quais não confere e por quê, e publica quanto acerta, medido em páginas reais de órgão. Cada limiar e cada palavra dos léxicos vem de um guia oficial, com a página.
O que cobre
| Inciso | Texto da lei | O que o detector aponta | Padrão |
|---|---|---|---|
| II | redigir frases curtas | frase longa | mais de 20 palavras |
| III | desenvolver uma ideia por parágrafo | parágrafo longo, sinal de mais de uma ideia | mais de 8 frases |
| IV | usar palavras comuns, de fácil compreensão | palavra que um guia oficial manda trocar por outra mais conhecida ("o pedido foi deferido", "dez dias ininterruptos") e a forma que o guia sugere | léxico em linguagem_simples/lexicos/palavras-complexas.txt: 86 linhas do TJRS, da CAPES, da Anvisa e da SES-DF, com as formas do verbo |
| V | usar sinônimos de termos técnicos e de jargões ou explicá-los no próprio texto | termo técnico ou jargão que um guia manda trocar ou explicar ("exordial acusatória", "transitou em julgado"), quando o texto não o explica logo depois (entre parênteses, com "ou seja" ou "isto é") | léxico em linguagem_simples/lexicos/jargoes.txt: 32 entradas do TJRS, da SES-DF e da Anvisa |
| VI | evitar palavras estrangeiras que não sejam de uso corrente | palavra estrangeira que um guia oficial manda trocar ("faça o login", "um checklist") e a forma que o guia sugere | léxico em linguagem_simples/lexicos/estrangeirismos.txt: 36 entradas da CAPES, da Anvisa, do TJGO, do TJRS e do Manual de Comunicação do Senado |
| VIII | redigir o nome completo antes das siglas | primeira vez que a sigla aparece sem o nome antes | — (nome de cor em caixa alta, como "VERMELHO", não conta como sigla: lista em linguagem_simples/lexicos/cores.txt, com a fonte de cada palavra) |
| IX | organizar o texto de forma esquemática, quando couber, com o uso de listas, tabelas e recursos gráficos | frase de parágrafo que anuncia uma série depois dos dois-pontos, com os itens separados por vírgula ou ponto e vírgula ("leve ao atendimento os documentos: RG, CPF e comprovante") | 3 itens ou mais |
| XII | redigir frases preferencialmente na voz ativa | verbo "ser" com particípio ("foi entregue pela empresa"), com ou sem quem faz a ação | — |
| XIII | evitar frases intercaladas | trecho entre vírgulas no meio da frase que começa por pronome relativo (", que deve ser apresentado pelo requerente,") | — |
| XIV | evitar o uso de substantivos no lugar de verbos | verbo de apoio com substantivo ("faça a identificação") e substantivo do léxico com complemento ("prevenção da Covid-19") | léxico em linguagem_simples/lexicos/, com a fonte de cada palavra |
| XV | evitar redundâncias e palavras desnecessárias | expressão do léxico com palavras sobrando ("compareça pessoalmente", "a fim de", "de acordo com") e a forma que o guia sugere | léxico em linguagem_simples/lexicos/redundancias.txt: 29 entradas do TRE-AL, do CJF e da CAPES, com a página |
| XVII | usar linguagem acessível à pessoa com deficiência (Lei 13.146/2015) | no HTML, link de texto vago ("clique aqui", "saiba mais"), imagem sem alt e tabela sem célula de cabeçalho (th); no texto e no Markdown, só o link vago |
eMAG 3.1, recomendações 3.5, 3.6 e 3.10; léxico em linguagem_simples/lexicos/links-vagos.txt: 46 entradas |
As siglas dos guias (TJRS, CAPES e outras) estão por extenso em Guias usados.
Cada inciso tem uma classe, que o relatório mostra:
- Automático (II, III, VIII, XII, XIV e XV): regra que se confere no texto. O XI também é automático, mas vem desligado por padrão e ainda não tem detector.
- Sinal (IV, V, VI, IX, XIII e XVII): o detector aponta trechos para quem lê decidir. O IV, o V e o VI só conhecem as palavras que um guia manda trocar, e a palavra difícil depende de quem lê (TJRS, p. 31); a lei aceita o termo técnico explicado e a palavra estrangeira de uso corrente. O IX acerta 73%, e a lei diz "quando couber"; o XIII acerta 31%; o XVII confere só três pontos do que a Lei 13.146/2015 pede. O I, o VII e o XVI também são sinal, ainda sem detector.
- Fora do alcance (X e XVIII): só uma pessoa confere.
Num sinal, "nenhuma ocorrência" não garante que o texto cumpre o inciso.
A lei não fixa número. Cada limiar vem de um guia oficial, com a página, em
linguagem_simples/limiares.py, e quem usa pode trocar.
Como é testado
Para rodar os testes:
python -m unittest -v
Cada detector passa por duas provas: pega o defeito plantado e não dispara
no texto que um guia oficial dá como bom. Onde o guia traz um par "antes e
depois", o "antes" tem de dar mais ocorrências que o "depois". Os trechos
estão em tests/guias.py, com a página e o hash do PDF. Os exemplos em
Python deste README rodam nos testes, como estão.
Precisão medida
Dos trechos que cada detector aponta, quantos uma pessoa, lendo o trecho na página, confirma. Páginas de serviço do gov.br sorteadas, padrões de fábrica, critério escrito antes de anotar e duas passagens, a segunda às cegas:
| Inciso | Precisão | Acertos / anotados | Intervalo de 95% (Wilson) | Amostra |
|---|---|---|---|---|
| XII | 100% | 59 / 59 | 94% a 100% | 30 páginas, 09/10/2026 |
| XV | 98% | 59 / 60 | 91% a 100% | 150 páginas, 10/10/2026 |
| XVII | 98% | 49 / 50 | 90% a 100% | 150 páginas, 10/10/2026 |
| IV | 98% | 40 / 41 | 87% a 100% | 490 páginas, 11/10/2026 |
| VI | 96% | 25 / 26 | 81% a 99% | 120 páginas novas, 10/10/2026 |
| II | 95% | 57 / 60 | 86% a 98% | 30 páginas, 09/10/2026 |
| XIV | 88% | 21 / 24 | 69% a 96% | 30 páginas, 09/10/2026 |
| VIII | 78% | 38 / 49 | 64% a 87% | 30 páginas, 09/10/2026 |
| IX | 73% | 22 / 30 | 56% a 86% | 220 páginas novas, 10/10/2026 |
| XIII | 31% | 13 / 42 | 19% a 46% | 150 páginas, 09/10/2026 |
III não apontou nada nas 30 páginas da primeira amostra: sem número. Precisão não é cobertura: o que o detector deixa passar não entra nesta conta. Do XVII, a cobertura também foi medida: em 30 páginas novas, dos 18 nomes de link vagos, ele aponta 5 (28%, de 12% a 51%), sem apontar nenhum nome que diz o destino. O léxico dele é uma lista fechada (46 expressões na 1.2.0): "Acesse o serviço", "Protocolar" ou as abas "O que é?" do modelo do gov.br passam sem marca. O IX foi medido duas vezes: a 1ª versão acertou 43% nas 180 páginas das outras amostras, quase sempre errando no dois-pontos de rótulo ("Atenção:", "Endereço:"); a 1.3.0 não conta esse dois-pontos, e o número acima é dela, em páginas que nenhuma versão tinha visto. A cobertura do IX é baixa por desenho: das 59 enumerações dentro de parágrafo numa amostra de 150 frases com série ("Pix, cartão de crédito ou boleto"), ele aponta 4 (7%, de 3% a 16%), porque 52 delas não têm dois-pontos. Sem marca do IX não quer dizer sem enumeração. O VI erra pouco e deixa passar muito: o único erro foi "login único", nome de serviço; mas, das 20 palavras estrangeiras que duas passagens às cegas mandariam trocar em 30 páginas novas ("courier", "upload", "in loco", "vide"), ele aponta 2 (10%, de 3% a 30%), porque só conhece as que um guia lista. E quase tudo o que ele aponta é "login" (96 de 103 nas 120 páginas), que a CAPES manda trocar por "acesso", mas que as mesmas passagens deram como de uso corrente: quem lê decide. O IV aponta a palavra que um guia manda trocar ("protocolar", "requerer", "deferimento"): o único erro foi o nome de uma opção da tela entre aspas; em 5 dos 40 acertos, a forma do guia não cabe ("a licença será expedida": cabe "emitida", não "enviada"), e a mensagem diz o que o guia sugere, não o que serve no trecho. O V acerta onde aponta (8 de 8 em páginas de serviço, amostra pequena), mas a lista dos guias é estreita: em 120 notícias do Conselho Nacional de Justiça (CNJ) ele apontou uma vez, e dos 77 termos técnicos que duas passagens às cegas listaram em 30 delas ("autos", "liminar", "mérito", "precatórios"), não apontou nenhum (0%, de 0% a 5%). Sem marca do V não quer dizer sem jargão. Cada amostra, o método e o que os erros mostram estão em docs/precisao.md.
Mais exemplos
O relatório em texto, com a linha e a coluna de cada trecho:
II. redigir frases curtas
automático; limiar 20, fonte: TJGO p. 9, TRE-AL p. 13, CJF p. 6 e outros dois guias: até 20 palavras por frase (CAPES dá 25); 1 ocorrência
- linha 1, coluna 1: frase com 27 palavras (limiar: 20): “Certifico e dou fé que, dando cumprimento ao mandado subscrito extraí…”
VIII. redigir o nome completo antes das siglas
automático; 1 ocorrência
- linha 3, coluna 21: INSS: primeira ocorrência sem o nome completo antes: “INSS”
X. organizar o texto a fim de que as informações mais importantes apareçam primeiramente
fora do alcance; não conferido: só uma pessoa confere
HTML é reconhecido pela extensão (.html, .htm), pelo começo do arquivo
(<!doctype html> ou <html>) ou pela opção --html. Texto e Markdown em
UTF-8; HTML em UTF-8 ou no charset que a página declara.
| Opção | O que faz |
|---|---|
--json |
relatório em JSON, com início, fim, linha e coluna de cada trecho no arquivo lido |
--html |
lê como HTML um arquivo que não tem extensão .html |
--max-palavras N |
inciso II: palavras por frase (padrão 20) |
--max-frases N |
inciso III: frases por parágrafo (padrão 8) |
--ignorar-sigla SIGLA |
inciso VIII: sigla que o público já conhece, como CPF (repetível) |
--ligar INCISO |
liga um inciso desligado por padrão: hoje só o XI, que ainda não tem detector |
--desligar INCISO |
desliga um inciso, como --desligar XII |
--saida ARQUIVO |
grava o relatório (ou, com --reescrever, o texto aceito) num arquivo novo, nunca por cima de um que já existe |
--reescrever |
pede uma reescrita à IA, com a sua chave da API (acima) |
--versao |
mostra a versão |
-h |
mostra a ajuda, com exemplos |
Para quem automatiza
- Código de saída: 0 nada a revisar, 1 há trechos a revisar, 2 erro de
uso ou de leitura. Com
--reescrever: 0 aceita (ou nada a reescrever), 1 recusada, 2 erro. Um defeito do próprio verificador também sai com 2, nunca com 1. --jsondá início, fim, linha e coluna de cada trecho no arquivo lido; com--saida, o JSON vai para o arquivo, e a tela mostra uma linha com o resumo.-lê o texto da entrada padrão. No Windows PowerShell 5.1, passe o arquivo em vez do pipe (|): ele troca os acentos por "?" no caminho.- O que muda entre versões está em Compatibilidade.
Também dá para usar como biblioteca, com a posição de cada trecho:
from linguagem_simples.relatorio import conferir, como_dict
texto = "Procure o INSS. O atendimento é feito de segunda a sexta-feira."
for resultado in conferir(texto):
for ocorrencia in resultado.ocorrencias:
print(ocorrencia.inciso, ocorrencia.inicio, ocorrencia.mensagem)
# VIII 10 INSS: primeira ocorrência sem o nome completo antes
# XII 30 voz passiva sem agente: a frase não diz quem faz a ação
Para HTML, ler_html tira o texto e guarda onde cada trecho e cada link,
imagem e tabela estão na página; o relatório recebe a página no lugar do
texto, confere também o XVII e dá linha e coluna no HTML:
from linguagem_simples.pagina import ler_html
from linguagem_simples.relatorio import conferir, como_texto
pagina = ler_html('<main><p>Para pedir, <a href="/pedir">clique aqui</a>.</p></main>')
for resultado in conferir(pagina):
for o in resultado.ocorrencias:
print(o.inciso, o.trecho, o.mensagem)
# XVII clique aqui link com texto que não diz o destino (eMAG 3.5)
print(como_texto(conferir(pagina), pagina))
Os detectores também se chamam um a um, em linguagem_simples/detectores.py.
Fontes e limites
Guias usados
Consultados em 09/10/2026:
- Tribunal de Justiça do Estado de Goiás (TJGO), Guia de Linguagem Simples do TJGO
- Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES), O uso da Linguagem Simples na CAPES (2026)
- Agência Nacional de Vigilância Sanitária (Anvisa), Guia de Linguagem Simples, 1ª edição
- Tribunal Regional Eleitoral de Alagoas (TRE-AL), Linguagem Simples – Cartilha (2024)
- Conselho da Justiça Federal (CJF), Guia de Linguagem Simples (2024)
- Secretaria de Estado de Saúde do Distrito Federal (SES-DF), Guia para simplificar documentos (2024)
- 10 dicas para escrever um documento em Linguagem Simples (DICAS, no repositório da Escola Nacional de Administração Pública, a Enap)
Consultados em 10/10/2026:
- eMAG, Modelo de Acessibilidade em Governo Eletrônico, versão 3.1 (obrigatório no governo federal pela Portaria nº 3, de 07/05/2007, da Secretaria de Logística e Tecnologia da Informação), recomendações 3.5, 3.6 e 3.10
- Senado Federal, Manual de Comunicação: verbete "Estrangeirismo" (pares do VI e a lista de palavras de uso amplo, que o VI não aponta) e a lista "Estrangeirismos grafados sem itálico ou aspas"
- Tribunal de Justiça do Rio Grande do Sul (TJRS), Guia de Linguagem Simples (2022): quadro de palavras complexas (p. 31 e 32, IV), exemplos de jargões e termos técnicos (p. 34), quadro "Expressões que devem ser evitadas" (p. 107, V) e quadro de expressões estrangeiras (p. 36)
- Tribunal Regional Federal da 3ª Região (TRF3), Escola de Magistrados, "Expressões latinas em textos jurídicos" (2021)
Texto da lei: publicação original no portal da Câmara dos Deputados, DOU de 17/11/2025.
Outras fontes: Dicionário Priberam da Língua Portuguesa (um verbete por palavra do léxico de cores) e Lei Complementar 95/1998, art. 4º, no portal do Planalto (epígrafe de ato normativo em maiúsculas).
Limites conhecidos
-
A reescrita por IA foi medida em 28 trechos curtos (de 4 a 68 palavras), tirados de guias públicos que o modelo pode ter lido; em texto longo, ainda não há número. O aceite confere números, siglas e links, não nomes, condições nem quem faz a ação. Um texto com ordens dirigidas à IA pode desviar a reescrita, ainda que o pedido mande não obedecer: o aceite e a sua leitura são a proteção.
-
Sigla escrita como nome próprio ("Lacen", "Anvisa") não é reconhecida.
-
Com o padrão de 20 palavras, o "depois" da CAPES e o da Anvisa ainda têm uma frase acima de 20 (de 21 a 23 palavras); os dois guias aceitam até 25. Com
--max-palavras 25, nada aparece. -
VI é uma lista fechada de 36 entradas, cada uma com a fonte: palavra estrangeira fora dela passa (10% de cobertura, acima). "Upload", "courier", "desktop", "packing list" e "in loco", que as passagens mandariam trocar, passam porque nenhum guia oficial lido dá a forma a usar no lugar. As 12 entradas do TJRS (1.5.0: "performance", "expertise", "in casu", "in natura"…) ficaram fora da medida de 96%: nas 520 páginas do gov.br já lidas, aparecem em 2, e acertam nas 2. Não aponta as que os guias dão como de uso corrente (e-mail, site, mouse, download, on-line; "vide", "status" e "data venia", para o Senado e o TRF3), nem "menu", que o Senado troca por "cardápio" mas que nas páginas de serviço é sempre o menu da tela. Não aponta a palavra dentro de endereço ("gov.br/login"). A sugestão é a do guia e nem sempre cabe: em "login e senha", cabe "usuário", não "acesso" (11 dos 25 acertos). Numa página do gov.br lida inteira, aponta o título "Login Integrado" do rodapé do portal.
-
IX não aponta série de dois itens ("RG e CPF"): com dois, o "e" não separa a enumeração de uma frase comum. Os pares da DICAS (p. 2) e da SES-DF (p. 6), que põem dois itens em tópicos, passam sem marca. Também não conta o dois-pontos com menos de 5 palavras antes ("Atenção: leve o RG, o CPF e o título"), que nas páginas do gov.br é quase sempre rótulo de campo, nem a série que a página já põe em lista ou tabela. A série sem dois-pontos ("pague por Pix, cartão ou boleto") também passa: é a maioria das enumerações dentro de parágrafo (52 de 59 na medida).
-
XII aponta toda voz passiva com "ser", e a lei diz "preferencialmente": o texto que os guias dão como bom também tem passiva sem agente ("podem ser utilizadas", TRE-AL; "pode ser punido", Anvisa). A mensagem diz se a frase tem ou não quem faz a ação; quem lê decide.
-
XII não pega a passiva com "-se" ("recomenda-se"). O par da CAPES ("é responsabilidade da CAPES") fica de fora: não tem verbo na passiva.
-
XIII só pega o trecho entre vírgulas com pronome relativo; entre travessões, não. Não sabe onde a oração termina: aponta a oração no fim da frase quando ela tem vírgula por dentro (31% de precisão, acima).
-
XIV conhece só as palavras que os guias trazem (12, com o plural); fora delas, só aponta "fazer" ou "promover" com substantivo em -ção ou -mento.
-
XV conhece só as expressões que os guias trazem. Nas páginas do gov.br, quase tudo o que ele aponta é "de acordo com" (TRE-AL p. 17: prefira "segundo, conforme, como"); os pleonasmos da lista ("subir para cima") não apareceram. "No Estado de Pernambuco" (CJF) fica de fora: pede a lista dos estados. Não aponta a palavra depois de nome de documento com "de" ("Guia de Recolhimento"): o nome do documento não se troca por verbo.
-
XVI sem detector, e com a classe sinal: nenhum guia oficial dá lista de palavras imprecisas. O Manual de Redação da Presidência (2018, p. 17) e o Tribunal de Justiça de Minas Gerais (TJMG, p. 6) só dão a regra; a CAPES (p. 11), um exemplo ("por descumprimento da norma"); o TJRS (p. 58), comandos de despacho ("cumpra-se", "intime-se"). E o mesmo Manual usa "oportunamente" num exemplo certo (p. 62), que o TJGO (p. 15) reescreve. Se a palavra é imprecisa depende do contexto: quem lê decide.
-
XVII lê só a marcação: não vê a imagem, não segue o link e não aplica o CSS. Confere três recomendações do eMAG; as outras exigências da Lei 13.146/2015 que o inciso cita ficam com quem lê. No texto e no Markdown, só aponta o link vago (
[clique aqui](url)). -
XVII conta como nome do link o texto, o
altda imagem dentro dele, oaria-labele oaria-labelledby; otitlenão conta (eMAG 3.5). Link sem nome nenhum fica de fora. Imagem comalt="",aria-hidden="true"ourole="presentation"é enfeite e fica de fora; tabela comrole="presentation"também. Tabela de leiaute sem esseroleé apontada: quem lê decide. -
XVII nas páginas do gov.br: o "Saiba mais" do quadro "Login Integrado" do portal fica dentro do
<main>e aparece em quase toda página. Já as abas do modelo de página de serviço ("O que é?", "Quem pode utilizar este serviço?", "Etapas para a realização deste serviço", "Outras Informações") também são vagas pelo eMAG 3.5, mas o XVII não as aponta: vêm do portal, não do texto do órgão. Sem marca nelas não quer dizer que estão certas. -
HTML: se a página tem
<main>, só o que está dentro dele conta; sem<main>, a página inteira, menos menu (<nav>), código, formulário e o que tem o atributohidden. O CSS não é aplicado: texto escondido por CSS entra. Elementos lado a lado sem espaço no HTML colam as palavras ("22:24Modificado"). -
VIII deixa de fora a palavra em caixa alta que aparece em minúscula no mesmo texto (de cinco letras em diante), o nome de cor ("VERMELHO - Emergência"), endereço ("GOV.BR") e o "DE" e o mês da data na epígrafe de ato normativo ("RDC Nº 513, DE 27 DE MAIO DE 2021", que a LC 95/1998, art. 4º, manda grafar em maiúsculas). Fora disso, palavra comum em caixa alta ainda é apontada ("SENHA", "BUSCAR").
-
VIII reconhece o nome antes da sigla ligado a ela ("Nome (SIGLA)", "Nome - SIGLA" ou o nome próprio colado, "Nome SIGLA", com uma ou mais letras de cada palavra e até duas palavras puladas) ou, em qualquer ponto antes, como nome próprio cujas iniciais são a sigla: o nome inteiro ou, se a sigla tem três letras ou mais, o fim dele depois de um conectivo ("Secretaria Especial da Receita Federal do Brasil" serve a RFB). Com duas letras, o fim do nome coincide demais ("Cadastro de Pessoa Física" e a PF de Polícia Federal). Fora disso aponta: "Coordenação-Geral de Autorização para Transferência Fusão, Cisão, Incorporação e Retirada - CGTR" pula quatro palavras do nome. Abreviatura de mês ("31 DEZ") também é apontada, e a sigla cujas letras não saem das iniciais do nome que vem antes: a sigla em inglês ("Serviços de Tráfego Aéreo (ATS)") e a que pega sílabas ("Cadastro de Imóveis Rurais (CAFIR)").
O que há em cada pasta
linguagem_simples/: a biblioteca.incisos.pytem os 18 incisos, com o texto da lei e a classe de cada um;texto.pydivide o texto em blocos e frases;pagina.pylê o HTML;detectores.py, um detector por inciso;limiares.py, os limiares com a fonte;relatorio.py, o relatório em texto e JSON;reescrita.py, a reescrita por IA e o aceite dela;__main__.py, a linha de comando.linguagem_simples/lexicos/: os léxicos, uma entrada por linha, com a fonte.tests/: os testes;tests/guias.pytraz os trechos dos guias, com a página e o hash, etests/test_readme.pyroda os exemplos deste README.vitrine/: a página do "Experimente no navegador". O GitHub Actions a monta e publica a cada push que muda a biblioteca, a página ou os testes (.github/workflows/pages.yml).docs/: o GIF do começo deste README, o histórico da precisão emedir_reescrita.py, que refaz a medida da reescrita.CHANGELOG.md: o que mudou em cada versão.
Compatibilidade
Versão semântica. Só mudam numa versão 2: as linhas que o relatório em texto já tem, os campos do JSON e as opções da linha de comando. Numa 1.x podem entrar detector novo, linha nova no relatório em texto (como o resumo e a legenda do topo, na 1.10.0), campo novo no JSON e opção nova. As mensagens de erro podem mudar a qualquer versão. O que mudou em cada versão está no CHANGELOG.md.
Contribuir
Resultado diferente do esperado ou caso que falta? Abra uma issue pelo modelo "Resultado diferente do esperado", com texto inventado ou de página pública, sem dado de pessoa. Para mandar código, veja o CONTRIBUTING.md; a conversa segue o código de conduta.
Licença
MIT.
Metadata
Release files for linguagem-simples-br 1.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| linguagem_simples_br-1.10.0.tar.gz | 112.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| linguagem_simples_br-1.10.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 174.7 kB
Release files / linguagem_simples_br-1.10.0.tar.gz
| Download URL | linguagem_simples_br-1.10.0.tar.gz |
|---|---|
| Size | 112.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc78d6ea19d62c66120a2af72664f85513c1c629dff10568e4842cae731978d1
|
|
BLAKE2b-256 checksum How to use checksums |
9281425e4d35cd4972b729e6be3f6e366d2eb15d3e4da9a38a4d9ed37663ba4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / linguagem_simples_br-1.10.0-py3-none-any.whl
| Download URL | linguagem_simples_br-1.10.0-py3-none-any.whl |
|---|---|
| Size | 62.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e93495f3847cfe006ce89ede977cd79dd94871389d2dff2893a9c987e8beeb9a
|
|
BLAKE2b-256 checksum How to use checksums |
2c6fec748dcc09dbd88f59610e47b56963c086813b883d96d79af1f88ba299be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log