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ค่าตั้งต้นทั่วทั้งเอกสาร

ดูเพิ่มเติม

 ภาษาไทย