Come lavorare con il API in Python

Come lavorare con il API in Python

Aspose.OMR FOSS per il Python pubblico API (omr.api) è intenzionalmente piccolo: OmrEngine, TemplateProcessor, ImageCollection e FormValidationLogic. Questa guida mostra come si integrano in un flusso di lavoro di generazione e riconoscimento.

Guida passo-passo

Passo 1: Installa il pacchetto

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.')"

Passo 2: Importa le classi richieste

from omr.api import OmrEngine, FormValidationLogic

Passo 3: Genera e salva un modello

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")

Passo 4: Carica il modello per il riconoscimento

Passa FormValidationLogic.Exception invece del valore predefinito Ignore se desideri che venga generata una violazione per le domande con la selezione multipla disabilitata, invece di essere accettate silenziosamente.

processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)

Passo 5: Riconosci ed esporta

result = processor.Recognize("scan.png")
print(result.GetCsv())

Problemi comuni e soluzioni

FormValidationLogic.Exception non solleva mai, anche su una domanda con più marcature. Il controllo si attiva solo per una domanda con Multiselect disabilitato; GlobalPageSettings.Multiselect è abilitato per impostazione predefinita, quindi verifica che sia disattivato esplicitamente per la domanda che ti aspetti sia a selezione singola.

Devo riconoscere molte scansioni contemporaneamente. Usa TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) invece di chiamare Recognize() in un ciclo.

Ho registrato un’immagine con un nome già utilizzato. ImageCollection.Add non sovrascrive — controlla Contains(name) prima, o usa un nome univoco per immagine.

Domande frequenti

È OmrEngine sicuro da riutilizzare in più template?

Sì — è senza stato.

Come posso ricalcolare il punteggio di un risultato con una soglia diversa senza rieseguire la scansione?

Chiama TemplateProcessor.Recalculate(result, recognitionThreshold).

Come posso incorporare un’immagine in memoria nel markup invece di leggerla dal disco?

Registralo con ImageCollection.Add(name, image_bytes), poi riferiscilo nel markup come ?image=<name>.

Vedi anche

 Italiano