Jak pracować z modelem OMR w Python
RecognitionResult przechowuje jedną IOmrElement na rozpoznane pytanie. Ten przewodnik pokazuje, jak odczytać i wyeksportować rozpoznane odpowiedzi.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
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.')"Krok 2: Zaimportuj wymagane klasy
from omr.api import OmrEngine, FormValidationLogicKrok 3: Rozpoznaj skan
engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")Krok 4: Odczytaj poszczególne odpowiedzi
Każdy wpis w result.OmrElements implementuje IOmrElement: QuestionName identyfikuje pytanie, a GetAnswer() zwraca jego rozpoznaną wartość (pusty ciąg, jeśli nic nie przekroczyło progu rozpoznawania).
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())Krok 5: Wyeksportuj cały wynik
print(result.GetCsv()) # also GetJson() / GetXml()Typowe problemy i rozwiązania
GetAnswer() zwraca pusty ciąg znaków dla znacznika, który wyraźnie widzę na skanie. Próg rozpoznawania może być zbyt rygorystyczny dla ciemności tego znacznika. Pomiń -100 to Recognize() do automatycznej kalibracji lub wywołaj Recalculate() z luźniejszym progiem na istniejącym wyniku.
Potrzebuję surowych danych odpowiedzi w formacie innym niż CSV/JSON/XML. Iterate result.OmrElements sam i zbuduj dowolną strukturę, której potrzebujesz z każdego IOmrElement’s GetAnswer()/GetCsv().
Najczęściej zadawane pytania
Czy Recalculate() ponownie odczytuje zeskanowany obraz?
Nie — ponownie ocenia już rozpoznany wynik w miejscu, używając nowego progu.
Do czego odnosi się QuestionName?
To Name, które ustawiłeś na elemencie szablonu (np. AnswerSheetConfig.Name lub ChoiceBoxConfig.Name), względem którego rozpoznano znacznik tego elementu.
Czy mogę wyeksportować tylko niektóre elementy zamiast całego wyniku?
Metody eksportu RecognitionResult obejmują pełny wynik; najpierw samodzielnie przefiltruj OmrElements, jeśli potrzebujesz podzbioru.