Nhận dạng dấu hiệu quang học (OMR) thường được sử dụng để kiểm tra khảo sát, bảng câu hỏi và bài kiểm tra trắc nghiệm. Đó là một cách nhanh chóng và chính xác để xử lý các biểu mẫu. Trong bài viết này, bạn sẽ học cách tạo các mẫu OMR và kiểm tra các phiếu trả lời đã điền bằng Java.

API Java để tạo mẫu OMR và thực hiện thao tác OMR

Aspose.OMR dành cho Java là một API nhận dạng dấu quang học có thể thực hiện các hoạt động OMR trên PNG, GIF, JPEG, TIFF, vv hình ảnh. API cũng hỗ trợ tạo các mẫu OMR. Bạn có thể tải xuống API trực tiếp từ phần tải xuống hoặc cài đặt nó bằng cách sử dụng cấu hình Maven sau.

<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <name>Aspose Java API</name>
        <url>http://repository.aspose.com/repo/</url>
    </repository>
</repositories>
<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-omr</artifactId>
	<version>19.12</version>
	<classifier>jdk6</classifier>
</dependency>

<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-omr</artifactId>
	<version>19.12</version>
	<classifier>javadoc</classifier>
</dependency>

Tạo Mẫu OMR và Hình ảnh Bảng Trả lời bằng Java

Trong phần này, bạn sẽ học cách tạo tệp mẫu OMR và hình ảnh trang trả lời bằng cách sử dụng đánh dấu văn bản đơn giản. Chúng tôi sẽ lưu trữ đánh dấu văn bản trong tệp TXT và sử dụng nó trong mã Java để tạo mẫu OMR. Dưới đây là đánh dấu văn bản mà chúng tôi sẽ sử dụng trong ví dụ này để tạo mẫu OMR.

?text=Name__________________________________ Date____________

?grid=ID
	sections_count=8
#What is Aspose.OMR main function?
	() OCR() Capture human-marked data
	() There is no main function() Enhance images
#Can Aspose.OMR process not only scans, but also photos?
	() Yes, indeed!() No
#Aspose.OMR is available on any platform, because it is:
	() Cross-platform code() Cloud service
#Aspose.OMR works with any kind of OMR forms: tests, exams, questionnaires, surveys, etc.
	() Yes, indeed!() No
#Excellent recognition results can be achieved only for filled bubbles at least for:
	() 40%() 60%() 75%() 98%
#Do you have to mark up every question on the page?
	(Yes) Yes, that will help a lot! (No) No
#Rate your preference from 0 to 9 with "0" being preference towards performance
and "9" being preference towards flexibility.
	(0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
#I found aspose omr to be a useful tool. (5 - strongly agree, 1 - strongly disagree)
	(5) (4) (3) (2) (1)

?text= Answer sheet section
?answer_sheet=MainQuestions
	elements_count=10
	columns_count=5

?text=Sign________________________________

Bây giờ chúng ta đã sẵn sàng đánh dấu văn bản, chúng ta sẽ làm theo các bước dưới đây để tạo mẫu OMR.

Mã mẫu sau đây cho biết cách tạo mẫu OMR bằng cách sử dụng đánh dấu văn bản với Java.

// Đường dẫn thư mục nguồn và đầu ra
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Tạo một phiên bản của lớp OmrEngine
OmrEngine engine = new OmrEngine();

// Tạo mẫu bằng cách sử dụng đánh dấu văn bản
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Kiểm tra trong trường hợp có lỗi
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Lưu kết quả tạo: hình ảnh và mẫu .omr
res.save(outputDirectory, "Grid");

Đoạn mã trên sẽ tạo tệp mẫu OMR và hình ảnh của phiếu trả lời. Sau đây là hình ảnh của phiếu trả lời được tạo.

Hình ảnh của phiếu trả lời được tạo bởi mã mẫu

Hình ảnh của phiếu trả lời được tạo bởi mã mẫu

Thực hiện Thao tác OMR trên Trang tính Trả lời Bong bóng bằng Java

Sau khi bạn đã thu thập các câu trả lời trên phiếu trả lời đã tạo, bạn có thể chụp hình ảnh của họ và sau đó thực hiện các thao tác OMR trên chúng. Trong ví dụ này, chúng tôi sẽ thực hiện thao tác OMR trên hai hình ảnh; đầu tiên được hiển thị bên dưới.

Sau đây là các bước để thực hiện thao tác OMR trên ảnh.

Đoạn mã mẫu sau đây cho thấy cách thực hiện thao tác OMR trên ảnh bằng Java.

// Đường dẫn thư mục nguồn và đầu ra
String sourceDirectory = "SourceDirectory\\OMR\\";
String outputDirectory = "OutputDirectory\\";

String TemplateName = "Sheet.omr";
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };

// Tạo một phiên bản của lớp OmrEngine
OmrEngine engine = new OmrEngine();

// Tải tệp mẫu
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Lặp lại các hình ảnh
for (int i = 0; i < UserImages.length; i++) {

    // Nhận dạng hình ảnh và nhận kết quả
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Xuất kết quả dưới dạng chuỗi csv
    String csvResult = result.getCsv();

    // Lưu csv vào thư mục đầu ra
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Sau đây là đầu ra CSV cho hình ảnh đầu tiên được tạo bởi mã trên.

Element Name,Value,
MainQuestions1,"A"
MainQuestions2,"B"
MainQuestions3,"D"
MainQuestions4,"C"
MainQuestions5,"C"
MainQuestions6,"A"
MainQuestions7,"B"
MainQuestions8,"B"
MainQuestions9,"C"
MainQuestions10,"B"
MainQuestions11,"D"
MainQuestions12,"A"
MainQuestions13,"C"
MainQuestions14,"B"
MainQuestions15,"D"
MainQuestions16,"A"
MainQuestions17,"C"
MainQuestions18,"B"
MainQuestions19,"A"
MainQuestions20,"A"
MainQuestions21,"A"
MainQuestions22,"C"
MainQuestions23,"D"
MainQuestions24,"B"
MainQuestions25,"A"
MainQuestions26,"C"
MainQuestions27,"B"
MainQuestions28,"D"
MainQuestions29,"C"
MainQuestions30,"A"
MainQuestions31,"C"
MainQuestions32,"B"
MainQuestions33,"D"
MainQuestions34,"A"
MainQuestions35,"C"
MainQuestions36,"B"
MainQuestions37,"D"
MainQuestions38,"C"
MainQuestions39,"B"
MainQuestions40,"A"
MainQuestions41,"D"
MainQuestions42,"C"
MainQuestions43,"B"
MainQuestions44,"A"
MainQuestions45,"C"
MainQuestions46,"B"
MainQuestions47,"D"
MainQuestions48,"C"
MainQuestions49,"A"
MainQuestions50,"C"
MainQuestions51,"B"
MainQuestions52,"D"
MainQuestions53,"B"
MainQuestions54,"C"
MainQuestions55,"B"
MainQuestions56,"A"
MainQuestions57,"C"
MainQuestions58,"B"
MainQuestions59,"D"
MainQuestions60,"B"
MainQuestions61,"A"
MainQuestions62,"C"
MainQuestions63,"B"
MainQuestions64,"D"
MainQuestions65,"C"
MainQuestions66,"B"
MainQuestions67,"A"
MainQuestions68,"C"
MainQuestions69,"B"
MainQuestions70,"D"
MainQuestions71,"C"
MainQuestions72,"B"
MainQuestions73,"B"
MainQuestions74,"A"
MainQuestions75,"C"
MainQuestions76,"B"
MainQuestions77,"D"
MainQuestions78,"D"
MainQuestions79,"C"
MainQuestions80,"B"
ID,"27860000" 

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách tạo mẫu OMR và hình ảnh bảng câu trả lời bằng Java. Hơn nữa, bạn đã học cách thực hiện các thao tác OMR trên hình ảnh và nhận được kết quả là CSV. Aspose.OMR dành cho Java là một API mạnh mẽ cho các tác vụ liên quan đến OMR của bạn mà bạn có thể khám phá chi tiết bằng cách truy cập tài liệu chính thức. Nếu bạn có bất kỳ câu hỏi nào liên quan đến bất kỳ khía cạnh nào của API, vui lòng liên hệ với chúng tôi tại diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm