ภาพรวมของคุณลักษณะ

ภาพรวมของคุณลักษณะ

ภาพรวมคุณลักษณะ

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ส่งออกผลลัพธ์การจดจำ

ดูเพิ่มเติม

 ภาษาไทย