Prezentare generală a funcționalităților
Prezentare generală a caracteristicilor
Aspose.OMR FOSS pentru Python acoperă trei niveluri: proiectarea unui șablon, generarea unei imagini de pagină și a descriptorului din aceasta și recunoașterea marcajelor dintr-o copie scanată.
Proiectare șablon
Un șablon este un arbore de configurații de elemente cu rădăcina la TemplateConfig. Elemente de tip întrebare includ ChoiceBoxConfig (bule de opțiune fixe), CheckBoxConfig (casete de selectare cu marcaj liber), GridConfig și CompositeGridConfig (matrice de cifre/simboluri fuzionate într-o singură valoare) și AnswerSheetConfig (matrice numerotate de bule de răspuns). Containerele de aspect (BlockConfig, ContainerConfig, PositionedBlockConfig) controlează marginile, coloanele și poziționarea absolută. Același arbore poate fi construit dintr-un DSL compact de marcare textuală în loc de obiecte Python.
Generation
OmrEngine.Generate() redă un șablon într-un GenerationResult — o imagine de pagină plus un descriptor .omr JSON. MemoryGenerationResult expune aceeași ieșire ca fluxuri în memorie prin GetImages()/GetOmr() pentru apelanții care nu doresc să interacționeze cu sistemul de fișiere.
Recognition
TemplateProcessor.Recognize() citește o imagine scanată comparativ cu șablonul din care a fost creată. RecognizeFolder() procesează în lot aceasta pentru fiecare imagine dintr-un folder. Recalculate() recalculează un rezultat deja recunoscut cu un prag diferit fără a re-citi imaginea sursă. Corecția de de-skew folosește marcajele de referință din colț (ReferencePointsSettings).
Export de rezultate
RecognitionResult exportă în CSV, JSON, sau XML, fiecare având o variantă de flux în memorie corespunzătoare (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enumerații pentru Sistemul de Scriere și Overflow
Arabic, Hebrew, Persian, Urdu și Bengali sisteme de scriere (împreună cu Western), și enumerațiile LongWordHandling/OverflowAction, sunt prezente și sunt analizate corect pentru fidelitatea API cu suprafața Aspose.OMR. Niciuna dintre ele nu este încă respectată de motorul de redare al acestei versiuni — redarea este doar LTR/Western, iar comportamentul de overflow nu este încă configurabil. Ambele sunt urmărite pe upstream roadmap.
Sfaturi și cele mai bune practici
- Folosiți DSL-ul de markup pentru formulare simple; treceți la arborele
TemplateConfigorientat pe cod atunci când aveți nevoie de control programatic asupra plasării elementelor. FormValidationLogic.Exceptionafișează imediat încălcările de multi-select în loc să le ignore silențios, pentru întrebările cu multi-select dezactivat.- Preferă
RecognizeFolder()în loc de a face bucle cu apeluriRecognize()atunci când procesezi un lot de scanări. - Apelează
Recalculate()în loc să re-scanezi când trebuie doar să încerci un prag de recunoaștere diferit.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
SaveAsPdf() ridică NotImplementedError | Exportul PDF nu este implementat în această versiune | Folosiți Save() pentru ieșire PNG, sau exportați rezultatele recunoașterii ca CSV/JSON/XML |
| Un răspuns multi-select nepermis este acceptat în tăcere | Valoarea implicită FormValidationLogic.Ignore nu ridică excepții la încălcări | Transmite FormValidationLogic.Exception către GetTemplateProcessor() și asigură-te că Multiselect întrebării este dezactivat |
FAQ
Necesită biblioteca vreun GUI sau hardware OMR extern?
Nu. Funcționează complet din fișiere de imagine (scanări sau fotografii) utilizând numpy, opencv-python și Pillow.
Pot genera un PDF al șablonului?
Nu în această versiune — GenerationResult.SaveAsPdf() și MemoryGenerationResult.GetPDF() generează ambele NotImplementedError. Folosește în schimb ieșirea PNG de la Save()/GetImages().
Cum pot procesa multe formulare scanate simultan?
Folosește TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) pentru a recunoaște fiecare imagine dintr-un folder într-un singur apel.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
OmrEngine.Generate | Redă un șablon într-o imagine de pagină + descriptor .omr |
OmrEngine.GetTemplateProcessor | Încarcă un descriptor .omr pentru recunoaștere |
TemplateProcessor.Recognize | Recunoaște o imagine scanată |
TemplateProcessor.RecognizeFolder | Recunoaște fiecare imagine dintr-un folder |
TemplateProcessor.Recalculate | Recalculează scorul unui rezultat cu un nou prag |
RecognitionResult.GetCsv / GetJson / GetXml | Exportă rezultatele de recunoaștere |