Generation
Generation
ชั้นการสร้าง (omr.generation) สร้างเทมเพลต — ต้นไม้ของการกำหนดค่าองค์ประกอบ — และเรนเดอร์เป็นภาพหน้ากระดาษพร้อมคำอธิบาย .omr ผ่าน OmrEngine.Generate().
ต้นไม้เทมเพลต
TemplateConfig คือรากของเอกสาร, มีวัตถุ PageConfig หนึ่งหรือหลายอัน. ทุกองค์ประกอบที่อยู่ใต้หน้าเป็นคลาสย่อยของ BaseConfig, มี Name และตัวแยก Type (ConfigType).
from omr.generation.config import TemplateConfig
from omr.generation.config.elements.parents import PageConfig
tpl = TemplateConfig()
tpl.Name = "quiz"
page = PageConfig()
page.Children = []
tpl.Children = [page]องค์ประกอบคำถาม
ChoiceBoxConfig— คำถามที่มีชุดฟองตัวเลือกคงที่ (ChoiceBoxAnswerConfig), รองรับการเลือกหลายตัวและการตรวจสอบความถูกต้องต่อคำถาม.AnswerSheetConfig— แมทริกซ์ฟองคำตอบแบบหมายเลขสำหรับแผ่นงานสไตล์สอบ.CheckBoxConfig— กลุ่มกล่องเปล่าที่มีป้ายกำกับซึ่งรับเครื่องหมายใด ๆ ได้ พร้อมเกณฑ์การเติมที่ปรับได้.GridConfig/CompositeGridConfig— เมทริกซ์ตัวเลขหรือสัญลักษณ์ที่กำหนดเองที่รวมเป็นค่าเดียว.
from omr.generation.config.elements import AnswerSheetConfig
sheet = AnswerSheetConfig()
sheet.Name = "answers"
sheet.AnswersCount = 4 # bubbles per question (e.g. A-D)
sheet.ElementsCount = 20 # number of questionsการตั้งค่าทั่วทั้งหน้า
GlobalPageSettings กำหนดค่าเริ่มต้นทั่วทั้งเอกสาร (ขนาดกระดาษ, การจัดแนว, ฟอนต์, ขนาดฟอง) ที่แต่ละองค์ประกอบสามารถเขียนทับได้. PaperSize และ Orientation สามารถนำเข้าโดยตรงจาก omr.generation.
from omr.generation import GlobalPageSettings, Orientation, PaperSize
settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.Verticalเค้าโครง, การล้น, และระบบการเขียน
BlockConfig เป็นกล่องที่มีกรอบและช่องว่าง; ContainerConfig จัดเรียงบล็อกลูกเป็นคอลัมน์หรือส่วนท้าย; PositionedBlockConfig วางลูกในพิกัดสัมบูรณ์. LongWordHandling, คลาสย่อยของ OverflowAction (Clip, NoClip, Wrap), และระบบการเขียน Arabic/Hebrew/Persian/Urdu/Bengali ทั้งหมดจะทำการพาร์สและตรวจสอบความถูกต้องอย่างถูกต้องสำหรับความละเอียด API กับพื้นผิว Aspose.OMR, แต่ยังไม่มีระบบใดได้รับการสนับสนุนโดยเอนจินการเรนเดอร์ของรุ่นนี้: พฤติกรรมการล้นยังไม่สามารถกำหนดค่าได้, และการเรนเดอร์เป็นแบบ LTR/Western-only เท่านั้น. ทั้งสองรายการถูกติดตามในแผนงานต้นทางว่า ยังไม่ได้ดำเนินการ.
DSL มาร์คอัป
ต้นไม้ขององค์ประกอบเดียวกันสามารถเขียนเป็นข้อความธรรมดาและส่งต่อโดยตรงไปยัง Generate().
from omr.api import OmrEngine
markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ตั้งค่าเริ่มต้นที่ใช้ร่วมกันครั้งเดียวบน
GlobalPageSettingsแทนการทำซ้ำในแต่ละองค์ประกอบ. - ใช้ markup DSL สำหรับการทำซ้ำอย่างรวดเร็ว; สลับไปใช้ code-first tree สำหรับการสร้างแบบโปรแกรม.
CompositeGridConfig.ExtraRowเพิ่มแถวนำของสัญลักษณ์ที่กำหนดเองโดยไม่เปลี่ยนColumnsCount.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | แก้ไข |
|---|---|---|
เนื้อหาไม่ได้ถูกตัดแม้จะตั้งค่า Overflow | เอนจินการเรนเดอร์ของรุ่นนี้ยังไม่รองรับ Overflow/LongWordHandling | ยังไม่พร้อมใช้งาน — ติดตามในแผนงานของ upstream |
SaveAsPdf() ทำให้เกิด NotImplementedError | การส่งออก PDF ยังไม่ได้ดำเนินการในรุ่นนี้ | ใช้ Save() สำหรับการส่งออก PNG |
FAQ
ฉันสามารถผสม markup DSL และการกำหนดค่า code-first ในเทมเพลตเดียวกันได้หรือไม่?
สองวิธีนี้เป็นวิธีทางเลือกในการสร้างต้นไม้ TemplateConfig เดียวกัน; Generate() ของรุ่นนี้รับได้ทั้งแหล่ง markup หรืออินสแตนซ์ TemplateConfig, ไม่ใช่การผสมในหนึ่งการเรียกใช้.
เทมเพลตหลายหน้าทำงานอย่างไร?
TemplateConfig.Children เก็บวัตถุ PageConfig หลายรายการ; GenerationResult.MultipageTemplateImages ส่งคืนภาพหนึ่งภาพต่อหน้า.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
TemplateConfig | รากของเอกสารที่มีหน้า PageConfig |
PageConfig | หนึ่งหน้าจริง |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | การกำหนดค่าขององค์ประกอบคำถาม |
BlockConfig / ContainerConfig / PositionedBlockConfig | คอนเทนเนอร์การจัดวาง |
GlobalPageSettings | ค่าตั้งต้นทั่วทั้งเอกสาร |