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, FormValidationLogicEtapa 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.