Cách làm việc với Generation trong Python

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 AnswerSheetConfig

Bướ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.omr

Cá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.

Xem thêm

 Tiếng Việt