Como trabalhar com o modelo OMR em Python

Como trabalhar com o modelo OMR em Python

Um RecognitionResult contém um IOmrElement por pergunta reconhecida. Este guia mostra como ler e exportar respostas reconhecidas.

Guia passo a passo

Etapa 1: Instalar o pacote

git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .
python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"

Etapa 2: Importar as classes necessárias

from omr.api import OmrEngine, FormValidationLogic

Etapa 3: Reconhecer uma digitalização

engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")

Etapa 4: Ler Respostas Individuais

Cada entrada em result.OmrElements implementa IOmrElement: QuestionName identifica a pergunta, e GetAnswer() devolve seu valor reconhecido (uma string vazia se nada ultrapassar o limiar de reconhecimento).

for element in result.OmrElements:
    print(element.QuestionName, element.GetAnswer())

Etapa 5: Exportar o Resultado Completo

print(result.GetCsv())      # also GetJson() / GetXml()

Problemas Comuns e Correções

GetAnswer() retorna uma string vazia para uma marca que eu consigo ver claramente na digital. O limiar de reconhecimento pode estar muito restrito para a escuridão dessa marca. Passe -100 to Recognize() para auto-calibração, ou chame Recalculate() com um limiar mais flexível no resultado existente.

Preciso dos dados brutos da resposta em um formato diferente de CSV/JSON/XML. Iterate result.OmrElements você mesmo e construa a estrutura que precisar a partir de cada IOmrElementde GetAnswer()/GetCsv().

Perguntas Frequentes

O Recalculate() relê a imagem digitalizada?

Não — ele recalcula a pontuação do resultado já reconhecido no local com um novo limiar.

A que QuestionName corresponde?

O Name que você definiu no elemento do modelo (por exemplo, AnswerSheetConfig.Name ou ChoiceBoxConfig.Name) contra o qual a marca desse elemento foi reconhecida.

Posso exportar apenas alguns elementos em vez do resultado completo?

Os métodos de exportação do RecognitionResult cobrem o resultado completo; filtre OmrElements você mesmo primeiro se precisar de um subconjunto.

Ver também

 Português