Lõi API

Lõi API

omr.api là bề mặt nhỏ mà hầu hết mã tương tác với: OmrEngine, TemplateProcessor, ImageCollection, và enum FormValidationLogic.


OmrEngine

OmrEngine là một nhà máy không trạng thái. Generate(source, settings) chấp nhận một nguồn markup-DSL hoặc một cây TemplateConfig và trả về một GenerationResult. GetTemplateProcessor(templateSource, validationLogic) tải một đường dẫn tệp .omr đã được lưu trước đó và trả về một TemplateProcessor đã ràng buộc; nguồn stream thay vào đó nhận một đối số mã hoá văn bản trước logic xác thực.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

Kiểm soát hành vi của engine khi một quy tắc xác thực mẫu — chẳng hạn như ràng buộc đa lựa chọn — bị vi phạm trong quá trình nhận dạng: Ignore (mặc định) im lặng chấp nhận vi phạm, Exception gây lỗi, và undefined là giá trị zero của enum. Kiểm tra chỉ áp dụng cho các câu hỏi mà Multiselect bị tắt; GlobalPageSettings.Multiselect mặc định là bật.

TemplateProcessor

Recognize(source, recognitionThreshold) nhận dạng một hình ảnh đã quét. RecognizeFolder(folderPath, recognitionThreshold) nhận dạng mọi hình ảnh trong một thư mục trong một lần gọi. Recalculate(result, recognitionThreshold) tính lại điểm cho kết quả đã nhận dạng với ngưỡng khác, mà không cần đọc lại ảnh nguồn.

ImageCollection

Một bản đồ chỉ thêm, phân biệt chữ hoa chữ thường từ tên tới byte ảnh thô. Add(name, image) đăng ký một ảnh, Contains(name) kiểm tra xem tên đã được đăng ký chưa, Count báo cáo số lượng đã đăng ký, và as_dict() trả về bản đồ nền. Đánh dấu có thể tham chiếu tới ảnh đã đăng ký bằng tên (?image=<name>) thay vì đường dẫn hệ thống tệp.

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

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

  • Cung cấp FormValidationLogic.Exception trong quá trình phát triển để hiển thị ngay các vi phạm đa chọn thay vì bỏ qua âm thầm (chỉ kích hoạt cho các câu hỏi có Multiselect bị tắt).
  • Recalculate() rẻ hơn việc quét lại — hãy sử dụng nó khi chỉ cần thay đổi ngưỡng nhận dạng.
  • Tên ImageCollection phân biệt chữ hoa chữ thường; đăng ký cùng một tên hai lần sẽ gây lỗi thay vì ghi đè âm thầm.
  • Generate() báo cáo hầu hết các lỗi qua GenerationResult.ErrorCode/ErrorMessage thay vì ném lỗi — hãy kiểm tra ErrorCode trước khi tin tưởng vào kết quả được tạo.

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

Vấn đềNguyên nhânCách khắc phục
Đăng ký một hình ảnh hai lần sẽ gây raImageCollection.Add không cho phép tên trùng lặpKiểm tra Contains(name) trước, hoặc sử dụng tên duy nhất cho mỗi hình ảnh
Một đáp án đa lựa chọn không được phép được chấp nhận một cách âm thầmMặc định FormValidationLogic.Ignore không gây raChuyển FormValidationLogic.Exception tới GetTemplateProcessor(), và đảm bảo Multiselect của câu hỏi bị vô hiệu hoá

FAQ

Liệu OmrEngine có an toàn khi tái sử dụng cho nhiều mẫu không?

Có — nó không trạng thái; mỗi lần gọi Generate()/GetTemplateProcessor() là độc lập.

Làm sao tôi có thể nhận diện toàn bộ thư mục các bản quét cùng một lúc?

Gọi TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) thay vì tự lặp Recognize().


Tóm tắt API Reference

Lớp/Phương thứcMô tả
OmrEngine.GenerateKết xuất một mẫu thành hình ảnh trang + mô tả .omr
OmrEngine.GetTemplateProcessorTải mô tả .omr để nhận dạng
TemplateProcessor.Recognize / RecognizeFolder / RecalculateCác điểm vào nhận dạng
ImageCollection.Add / Contains / as_dictKho đăng ký hình ảnh trong bộ nhớ cho markup
FormValidationLogicEnum hành vi vi phạm xác thực

Xem thêm

 Tiếng Việt