วิธีทำงานกับ API ใน Python
Aspose.OMR FOSS สำหรับ Python สาธารณะ API (omr.api) ถูกออกแบบให้มีขนาดเล็กโดยเจตนา: OmrEngine, TemplateProcessor, ImageCollection และ FormValidationLogic. คู่มือนี้แสดงว่าพวกมันทำงานร่วมกันอย่างไรในกระบวนการ generate-and-recognize workflow.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
from omr.api import OmrEngine, FormValidationLogicขั้นตอนที่ 3: สร้างและบันทึกเทมเพลต
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")ขั้นตอนที่ 4: โหลดเทมเพลตสำหรับการจดจำ
ใช้ FormValidationLogic.Exception แทนค่าเริ่มต้น Ignore หากคุณต้องการให้เกิดการละเมิดสำหรับคำถามที่ปิดการเลือกหลายตัวเลือกไว้ แทนที่จะถูกยอมรับโดยเงียบๆ.
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)ขั้นตอนที่ 5: จดจำและส่งออก
result = processor.Recognize("scan.png")
print(result.GetCsv())ปัญหาทั่วไปและวิธีแก้
FormValidationLogic.Exception ไม่เคยทำให้เกิดข้อยกเว้น แม้ในคำถามที่มีหลายตัวเลือก. การตรวจสอบจะทำงานเฉพาะสำหรับคำถามที่มี Multiselect ปิดใช้งาน; GlobalPageSettings.Multiselect ค่าเริ่มต้นคือเปิดใช้งาน ดังนั้นตรวจสอบให้แน่ใจว่าได้ปิดอย่างชัดเจนสำหรับคำถามที่คุณคาดว่าจะเป็นแบบเลือกเดียว.
ฉันต้องการจดจำการสแกนหลายรายการพร้อมกัน. ใช้ TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) แทนการเรียก Recognize() ในลูป.
ฉันได้ลงทะเบียนภาพภายใต้ชื่อที่ถูกใช้ไปแล้ว. ImageCollection.Add ไม่เขียนทับ — ตรวจสอบ Contains(name) แรก หรือใช้ชื่อที่ไม่ซ้ำกันสำหรับแต่ละภาพ.
คำถามที่พบบ่อย
OmrEngine ปลอดภัยที่จะใช้ซ้ำในหลายเทมเพลตหรือไม่?
ใช่ — มันไม่มีสถานะ.
ฉันจะทำการให้คะแนนผลลัพธ์ใหม่ด้วยเกณฑ์ที่แตกต่างโดยไม่ต้องสแกนใหม่ได้อย่างไร?
เรียก TemplateProcessor.Recalculate(result, recognitionThreshold).
ฉันจะฝังภาพในหน่วยความจำลงในมาร์คอัปแทนการอ่านจากดิสก์ได้อย่างไร?
ลงทะเบียนกับ ImageCollection.Add(name, image_bytes) แล้วอ้างอิงในมาร์คอัปเป็น ?image=<name>.