ภาพรวมของคุณลักษณะ
ภาพรวมคุณลักษณะ
Aspose.OMR FOSS for Python ครอบคลุมสามชั้น: การออกแบบเทมเพลต, การสร้างภาพหน้าและคำอธิบายจากมัน, และการจดจำเครื่องหมายจากสำเนาที่สแกน.
การออกแบบเทมเพลต
เทมเพลตคือโครงสร้างต้นไม้ของการกำหนดค่าองค์ประกอบที่มีรากอยู่ที่ TemplateConfig. องค์ประกอบคำถามรวมถึง ChoiceBoxConfig (ฟองออปชันคงที่), CheckBoxConfig (กล่องทำเครื่องหมายแบบใดก็ได้), GridConfig และ CompositeGridConfig (เมทริกซ์ตัวเลข/สัญลักษณ์ที่รวมเป็นค่าหนึ่ง), และ AnswerSheetConfig (เมทริกซ์ฟองคำตอบที่มีหมายเลข). ตัวจัดวาง (BlockConfig, ContainerConfig, PositionedBlockConfig) ควบคุมขอบ, คอลัมน์, และการกำหนดตำแหน่งแบบคงที่. ต้นไม้เดียวกันสามารถสร้างจาก DSL ข้อความมาร์กอัปแบบกะทัดรัดแทนอ็อบเจ็กต์ Python.
Generation
OmrEngine.Generate() แปลงเทมเพลตเป็น GenerationResult — ภาพหน้าพร้อม .omr descriptor JSON. MemoryGenerationResult เปิดเผยผลลัพธ์เดียวกันเป็นสตรีมในหน่วยความจำผ่าน GetImages()/GetOmr() สำหรับผู้เรียกที่ไม่ต้องการสัมผัสไฟล์ระบบ.
Recognition
TemplateProcessor.Recognize() อ่านภาพสแกนหนึ่งภาพเทียบกับแม่แบบที่สร้างขึ้นจากนั้น. RecognizeFolder() ทำการประมวลผลเป็นชุดบนทุกภาพในโฟลเดอร์. Recalculate() ทำการให้คะแนนใหม่กับผลลัพธ์ที่ได้รับการจดจำแล้วโดยใช้เกณฑ์ต่างกันโดยไม่ต้องอ่านภาพต้นฉบับใหม่. การแก้ไขการเอียงใช้เครื่องหมายอ้างอิงที่มุม (ReferencePointsSettings).
การส่งออกผลลัพธ์
RecognitionResult ส่งออกเป็น CSV, JSON, หรือ XML, โดยแต่ละแบบมีรูปแบบสตรีมในหน่วยความจำที่ตรงกัน (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
ระบบการเขียนและ Enum การล้น
Arabic, Hebrew, Persian, Urdu และ Bengali ระบบการเขียน (พร้อมกับ Western) และ enum LongWordHandling/OverflowAction มีอยู่และทำการพาร์สอย่างถูกต้องสำหรับความแม่นยำ API กับพื้นผิว Aspose.OMR. ทั้งสองยังไม่ได้รับการสนับสนุนโดยเอนจินการเรนเดอร์ของรุ่นนี้ — การเรนเดอร์เป็นแบบจากซ้ายไปขวา/ตะวันตกเท่านั้น, และพฤติกรรมการล้นยังไม่สามารถกำหนดค่าได้. ทั้งสองถูกติดตามในแผนงานอัปสตรีม.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ใช้ DSL การทำเครื่องหมายสำหรับฟอร์มง่าย; เปลี่ยนไปใช้โครงสร้าง
TemplateConfigแบบ code-first เมื่อคุณต้องการการควบคุมแบบโปรแกรมต่อการจัดตำแหน่งองค์ประกอบ. FormValidationLogic.Exceptionแสดงการละเมิดการเลือกหลายตัวเลือกโดยทันทีแทนที่จะละเลยโดยเงียบ, สำหรับคำถามที่ปิดการเลือกหลายตัวเลือก.- ควรเลือกใช้
RecognizeFolder()แทนการวนลูปRecognize()ด้วยตนเองเมื่อประมวลผลชุดสแกน. - เรียก
Recalculate()แทนการสแกนใหม่เมื่อคุณต้องการลองค่าเกณฑ์การจำแนกที่ต่างออกไป.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | การแก้ไข |
|---|---|---|
SaveAsPdf() ทำให้เกิด NotImplementedError | การส่งออก PDF ยังไม่ได้รับการดำเนินการในรุ่นนี้ | ใช้ Save() เพื่อส่งออก PNG, หรือส่งออกผลการจดจำเป็น CSV/JSON/XML |
| คำตอบหลายตัวเลือกที่ไม่ได้รับอนุญาตจะถูกยอมรับโดยไม่มีการแจ้งเตือน | ค่าเริ่มต้น FormValidationLogic.Ignore ไม่ทำให้เกิดข้อยกเว้นเมื่อมีการละเมิด | ส่ง FormValidationLogic.Exception ไปยัง GetTemplateProcessor() และตรวจสอบให้แน่ใจว่า Multiselect ของคำถามถูกปิดการใช้งาน |
FAQ
ไลบรารีต้องการ GUI หรือฮาร์ดแวร์ OMR ภายนอกหรือไม่?
ไม่. มันทำงานทั้งหมดจากไฟล์ภาพ (สแกนหรือรูปถ่าย) โดยใช้ numpy, opencv-python และ Pillow.
ฉันสามารถสร้าง PDF ของเทมเพลตได้หรือไม่?
ไม่ได้ในรุ่นนี้ — GenerationResult.SaveAsPdf() และ MemoryGenerationResult.GetPDF() ทั้งสองจะทำให้เกิด NotImplementedError. ใช้ผลลัพธ์ PNG จาก Save()/GetImages() แทน.
ฉันจะประมวลผลแบบฟอร์มที่สแกนหลายใบพร้อมกันอย่างไร?
ใช้ TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) เพื่อจดจำภาพทุกภาพในโฟลเดอร์ด้วยหนึ่งคำสั่งเดียว.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
OmrEngine.Generate | เรนเดอร์เทมเพลตเป็นภาพหน้า + ตัวอธิบาย .omr |
OmrEngine.GetTemplateProcessor | โหลดตัวอธิบาย .omr เพื่อการจดจำ |
TemplateProcessor.Recognize | จดจำภาพสแกนหนึ่งภาพ |
TemplateProcessor.RecognizeFolder | จดจำรูปภาพทั้งหมดในโฟลเดอร์ |
TemplateProcessor.Recalculate | ให้คะแนนผลลัพธ์ใหม่ด้วยเกณฑ์ใหม่ |
RecognitionResult.GetCsv / GetJson / GetXml | ส่งออกผลลัพธ์การจดจำ |