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 questionsCà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.VerticalBố 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
GlobalPageSettingsthay 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.ExtraRowthêm một hàng đầu tiên của các ký hiệu tùy chỉnh mà không thay đổiColumnsCount.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắ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/LongWordHandling | Chưa khả dụng — đang được theo dõi trên lộ trình upstream |
SaveAsPdf() gây ra NotImplementedError | Xuất PDF chưa được triển khai trong bản phát hành này | Sử 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ức | Mô tả |
|---|---|
TemplateConfig | Thư mục gốc chứa PageConfig trang |
PageConfig | Một trang vật lý |
ChoiceBoxConfig / CheckBoxConfig / GridConfig / CompositeGridConfig / AnswerSheetConfig | Cấu hình phần tử câu hỏi |
BlockConfig / ContainerConfig / PositionedBlockConfig | Các container bố cục |
GlobalPageSettings | Mặc định toàn tài liệu |