Jak pracować z API w Python

Jak pracować z API w Python

Aspose.OMR FOSS dla publicznego API Python (omr.api) jest celowo mały: OmrEngine, TemplateProcessor, ImageCollection i FormValidationLogic. Ten przewodnik pokazuje, jak pasują razem w przepływie pracy generuj-i-rozpoznawaj.

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, FormValidationLogic

Krok 3: Wygeneruj i zapisz szablon

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

Krok 4: Załaduj szablon do rozpoznawania

Użyj FormValidationLogic.Exception zamiast domyślnego Ignore, jeśli chcesz, aby naruszenie było zgłaszane dla pytań, w których wyłączono wielokrotny wybór, zamiast być cicho akceptowane.

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

Krok 5: Rozpoznaj i wyeksportuj

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

Typowe problemy i rozwiązania

FormValidationLogic.Exception nigdy nie zgłasza, nawet przy pytaniu wielokrotnego zaznaczenia. Sprawdzenie uruchamia się tylko dla pytania z Multiselect disabled; GlobalPageSettings.Multiselect domyślnie jest włączone, więc upewnij się, że jest wyraźnie wyłączone dla pytania, które ma być jednokrotnego wyboru.

Potrzebuję rozpoznać wiele skanów jednocześnie. Użyj TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) zamiast wywoływać Recognize() w pętli.

Zarejestrowałem obraz pod nazwą, która już była użyta. ImageCollection.Add nie nadpisuje — sprawdź Contains(name) najpierw, albo użyj unikalnej nazwy dla każdego obrazu.

Najczęściej zadawane pytania

Czy OmrEngine jest bezpieczne do ponownego użycia w wielu szablonach?

Tak — jest bezstanowy.

Jak ponownie ocenić wynik z innym progiem bez ponownego skanowania?

Wywołaj TemplateProcessor.Recalculate(result, recognitionThreshold).

Jak osadzić obraz w pamięci w znacznikach zamiast odczytywać go z dysku?

Zarejestruj go w ImageCollection.Add(name, image_bytes), a następnie odwołaj się do niego w znacznikach jako ?image=<name>.

Zobacz także

 Polski