Cách làm việc với mô hình OMR trong Python
Một RecognitionResult chứa một IOmrElement cho mỗi câu hỏi được nhận dạng. Hướng dẫn này chỉ cách đọc và xuất câu trả lời đã nhận dạng.
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, FormValidationLogicBước 3: Nhận dạng một bản quét
engine = OmrEngine()
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")Bước 4: Đọc các câu trả lời riêng lẻ
Mỗi mục trong result.OmrElements triển khai IOmrElement: QuestionName xác định câu hỏi, và GetAnswer() trả về giá trị đã nhận dạng của nó (một chuỗi rỗng nếu không có gì vượt qua ngưỡng nhận dạng).
for element in result.OmrElements:
print(element.QuestionName, element.GetAnswer())Bước 5: Xuất toàn bộ kết quả
print(result.GetCsv()) # also GetJson() / GetXml()Các vấn đề thường gặp và cách khắc phục
GetAnswer() trả về một chuỗi rỗng cho một dấu mà tôi có thể nhìn rõ trên bản quét. Ngưỡng nhận dạng có thể quá nghiêm ngặt đối với độ tối của dấu đó. Pass -100 to Recognize() cho tự động hiệu chuẩn, hoặc gọi Recalculate() với ngưỡng lỏng hơn trên kết quả hiện có.
Tôi cần dữ liệu câu trả lời thô ở định dạng khác với CSV/JSON/XML. Iterate result.OmrElements bạn và xây dựng bất kỳ cấu trúc nào bạn cần từ mỗi IOmrElement’s GetAnswer()/GetCsv().
Câu hỏi thường gặp
Liệu Recalculate() có đọc lại hình ảnh đã quét không?
Không — nó sẽ tính lại điểm cho kết quả đã được nhận dạng sẵn tại chỗ với ngưỡng mới.
QuestionName tương ứng với gì?
Giá trị Name bạn đặt trên phần tử mẫu (ví dụ: AnswerSheetConfig.Name hoặc ChoiceBoxConfig.Name) là dấu hiệu mà phần tử đó đã được nhận dạng dựa trên.
Tôi có thể xuất chỉ một số phần tử thay vì toàn bộ kết quả không?
Các phương pháp xuất của RecognitionResult bao gồm toàn bộ kết quả; hãy tự lọc OmrElements trước nếu bạn cần một tập con.