Przegląd funkcji
Przegląd funkcji
Aspose.OMR FOSS dla Python obejmuje trzy warstwy: projektowanie szablonu, generowanie obrazu strony i deskryptora z niego oraz rozpoznawanie znaków ze zeskanowanej kopii.
Projektowanie szablonu
Szablon jest drzewem konfiguracji elementów z korzeniem w TemplateConfig. Elementy pytań obejmują ChoiceBoxConfig (stałe bąbelki opcji), CheckBoxConfig (checkboxy dowolnego znaku), GridConfig i CompositeGridConfig (macierze cyfr/symboli scalone w jedną wartość) oraz AnswerSheetConfig (numerowane macierze bąbelków odpowiedzi). Kontenery układu (BlockConfig, ContainerConfig, PositionedBlockConfig) kontrolują krawędzie, kolumny i pozycjonowanie bezwzględne. To samo drzewo może być zbudowane z kompaktowego DSL tekstowo-markup zamiast obiektów Python.
Generation
OmrEngine.Generate() renderuje szablon do GenerationResult — obrazu strony plus deskryptora .omr JSON. MemoryGenerationResult udostępnia ten sam wynik jako strumienie w pamięci poprzez GetImages()/GetOmr() dla wywołujących, którzy nie chcą mieć kontaktu z systemem plików.
Recognition
TemplateProcessor.Recognize() odczytuje jeden zeskanowany obraz względem szablonu, z którego został utworzony. RecognizeFolder() wykonuje to w partiach dla każdego obrazu w folderze. Recalculate() ponownie ocenia już rozpoznany wynik z innym progiem, nie wczytując ponownie obrazu źródłowego. Korekcja odchylenia (de-skew) używa znaków odniesienia w narożnikach (ReferencePointsSettings).
Eksport wyników
RecognitionResult eksportuje do CSV, JSON lub XML, każdy z odpowiadającą wariantą strumienia w pamięci (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enumy systemu pisma i przepełnienia
Arabic, Hebrew, Persian, Urdu i Bengali systemy pisma (wraz z Western), oraz enumy LongWordHandling/OverflowAction, są dostępne i poprawnie parsują przy zachowaniu dokładności API na powierzchni Aspose.OMR. Żaden z nich nie jest jeszcze obsługiwany przez silnik renderujący tej wersji — renderowanie jest jedynie LTR/zachodnie, a zachowanie przy przepełnieniu nie jest jeszcze konfigurowalne. Oba elementy są śledzone w roadmapie upstream.
Wskazówki i najlepsze praktyki
- Używaj DSL-u znaczników dla prostych formularzy; przełącz się na drzewo
TemplateConfigtypu code-first, gdy potrzebujesz programistycznej kontroli nad rozmieszczeniem elementów. FormValidationLogic.Exceptionzgłasza naruszenia wielokrotnego wyboru natychmiast, zamiast cicho je ignorować, w przypadku pytań z wyłączonym wielokrotnym wyborem.- Preferuj
RecognizeFolder()zamiast samodzielnego pętlowania wywołańRecognize()podczas przetwarzania partii skanów. - Wywołaj
Recalculate()zamiast ponownego skanowania, gdy potrzebujesz jedynie wypróbować inny próg rozpoznawania.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
SaveAsPdf() generuje NotImplementedError | Eksport do PDF nie jest zaimplementowany w tej wersji | Użyj Save() do wyjścia PNG, lub wyeksportuj wyniki rozpoznawania jako CSV/JSON/XML |
| Niedozwolona odpowiedź wielokrotnego wyboru jest cicho akceptowana | Domyślne FormValidationLogic.Ignore nie podnosi wyjątku przy naruszeniach | Przekaż FormValidationLogic.Exception do GetTemplateProcessor(), i upewnij się, że Multiselect pytania jest wyłączone |
FAQ
Czy biblioteka wymaga jakiegokolwiek interfejsu GUI lub zewnętrznego sprzętu OMR?
Nie. Działa w pełni na plikach graficznych (skanach lub zdjęciach) przy użyciu numpy, opencv-python i Pillow.
Czy mogę wygenerować PDF szablonu?
Nie w tej wersji — GenerationResult.SaveAsPdf() i MemoryGenerationResult.GetPDF() wywołują NotImplementedError. Użyj wyjścia PNG z Save()/GetImages() zamiast tego.
Jak przetworzyć wiele zeskanowanych formularzy jednocześnie?
Użyj TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold), aby rozpoznać każdy obraz w folderze jednym wywołaniem.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
OmrEngine.Generate | Renderuje szablon do obrazu strony + .omr descriptor |
OmrEngine.GetTemplateProcessor | Ładuje .omr descriptor do rozpoznawania |
TemplateProcessor.Recognize | Rozpoznaje jeden zeskanowany obraz |
TemplateProcessor.RecognizeFolder | Rozpoznaje każdy obraz w folderze |
TemplateProcessor.Recalculate | Ponownie ocenia wynik z nowym progiem |
RecognitionResult.GetCsv / GetJson / GetXml | Eksportuje wyniki rozpoznawania |