วิธีทำงานกับ API ใน Python

วิธีทำงานกับ 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>.

ดูเพิ่มเติม

 ภาษาไทย