Model rozpoznawania
Model Rozpoznawania
omr.model definiuje kształt wyniku rozpoznawania: RecognitionResult oraz interfejs IOmrElement.
RecognitionResult
TemplateProcessor.Recognize() zwraca RecognitionResult. Udostępnia OmrElements (listę rozpoznanych elementów), a także ImagePath, Images, PageName i TemplateName. Na poziomie wyniku, GetCsv(encoding), GetJson(encoding) i GetXml(encoding) eksportują cały wynik; każdy ma odpowiadającą mu wariant ...AsStream zwracający BytesIO.
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
Każdy wpis w RecognitionResult.OmrElements implementuje IOmrElement: QuestionName i SortWeight identyfikują element, a GetAnswer() / GetCsv() odczytują jego rozpoznaną wartość.
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())Wskazówki i najlepsze praktyki
- Przeczytaj
QuestionName, aby dopasować rozpoznany element do pytania, z którego pochodzi, zamiast polegać na kolejności listy. - Użyj wariantów eksportu
...AsStream(GetCsvAsStream,GetJsonAsStream,GetXmlAsStream) przy zapisywaniu wyników do miejsca docelowego nie będącego systemem plików. TemplateProcessor.Recalculate()aktualizuje istniejącyRecognitionResultw miejscu — odczytaj ponownieOmrElementspóźniej, zamiast zachowywać odwołania sprzed przeliczenia.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Odpowiedź elementu jest pustym ciągiem znaków | Próg rozpoznawania był zbyt surowy dla tego znaku, lub Recalculate() został wywołany z niemożliwie surową wartością | Obniż próg, lub przekaż -100 do Recognize() w celu automatycznej kalibracji |
FAQ
Co GetAnswer() zwraca dla nieoznaczonego pytania?
Pusty ciąg znaków — ta sama reprezentacja, którą Recalculate() generuje, gdy surowszy próg odrzuca wszystkie oznaczenia.
Czy mogę wyeksportować tylko niektóre elementy zamiast całego wyniku?
RecognitionResult’s GetCsv/GetJson/GetXml eksportuje pełny wynik; najpierw samodzielnie przefiltruj OmrElements, jeśli potrzebujesz podzbioru.
Podsumowanie API Reference
| Klasa/Metoda | Opis |
|---|---|
RecognitionResult.OmrElements | Lista rozpoznanych wpisów IOmrElement |
RecognitionResult.GetCsv / GetJson / GetXml | Wyeksportuj pełny wynik |
IOmrElement.GetAnswer / GetCsv | Rozpoznana wartość per-elementowa |