Het herkenningsmodel
Het Herkenningsmodel
omr.model definieert de vorm van een herkenningsresultaat: RecognitionResult en de IOmrElement interface.
RecognitionResult
TemplateProcessor.Recognize() retourneert een RecognitionResult. Het exposeert OmrElements (een lijst van herkende elementen), plus ImagePath, Images, PageName en TemplateName. Op het resultaatsniveau exporteren GetCsv(encoding), GetJson(encoding) en GetXml(encoding) het volledige resultaat; elk heeft een overeenkomende ...AsStream variant die een BytesIO retourneert.
from omr.api import OmrEngine, FormValidationLogic
engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")
print(result.GetJson())IOmrElement
Elke invoer in RecognitionResult.OmrElements implementeert IOmrElement: QuestionName en SortWeight identificeren het element, en GetAnswer() / GetCsv() lezen de herkende waarde.
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())Tips en Best Practices
- Lees
QuestionNameom een herkend element terug te koppelen aan de vraag waar het vandaan kwam, in plaats van te vertrouwen op de volgorde van de lijst. - Gebruik de exportvarianten van
...AsStream(GetCsvAsStream,GetJsonAsStream,GetXmlAsStream) bij het wegschrijven van resultaten naar een niet-bestandssysteemdoel. TemplateProcessor.Recalculate()werkt een bestaandeRecognitionResultin place bij — leesOmrElementsdaarna opnieuw in plaats van referenties van vóór de herberekening te behouden.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Het antwoord van een element is een lege string | De herkenningsdrempel was te streng voor dat teken, of Recalculate() werd aangeroepen met een onrealistisch strenge waarde | Verlaag de drempel, of geef -100 door aan Recognize() voor automatische kalibratie |
FAQ
Wat retourneert GetAnswer() voor een niet-gemarkeerde vraag?
Een lege tekenreeks — dezelfde representatie die Recalculate() produceert wanneer een strengere drempel elke markering afwijst.
Kan ik alleen enkele elementen exporteren in plaats van het volledige resultaat?
RecognitionResult’s GetCsv/GetJson/GetXml exporteert het volledige resultaat; filter OmrElements eerst zelf als je een subset nodig hebt.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
RecognitionResult.OmrElements | Lijst met herkende IOmrElement-vermeldingen |
RecognitionResult.GetCsv / GetJson / GetXml | Exporteer het volledige resultaat |
IOmrElement.GetAnswer / GetCsv | Per-element herkende waarde |