1. Produtos
  2.   OMR
  3.   Python
  4.   PyOMR
 
  

Detectar e Extrair Áreas Marcadas de Folhas Digitalizadas via Python

Motor OMR gratuito e de código aberto baseado em Python que suporta o processamento OMR. Ele suporta o processamento de Folhas OMR, detecção baseada em modelo e manipulação de formulários de múltiplas páginas, entre outros.

O que é a biblioteca PyOMR?

O Reconhecimento Óptico de Marcas (OMR) é uma tecnologia poderosa usada para capturar dados marcados manualmente em documentos como pesquisas, testes e cédulas. Embora existam soluções comerciais de OMR, desenvolvedores que buscam uma alternativa gratuita e de código aberto podem usar o PyOMR, uma biblioteca Python projetada para o processamento de OMR. Desenvolvido por pattyjogal, o PyOMR permite que desenvolvedores de software detectem bolhas marcadas em formulários digitalizados usando código Python simples e técnicas padrão de processamento de imagem. Ele suporta a detecção e extração de áreas marcadas de folhas escaneadas, o processamento de formulários de múltipla escolha, pesquisas e avaliações, bem como a personalização de modelos OMR para diversos casos de uso.

PyOMR é um motor OMR baseado em Python projetado para detectar marcas preenchidas em formulários pré-definidos, como folhas de teste de múltipla escolha ou respostas de pesquisas. Ele utiliza bibliotecas como OpenCV para processamento de imagens e fornece um sistema baseado em modelos para definir as regiões de marca esperadas na folha. Seja você um desenvolvedor de software construindo um sistema de avaliação, um professor automatizando avaliações de testes, ou uma organização coletando dados de pesquisas, o PyOMR permite integrar a funcionalidade OMR diretamente em seu aplicativo. Com uma abordagem baseada em modelos, detecção alimentada por OpenCV e total scriptabilidade, é uma escolha ideal para desenvolvedores que desejam criar ferramentas automatizadas de processamento de formulários sem depender de serviços de terceiros.

Previous Next

Começando com o PyOMR

A forma recomendada de instalar a biblioteca PyOMR é usando o GitHub. Por favor, use o comando a seguir para uma instalação tranquila

Instalar Biblioteca PyOMR via GitHub

 git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
 

Instalar Bibliotecas Compatíveis via GitHub

 pip install opencv-python numpy 

Você pode baixar a biblioteca diretamente do GitHub

Pré-processamento automático de imagens via Python

• A biblioteca de código aberto PyOMR inclui suporte completo para processamento automático de imagens em aplicações Python. A biblioteca inclui funções integradas para correção de inclinação (Deskewing) para corrigir digitalizações inclinadas, limiarização (Thresholding) para converter para preto e branco para melhor detecção de marcas e remoção de ruído para melhorar a precisão em digitalizações de baixa qualidade. Além disso, permite que a ferramenta lide com problemas comuns em formulários digitalizados, como inconsistências de iluminação, baixo contraste ou desalinhamento menor. O exemplo de código a seguir mostra como processar imagens em aplicações Python.

Como Processar Imagem dentro de Aplicativos Python?

from omr import omr_engine

# File paths
template_path = "config.json"
image_path = "answer_sheet.jpg"

# Run the OMR process
results = omr_engine.process_image(image_path, template_path)

# Output the results
for i, response in enumerate(results, 1):
    print(f"Q{i}: {response if response else 'No mark detected'}")

Detecção baseada em modelo via Python

PyOMR usa um modelo JSON para definir o layout da sua folha de respostas. Isso inclui o número de perguntas, número de opções por pergunta, posição inicial da primeira bolha, espaçamento entre linhas e colunas e dimensões das bolhas. Isso torna o sistema altamente flexível e reutilizável em diferentes layouts. Aqui está um exemplo simples mostrando como criar um modelo JSON para especificar as posições das bolhas usando a biblioteca Python.

Como Criar um Modelo JSON para especificar Posicionamentos de Bolhas & Carregá-lo via Python?

{
  "bubbles": [
    {"question": "Q1", "options": ["A", "B", "C", "D"], "coords": [100, 150, 30, 30]},
    {"question": "Q2", "options": ["A", "B", "C", "D"], "coords": [100, 200, 30, 30]}
  ],
  "reference_marks": [[50, 50], [500, 50], [50, 700]]
}
#Load template
omr.load_template("template.json")

Manipulação de formulários de várias páginas via Python

A biblioteca PyOMR inclui suporte para lidar com formulários de múltiplas páginas dentro de aplicações Python. Seja processando folhas de respostas de página única ou pesquisas de várias páginas, o PyOMR pode ser configurado para lidar com diferentes layouts. Recomenda‑se, para formulários de múltiplas páginas, processar cada página separadamente: o exemplo de código a seguir mostra como desenvolvedores de software podem lidar com formulários de múltiplas páginas dentro de aplicações Python.

Como Lidar com Formulários de Múltiplas Páginas via Biblioteca Python?

# for multi-page forms, process each page separately:

for page in omr.multi_page_scan("multi_page_form.pdf"):
    page.preprocess()
    answers = page.read_answers()
    print(answers)

Tratamento de ruído e pré-processamento

A biblioteca de código aberto PyOMR oferece suporte completo ao pré‑processamento de imagens e ao tratamento de ruído dentro de aplicações Python. A biblioteca inclui pré‑processamento de imagens, como conversão para escala de cinza, limiarização e detecção de contornos, para identificar marcas de forma confiável — mesmo com digitalizações ruidosas ou impressão imperfeita.

 Português