Rdzeń API

Rdzeń API

omr.api jest małą powierzchnią, z którą większość kodu wchodzi w interakcję: OmrEngine, TemplateProcessor, ImageCollection oraz wyliczenie FormValidationLogic.


OmrEngine

OmrEngine jest stateless factory. Generate(source, settings) przyjmuje źródło markup-DSL lub drzewo TemplateConfig i zwraca GenerationResult. GetTemplateProcessor(templateSource, validationLogic) ładuje wcześniej zapisany .omr ścieżkę pliku i zwraca powiązany TemplateProcessor; źródło strumienia zamiast tego przyjmuje argument kodowania tekstu przed logiką walidacji.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

Kontroluje zachowanie silnika, gdy reguła walidacji szablonu — np. ograniczenie wielokrotnego wyboru — zostaje złamana podczas rozpoznawania: Ignore (domyślnie) cicho akceptuje naruszenie, Exception podnosi wyjątek, a undefined jest zerową wartością wyliczenia. Sprawdzenie dotyczy tylko pytań, których Multiselect jest wyłączone; GlobalPageSettings.Multiselect domyślnie jest włączone.

TemplateProcessor

Recognize(source, recognitionThreshold) rozpoznaje jeden zeskanowany obraz. RecognizeFolder(folderPath, recognitionThreshold) rozpoznaje każdy obraz w folderze w jednym wywołaniu. Recalculate(result, recognitionThreshold) ponownie ocenia już rozpoznany wynik przy innym progu, bez ponownego odczytywania obrazu źródłowego.

ImageCollection

Mapowanie tylko do dopisywania, rozróżniające wielkość liter, z nazwy na surowe bajty obrazu. Add(name, image) rejestruje obraz, Contains(name) sprawdza, czy nazwa jest już zarejestrowana, Count podaje, ile jest zarejestrowanych, a as_dict() zwraca mapę bazową. Znaczniki mogą odwoływać się do zarejestrowanego obrazu po nazwie (?image=<name>) zamiast ścieżki systemu plików.

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

Wskazówki i najlepsze praktyki

  • Przekaż FormValidationLogic.Exception podczas rozwoju, aby natychmiast ujawnić naruszenia wielokrotnego wyboru zamiast cicho je ignorować (działa tylko dla pytań z wyłączonym Multiselect).
  • Recalculate() jest tańszy niż ponowne skanowanie — użyj go, gdy trzeba zmienić tylko próg rozpoznawania.
  • Nazwy ImageCollection rozróżniają wielkość liter; rejestracja tej samej nazwy dwa razy powoduje błąd zamiast cichego nadpisania.
  • Generate() zgłasza większość błędów przez GenerationResult.ErrorCode/ErrorMessage zamiast podnosić wyjątek — sprawdź ErrorCode przed zaufaniem wygenerowanemu wynikowi.

Częste problemy

ProblemPrzyczynaNaprawa
Rejestrowanie obrazu dwukrotnie wywołujeImageCollection.Add nie zezwala na powielone nazwySprawdź najpierw Contains(name), albo użyj unikalnej nazwy dla każdego obrazu
Niedozwolona odpowiedź wielokrotnego wyboru jest przyjmowana bez ostrzeżeniaDomyślny FormValidationLogic.Ignore nie wywołujePrzekaż FormValidationLogic.Exception do GetTemplateProcessor() i zapewnij, że Multiselect pytania jest wyłączone

FAQ

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

Tak — jest bezstanowe; każde wywołanie Generate()/GetTemplateProcessor() jest niezależne.

Jak rozpoznać cały folder skanów jednocześnie?

Wywołaj TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) zamiast samodzielnie iterować Recognize().


Podsumowanie API Reference

Klasa/MetodaOpis
OmrEngine.GenerateRenderuje szablon do obrazu strony + deskryptor .omr
OmrEngine.GetTemplateProcessorŁaduje deskryptor .omr do rozpoznawania
TemplateProcessor.Recognize / RecognizeFolder / RecalculatePunkty wejścia rozpoznawania
ImageCollection.Add / Contains / as_dictRejestr obrazów w pamięci dla znaczników
FormValidationLogicEnum zachowania naruszenia walidacji

Zobacz także

 Polski