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

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

Aspose.OMR FOSS สำหรับ Python สร้างแบบฟอร์ม OMR จากต้นไม้ของการกำหนดค่าองค์ประกอบที่มีรากอยู่ที่ TemplateConfig, แล้วเรนเดอร์เป็นภาพหน้าและ descriptor .omr ด้วย OmrEngine.Generate(). คู่มือนี้จะพาคุณผ่านการสร้างเทมเพลตแผ่นคำตอบอย่างง่ายและการสร้างมัน.

คู่มือแบบทีละขั้นตอน

ขั้นตอนที่ 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
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
from omr.generation.config.elements import AnswerSheetConfig

ขั้นตอนที่ 3: สร้างต้นไม้เทมเพลต

สร้างราก TemplateConfig, PageConfig สำหรับหน้าเดียว, และ AnswerSheetConfig สำหรับเมทริกซ์คำตอบแบบมีหมายเลข 20 คำถาม (แต่ละคำถามมี 4 ฟองตัวเลือก).

tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4    # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20  # number of questions
page.Children = [sheet]
tpl.Children = [page]

ขั้นตอนที่ 4: สร้างและบันทึก

engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz")   # -> out/quiz.png + out/quiz.omr

ปัญหาทั่วไปและวิธีแก้

หน้าที่สร้างขึ้นของฉันดูว่างเปล่า. ตรวจสอบว่าแต่ละองค์ประกอบถูกเพิ่มเข้าไปในพาเรนท์จริงหรือไม่ Children รายการ — องค์ประกอบที่ถูกสร้างขึ้นแต่ไม่เคยถูกต่อเติมเข้าไปในหน้าของ (หรือคอนเทนเนอร์ของ) Children จะไม่ถูกแสดงผลเลย.

ฉันต้องการ PDF แทน PNG. ไม่มีให้ในรุ่นนี้ — GenerationResult.SaveAsPdf() raises NotImplementedError. ใช้ผลลัพธ์ PNG จาก Save() และแปลงภายนอกหากต้องการ PDF.

ฉันตั้งค่า Overflow และไม่มีอะไรเปลี่ยนแปลง. เอนจินการเรนเดอร์ของรุ่นนี้ยังไม่รองรับ Overflow/LongWordHandling — enums แยกวิเคราะห์และตรวจสอบความถูกต้องได้อย่างถูกต้อง, แต่พฤติกรรม overflow ยังไม่สามารถกำหนดค่าได้. สิ่งนี้ถูกติดตามในแผนงานต้นทาง.

คำถามที่พบบ่อย

ฉันสามารถสร้างเทมเพลตเดียวกันโดยไม่ใช้วัตถุ Python ได้หรือไม่?

ใช่ — DSL มาร์คอัปสร้างโครงสร้างต้นไม้ขององค์ประกอบเดียวกันจากข้อความธรรมดา ซึ่งถูกส่งตรงไปยัง OmrEngine.Generate().

ฉันจะสร้างเทมเพลตหลายหน้าได้อย่างไร?

เพิ่ม PageConfig มากกว่าหนึ่งรายการลงใน TemplateConfig.Children; GenerationResult.MultipageTemplateImages จะคืนค่าภาพหนึ่งภาพต่อหน้า.

เอนจินจะเก็บสถานะระหว่างการเรียก Generate() หรือไม่?

ไม่ — OmrEngine ไม่มีสถานะ; การเรียกแต่ละครั้งเป็นอิสระกัน.

ดูเพิ่มเติม

 ภาษาไทย