Cách làm việc với Generation trong Python
Aspose.OMR FOSS cho Python xây dựng một mẫu OMR từ cây cấu hình phần tử có gốc là TemplateConfig, sau đó render nó thành hình ảnh trang và mô tả .omr với OmrEngine.Generate(). Hướng dẫn này sẽ đi qua quá trình tạo một mẫu phiếu trả lời đơn giản và sinh nó.
Hướng dẫn từng bước
Bước 1: Cài đặt gói
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.')"Bước 2: Nhập các lớp cần thiết
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 AnswerSheetConfigBước 3: Xây dựng cây mẫu
Tạo một TemplateConfig gốc, một PageConfig cho trang đơn, và một AnswerSheetConfig cho ma trận trả lời có số thứ tự 20 câu hỏi (4 ô lựa chọn cho mỗi câu hỏi).
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]Bước 4: Tạo và Lưu
engine = OmrEngine()
gen = engine.Generate(tpl)
gen.Save("out", "quiz") # -> out/quiz.png + out/quiz.omrCác Vấn Đề Thường Gặp và Giải Pháp
Trang tôi tạo ra trông trống. Kiểm tra rằng mỗi phần tử thực sự được thêm vào của cha Children danh sách — một phần tử được tạo ra nhưng không bao giờ được nối vào trang (hoặc container) Children không bao giờ được hiển thị.
Tôi cần một PDF thay vì PNG. Không có trong phiên bản này — GenerationResult.SaveAsPdf() raises NotImplementedError. Sử dụng đầu ra PNG từ Save() và chuyển đổi bên ngoài nếu cần một PDF.
Tôi đặt Overflow và không có gì thay đổi. Engine render của bản phát hành này chưa hỗ trợ Overflow/LongWordHandling — các enum được phân tích và xác thực đúng, nhưng hành vi tràn vẫn chưa có khả năng cấu hình. Điều này được theo dõi trên lộ trình upstream.
Câu Hỏi Thường Gặp
Tôi có thể xây dựng cùng mẫu mà không có các đối tượng Python không?
Có — DSL đánh dấu xây dựng cùng cây phần tử từ văn bản thuần, được truyền trực tiếp tới OmrEngine.Generate().
Làm sao tôi có thể tạo mẫu đa trang?
Thêm nhiều hơn một PageConfig vào TemplateConfig.Children; GenerationResult.MultipageTemplateImages trả về một hình ảnh cho mỗi trang.
Engine có giữ trạng thái giữa các lần gọi Generate() không?
Không — OmrEngine không có trạng thái; mỗi lần gọi là độc lập.