Hoe te werken met de API in Python

Hoe te werken met de API in Python

Aspose.OMR FOSS voor de publieke API van Python (omr.api) is opzettelijk klein: OmrEngine, TemplateProcessor, ImageCollection en FormValidationLogic. Deze gids laat zien hoe ze samen passen in een genereren-en-herkennen workflow.

Stap-voor-stap gids

Stap 1: Installeer het pakket

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

Stap 2: Importeer vereiste klassen

from omr.api import OmrEngine, FormValidationLogic

Stap 3: Genereer en sla een sjabloon op

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

Stap 4: Laad de sjabloon voor herkenning

Geef FormValidationLogic.Exception door in plaats van de standaard Ignore als je wilt dat een overtreding wordt gemeld voor vragen waarbij multi-select is uitgeschakeld, in plaats van stilletjes geaccepteerd te worden.

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

Stap 5: Herkennen en exporteren

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

Veelvoorkomende problemen en oplossingen

FormValidationLogic.Exception wordt nooit opgegooid, zelfs niet bij een vraag met meerdere markeringen. De controle wordt alleen geactiveerd voor een vraag met Multiselect uitgeschakeld; GlobalPageSettings.Multiselect staat standaard op ingeschakeld, dus bevestig dat het expliciet uitgeschakeld is voor de vraag waarvan je verwacht dat deze enkelvoudig te selecteren is.

Ik moet veel scans tegelijk herkennen. Gebruik TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) in plaats van aan te roepen Recognize() in een lus.

Ik registreerde een afbeelding onder een naam die al in gebruik was. ImageCollection.Add schrijft niet over — controleer Contains(name) eerst, of gebruik een unieke naam per afbeelding.

Veelgestelde vragen

Is OmrEngine veilig om opnieuw te gebruiken in meerdere sjablonen?

Ja — het is stateless.

Hoe kan ik een resultaat opnieuw scoren met een andere drempel zonder opnieuw te scannen?

Roep TemplateProcessor.Recalculate(result, recognitionThreshold) aan.

Hoe kan ik een in-memory-afbeelding in markup inbedden in plaats van deze van schijf te lezen?

Registreer het bij ImageCollection.Add(name, image_bytes), en verwijs er vervolgens in markup naar als ?image=<name>.

Zie ook

 Nederlands