Tổng quan tính năng

Tổng quan tính năng

Aspose.OMR FOSS cho Python bao gồm ba lớp: thiết kế mẫu, tạo hình ảnh trang và mô tả từ nó, và nhận dạng các dấu hiệu từ bản sao đã quét.


Thiết kế mẫu

Một mẫu là một cây cấu hình phần tử có gốc tại TemplateConfig. Các phần tử câu hỏi bao gồm ChoiceBoxConfig (bong bóng tùy chọn cố định), CheckBoxConfig (hộp kiểm đánh dấu bất kỳ), GridConfig và CompositeGridConfig (ma trận chữ số/ký hiệu được hợp nhất thành một giá trị), và AnswerSheetConfig (ma trận bong bóng câu trả lời có số thứ tự). Các container bố cục (BlockConfig, ContainerConfig, PositionedBlockConfig) kiểm soát viền, cột và vị trí tuyệt đối. Cây tương tự có thể được xây dựng từ một DSL đánh dấu văn bản gọn nhẹ thay vì các đối tượng Python.

Generation

OmrEngine.Generate() chuyển đổi một mẫu thành GenerationResult — một hình ảnh trang cộng với một mô tả .omr JSON. MemoryGenerationResult cung cấp cùng một đầu ra dưới dạng luồng trong bộ nhớ thông qua GetImages()/GetOmr() cho các gọi hàm không muốn thao tác với hệ thống tệp.

Recognition

TemplateProcessor.Recognize() đọc một ảnh đã quét so với mẫu mà nó được tạo ra. RecognizeFolder() thực hiện việc này theo lô cho mọi ảnh trong một thư mục. Recalculate() 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. Việc chỉnh độ nghiêng sử dụng các dấu tham chiếu góc (ReferencePointsSettings).

Xuất kết quả

RecognitionResult xuất ra CSV, JSON, hoặc XML, mỗi dạng kèm theo một biến thể luồng trong bộ nhớ tương ứng (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).

Enum Hệ thống viết và Tràn

Arabic, Hebrew, Persian, Urdu, và Bengali hệ thống viết (cùng với Western), và các enum LongWordHandling/OverflowAction, đã có mặt và được phân tích đúng cho độ trung thực API với bề mặt Aspose.OMR. Tuy nhiên, cả hai chưa được hỗ trợ bởi engine render của phiên bản này — việc render chỉ hỗ trợ LTR/Western, và hành vi tràn chưa thể cấu hình. Cả hai đang được theo dõi trong lộ trình upstream.


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

  • Sử dụng DSL đánh dấu cho các biểu mẫu đơn giản; chuyển sang cây TemplateConfig theo hướng code-first khi bạn cần kiểm soát lập trình vị trí các phần tử.
  • FormValidationLogic.Exception hiển thị ngay các vi phạm đa chọn thay vì im lặng bỏ qua chúng, đối với các câu hỏi đã tắt đa chọn.
  • Ưu tiên RecognizeFolder() hơn việc tự lặp lại các cuộc gọi Recognize() khi xử lý một lô các bản quét.
  • Gọi Recalculate() thay vì quét lại khi bạn chỉ cần thử một ngưỡng nhận dạng khác.

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

Vấn đềNguyên nhânCách khắc phục
SaveAsPdf() gây ra NotImplementedErrorXuất PDF chưa được triển khai trong phiên bản nàySử dụng Save() để xuất PNG, hoặc xuất kết quả nhận dạng dưới dạng CSV/JSON/XML
Một đáp án đa chọn không được phép bị chấp nhận một cách âm thầmMặc định FormValidationLogic.Ignore không gây ra lỗi khi vi phạmChuyển FormValidationLogic.Exception sang GetTemplateProcessor(), và đảm bảo Multiselect của câu hỏi bị tắt

FAQ

Thư viện có yêu cầu bất kỳ giao diện người dùng nào hoặc phần cứng OMR bên ngoài không?

Không. Nó hoạt động hoàn toàn từ các tệp hình ảnh (bản quét hoặc ảnh) bằng cách sử dụng numpy, opencv-python và Pillow.

Tôi có thể tạo PDF của mẫu không?

Không có trong phiên bản này — GenerationResult.SaveAsPdf() và MemoryGenerationResult.GetPDF() đều gây ra NotImplementedError. Thay vào đó, hãy sử dụng đầu ra PNG từ Save()/GetImages().

Làm thế nào để tôi xử lý nhiều mẫu quét cùng một lúc?

Sử dụng TemplateProcessor.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.


API Reference Tóm tắt

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.RecognizeNhận dạng một hình ảnh đã quét
TemplateProcessor.RecognizeFolderNhận diện mọi hình ảnh trong một thư mục
TemplateProcessor.RecalculateTái tính điểm cho kết quả với ngưỡng mới
RecognitionResult.GetCsv / GetJson / GetXmlXuất kết quả nhận diện

Xem thêm

 Tiếng Việt