Visão Geral dos Recursos
Visão Geral dos Recursos
Aspose.OMR FOSS para Python cobre três camadas: projetar um modelo, gerar uma imagem de página e descritor a partir dele, e reconhecer marcas de uma cópia digitalizada.
Design de Modelo
Um modelo é uma árvore de configurações de elementos enraizada em TemplateConfig. Os elementos de pergunta incluem ChoiceBoxConfig (bolhas de opção fixa), CheckBoxConfig (caixas de seleção de marca livre), GridConfig e CompositeGridConfig (matrizes de dígitos/símbolos mescladas em um único valor), e AnswerSheetConfig (matrizes numeradas de bolhas de resposta). Contêineres de layout (BlockConfig, ContainerConfig, PositionedBlockConfig) controlam bordas, colunas e posicionamento absoluto. A mesma árvore pode ser construída a partir de um DSL compacto de marcação de texto em vez de objetos Python.
Generation
OmrEngine.Generate() renderiza um modelo em um GenerationResult — uma imagem de página mais um descritor .omr JSON. MemoryGenerationResult expõe a mesma saída como streams em memória via GetImages()/GetOmr() para chamadores que não desejam tocar no sistema de arquivos.
Recognition
TemplateProcessor.Recognize() lê uma imagem escaneada em relação ao modelo a partir do qual foi criado. RecognizeFolder() processa isso em lote para cada imagem em uma pasta. Recalculate() recalcula a pontuação de um resultado já reconhecido com um limiar diferente sem reler a imagem de origem. A correção de desalinhamento usa marcas de referência nos cantos (ReferencePointsSettings).
Exportação de Resultados
RecognitionResult exporta para CSV, JSON, ou XML, cada um com uma variante de fluxo em memória correspondente (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enums de Sistema de Escrita e de Overflow
Arabic, Hebrew, Persian, Urdu e Bengali sistemas de escrita (junto com Western), e os enums LongWordHandling/OverflowAction, estão presentes e são analisados corretamente para fidelidade API com a superfície Aspose.OMR. Nenhum deles é ainda respeitado pelo motor de renderização desta versão — a renderização é apenas LTR/Ocidental, e o comportamento de overflow ainda não é configurável. Ambos estão rastreados no roadmap upstream.
Dicas e Melhores Práticas
- Use a DSL de marcação para formulários simples; troque para a árvore
TemplateConfigorientada a código quando precisar de controle programático sobre a colocação dos elementos. FormValidationLogic.Exceptionexpõe violações de seleção múltipla imediatamente em vez de ignorá-las silenciosamente, para perguntas com seleção múltipla desativada.- Prefira
RecognizeFolder()em vez de fazer chamadasRecognize()em loop ao processar um lote de digitalizações. - Chame
Recalculate()em vez de re-digitalizar quando você só precisa testar um limiar de reconhecimento diferente.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
SaveAsPdf() levanta NotImplementedError | A exportação de PDF não está implementada nesta versão | Use Save() para saída PNG, ou exporte os resultados de reconhecimento como CSV/JSON/XML |
| Uma resposta de seleção múltipla não permitida é aceita silenciosamente | O FormValidationLogic.Ignore padrão não levanta em violações | Passe FormValidationLogic.Exception para GetTemplateProcessor() e assegure que o Multiselect da pergunta esteja desativado |
FAQ
A biblioteca requer alguma GUI ou hardware OMR externo?
Não. Ela funciona totalmente a partir de arquivos de imagem (digitalizações ou fotos) usando numpy, opencv-python e Pillow.
Posso gerar um PDF do modelo?
Não nesta versão — GenerationResult.SaveAsPdf() e MemoryGenerationResult.GetPDF() ambos geram NotImplementedError. Use a saída PNG de Save()/GetImages() em vez disso.
Como faço para processar muitos formulários digitalizados de uma vez?
Use TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) para reconhecer cada imagem em uma pasta em uma única chamada.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
OmrEngine.Generate | Renderiza um modelo em uma imagem de página + descritor .omr |
OmrEngine.GetTemplateProcessor | Carrega um descritor .omr para reconhecimento |
TemplateProcessor.Recognize | Reconhece uma imagem escaneada |
TemplateProcessor.RecognizeFolder | Reconhece todas as imagens em uma pasta |
TemplateProcessor.Recalculate | Reavalia um resultado com um novo limiar |
RecognitionResult.GetCsv / GetJson / GetXml | Exporta resultados de reconhecimento |