Generation

Generation

Lớp tạo (omr.generation) xây dựng một mẫu — một cây cấu hình phần tử — và hiển thị nó thành hình ảnh trang cùng với mô tả .omr thông qua OmrEngine.Generate().


Cây Mẫu

TemplateConfig là gốc tài liệu, chứa một hoặc nhiều đối tượng PageConfig. Mỗi phần tử dưới một trang là một lớp con của BaseConfig, mang theo một Name và một bộ phân biệt 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]

Các phần tử câu hỏi

  • ChoiceBoxConfig — một câu hỏi với một bộ các bong bóng tùy chọn cố định (ChoiceBoxAnswerConfig), hỗ trợ chọn đa lựa và xác thực riêng cho mỗi câu hỏi.
  • AnswerSheetConfig — một ma trận bong bóng trả lời có số thứ tự cho các tờ thi dạng kỳ thi.
  • CheckBoxConfig — một nhóm các ô trống có nhãn chấp nhận bất kỳ dấu nào, với ngưỡng độ đầy có thể điều chỉnh.
  • GridConfig / CompositeGridConfig — ma trận chữ số hoặc ký hiệu tùy chỉnh được hợp nhất thành một giá trị.
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

Cài đặt Toàn trang

GlobalPageSettings đặt các mặc định trên toàn tài liệu (kích thước giấy, hướng, phông chữ, kích thước bong bóng) mà các phần tử riêng lẻ có thể ghi đè. PaperSize và Orientation có thể nhập trực tiếp từ omr.generation.

from omr.generation import GlobalPageSettings, Orientation, PaperSize

settings = GlobalPageSettings()
settings.PaperSize = PaperSize.A4
settings.Orientation = Orientation.Vertical

Bố cục, Tràn và Hệ thống viết

BlockConfig là một hộp có viền và đệm; ContainerConfig sắp xếp các khối con thành các cột hoặc một chân trang; PositionedBlockConfig đặt các phần tử con tại các tọa độ tuyệt đối. LongWordHandling, các lớp con OverflowAction (Clip, NoClip, Wrap), và các hệ thống viết Arabic/Hebrew/Persian/Urdu/Bengali đều phân tích và xác thực đúng cho độ trung thực API với bề mặt Aspose.OMR, nhưng chưa có thứ nào được công cụ render của bản phát hành này hỗ trợ: hành vi tràn vẫn chưa có khả năng cấu hình, và việc render chỉ hỗ trợ LTR/Western. Cả hai đều được theo dõi trên lộ trình upstream như chưa được triển khai.

DSL Đánh dấu

Cây phần tử giống nhau có thể được viết dưới dạng văn bản thuần và truyền trực tiếp tới Generate().

from omr.api import OmrEngine

markup = ["?choicebox=Rate it", "(1) Poor (2) Fair (3) Good", "&choicebox"]
engine = OmrEngine()
result = engine.Generate(markup)

Mẹo và Thực hành tốt nhất

  • Đặt các mặc định chung một lần trên GlobalPageSettings thay vì lặp lại chúng trên mỗi phần tử.
  • Sử dụng markup DSL để lặp lại nhanh; chuyển sang cây code-first để tạo một cách lập trình.
  • CompositeGridConfig.ExtraRow thêm một hàng đầu tiên của các ký hiệu tùy chỉnh mà không thay đổi ColumnsCount.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
Nội dung không bị cắt dù đã đặt OverflowĐộng cơ render của bản phát hành này chưa tôn trọng Overflow/LongWordHandlingChưa khả dụng — đang được theo dõi trên lộ trình upstream
SaveAsPdf() gây ra NotImplementedErrorXuất PDF chưa được triển khai trong bản phát hành nàySử dụng Save() cho đầu ra PNG

FAQ

Tôi có thể kết hợp markup DSL và cấu hình code-first trong cùng một mẫu không?

Hai cách này là các phương pháp thay thế để xây dựng cùng một cây TemplateConfig; Generate() của phiên bản này chấp nhận một nguồn markup hoặc một thể hiện TemplateConfig, không phải là sự kết hợp trong một lần gọi.

Các mẫu đa trang hoạt động như thế nào?

TemplateConfig.Children chứa nhiều đối tượng PageConfig; GenerationResult.MultipageTemplateImages trả về một hình ảnh cho mỗi trang.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
TemplateConfigThư mục gốc chứa PageConfig trang
PageConfigMột trang vật lý
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfigCấu hình phần tử câu hỏi
BlockConfig / ContainerConfig / PositionedBlockConfigCác container bố cục
GlobalPageSettingsMặc định toàn tài liệu

Xem thêm

 Tiếng Việt