Gabaritus Script - SCRIPT SDR: O Gabarito
SCRIPT SDR: O Gabarito

O que é gabaritus script e como ele funciona na prática

Um gabaritus script é basicamente um arquivo de texto simples com comandos em Python que automatiza a correção de provas objetivas. Você aponta para uma imagem ou PDF da folha de respostas, o script identifica as bolinhas preenchidas e compara com o gabarito oficial. O resultado sai em segundos, não em horas. Muita gente confunde isso com um sistema pronto. Não é. É uma automação de nível baixo que exige algum ajuste fino dependendo do tamanho da sua prova, da qualidade do scan e de quantas questões você vai corrigir por vez. Se você vai corrigir uma banca inteira com folhas mal impressas, o script sozinho não vai te salvar. Ele precisa ser calibrado.

O que é gabaritus script e por que usar

O nome "gabaritus" vem de gabarito, claro. A maioria dos scripts desse tipo usa bibliotecas como OpenCV, pytesseract ou até mesmo Pillow para detectar áreas preenchidas em imagens binárias ou coloridas. O fluxo básico é: capturar a imagem da folha, converter para preto e branco, detectar os contornos das alternativas, verificar qual delas tem preenchimento e montar o resultado final em formato JSON, CSV ou planilha. Eu pessoalmente comecei a usar porque precisava corrigir provas com mais de 500 alunos e levar cerca de três horas só para ler e comparar bolinhas. Com o script configurado direito, esse tempo caiu para algo em torno de doze minutos. Não é mágica, é diferença entre fazer algo manual e fazer algo programado.

Como montar um gabaritus script do zero

Vou mostrar o caminho mais direto. Você vai precisar de Python instalado, preferably 3.8 ou superior, e de três pacotes principais: open-cv, pytesseract e pandas. O tesseract precisa estar instalado no seu sistema operacional também, não basta só o pacote Python. No Ubuntu ou Debian é `sudo apt install tesseract-ocr`. No macOS, `brew install tesseract`. No Windows, você baixa o instalador separado no site do projeto. Depois de instalar as dependências, o script precisa saber onde estão os gabaritos. Cada alternativa da sua prova tem uma posição fixa na folha. O ideal é marcar essas posições uma vez, num arquivo de configuração separado. Assim, quando a prova mudar, você só atualiza o gabarito, não o código inteiro.

Aqui vai um exemplo mínimo de como fica a lógica principal: Você abre a imagem com OpenCV, converte para escala de cinza e aplica um limiar binário. Depois, encontra contornos nas regiões onde as bolinhas deveriam estar. Para cada posição esperada, você verifica se a densidade de pixels pretos dentro daquele contorno supera um limiar que você define. Se sim, marca aquela alternativa como selecionada. Repete para todas as questões e todas as folhas.

O limiar é o ponto onde a maioria das pessoas trava. Se colocar muito baixo, lê rabisco de rascunho como resposta. Se colocar muito alto, não detecta bolinha mal preenchida. Eu costumo começar com 0.35 da área total do contorno e ir ajustando conforme a qualidade da folha scanned. Às vezes chega a 0.42, às vezes desço para 0.28.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Problema real que eu encontrei e como resolvi

Certa vez eu tinha uma prova com 800 alunos, mas as folhas vinham de dois scanners diferentes, um em 300 DPI e outro em 200 DPI. O gabaritus script funcionava perfeitamente com os arquivos de 300 DPI e batia praticamente zero nos acertos dos de 200 DPI. A diferença era que os contornos das bolinhas ficavam menores e mais irregulares na resolução mais baixa, então o limiar padrão de 0.35 simplesmente não funcionava para aquelas imagens. A solução foi criar um parâmetro de escala dinâmica no script. Em vez de usar um limiar fixo, eu normalizava a área do contorno pelo tamanho esperado da bolinha naquela resolução específica. Basicamente, calculei a área média da bolinha usando as folhas de 300 DPI, fiz uma proporção para 200 DPI, e apliquei esse fator de correção no limiar. A precisão subiu de 61% para 97%. Isso não é teoria, foi o que rolou num dia de correção real.

Instalação e obtenção do gabaritus script

Não existe um pacote oficial centralizado no PyPI com esse nome. O gabaritus script mais usado circula em repositórios no GitHub e em fóruns de educação brasileiros. Procure por "gabaritus-script" ou "gabarito-automatico" no GitHub. Existem várias versões, algumas mais robustas que outras. Se você for curador ou coordenador pedagógico, provavelmente vai encontrar alguém na sua rede que já tem um repositário interno funcionando. Isso vale mais do que qualquer download genérico. Antes de rodar qualquer versão pronta, verifique o código. Eu já vi script por aí que salva dados em servidores externos sem avisar. É um arquivo que processa imagens de alunos. A privacidade importa. Sempre rode primeiro com uma amostra pequena de folhas para testar a integridade antes de jogar a correção completa pra rodar.

Pegadinhas e limitações que ninguém conta

O gabaritus script não funciona bem com folhas que tenham margens dobradas, rasgos ou manchas de café. A detecção de contornos depende de bordas relativamente limpas. Se a folha veio amassada de verdade, o melhor caminho é corrigir manualmente mesmo as questões afetadas. Eu já perdi dez minutos tentando forçar o script a ler uma folha dobrada e no final contei à mão, porque o resultado final estava mais errado do que se eu tivesse feito tudo manualmente desde o início. Outro ponto: o gabaritus script lida mal com questões em branco. Bolinha não marcada vira null, mas em algumas variações do código, null é tratado como erro em vez de como ausência de resposta. Verifique isso antes de confiar no resultado. Deixa o script marcar vazio como vazio e trate depois na hora de gerar a média final.

Se você tem provas com mais de cinquenta questões, o gabaritus script ainda funciona, mas o tempo de processamento começa a crescer linearmente. Uma folha com dez questões leva cerca de 0.3 segundo. Com cinquenta, passa para uns 1.5 segundo. Com duzentas questões, cheguei a observar tempos na casa de oito segundos por folha. Ainda é mais rápido que contar manualmente, mas não é tão insignificante assim se o volume for grande. Nesse caso, eu recomendo processar em paralelo, usando threads ou multiprocessing, dividindo o lote de imagens entre os núcleos da CPU.

Alternativas quando o gabaritus script não resolve

Se a sua situação envolve folhas manuscritas com caligrafia variada, assinatura no rodapé ou problemas de alinhamento graves, o gabaritus script vai te frustrar. Nesse caso, o caminho mais seguro é um sistema de reconhecimento óptico profissional ou, em última instância, correção manual mesmo. Nada substitui o olho humano quando a qualidade da entrada é ruim de verdade. Também vale considerar softwares prontos como o Q-GABARITO ou plataformas como o Google Forms quando o objetivo é coleta de respostas em tempo real, sem necessidade de digitalizar papel. O gabaritus script brilha quando você já tem o material físico digitalizado e quer virar o processo em lote. Não brilha como solução universal.

Se você decidir seguir com o gabaritus script, trate-o como uma ferramenta de apoio, não como solução definitiva. Teste, ajuste, valide com uma amostra e só então confie no resultado final. É assim que eu tenho feito nos últimos anos e continua funcionando bem para a maioria das situações normais de prova objetiva.