Cum să lucraţi cu API în Python

Cum să lucraţi cu API în Python

Aspose.OMR FOSS pentru Python’s public API (omr.api) este intenționat mic: OmrEngine, TemplateProcessor, ImageCollection și FormValidationLogic. Acest ghid arată cum se potrivesc într-un flux de lucru de tip generează-și-recunoaște.

Ghid pas cu pas

Pasul 1: Instalează pachetul

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

Pasul 2: Importă clasele necesare

from omr.api import OmrEngine, FormValidationLogic

Pasul 3: Generează și salvează un șablon

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

Pasul 4: Încarcă șablonul pentru recunoaștere

Folosește FormValidationLogic.Exception în locul valorii implicite Ignore dacă dorești ca o încălcare să fie semnalată pentru întrebările care au dezactivată selecția multiplă, în loc să fie acceptate în tăcere.

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

Pasul 5: Recunoaște și exportă

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

Probleme comune și remedii

FormValidationLogic.Exception nu ridică niciodată, chiar și la o întrebare cu marcaje multiple. Verificarea se declanșează doar pentru o întrebare cu Multiselect dezactivat; GlobalPageSettings.Multiselect este activat implicit, așa că confirmă că este dezactivat explicit pentru întrebarea pe care o aștepți să fie de tip selectare unică.

Trebuie să recunosc multe scanări simultan. Folosește TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) în loc de a apela Recognize() într-o buclă.

Am înregistrat o imagine sub un nume care era deja utilizat. ImageCollection.Add nu suprascrie — verificați Contains(name) mai întâi, sau folosiți un nume unic pentru fiecare imagine.

Întrebări frecvente

Este OmrEngine sigur să fie reutilizat în mai multe șabloane?

Da — este fără stare.

Cum pot recalcula scorul unui rezultat cu un prag diferit fără a re-scana?

Apelează TemplateProcessor.Recalculate(result, recognitionThreshold).

Cum pot încorpora o imagine în memorie în markup în loc să o citesc de pe disc?

Înregistreaz-o cu ImageCollection.Add(name, image_bytes), apoi referențiază-o în markup ca ?image=<name>.

Vezi și:

 Română