光学标记识别 (OMR) 经常用于检查调查、问卷和多项选择题试卷。这是一种快速准确的表格处理方式。在本文中,您将学习如何使用 Java 创建 OMR 模板并检查填写的答题纸。

用于生成 OMR 模板和执行 OMR 操作的 Java API

Aspose.OMR for Java 是一个光学标记识别 API,可以对 PNGGIFJPEGTIFF、等图像。该 API 还支持生成 OMR 模板。您可以直接从 下载 部分下载 API,也可以使用以下 Maven 配置进行安装。

<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>

使用 Java 创建 OMR 模板和答题卡图像

在本节中,您将学习如何使用简单的文本标记生成 OMR 模板文件和答题卡图像。我们将文本标记存储在 TXT 文件中,并在 Java 代码中使用它来生成 OMR 模板。下面给出的是我们将在此示例中用于生成 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________________________________

现在我们已经准备好文本标记,我们将按照下面给出的步骤生成 OMR 模板。

以下示例代码展示了如何通过 Java 使用文本标记生成 OMR 模板。

// 源和输出目录路径
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// 创建 OmrEngine 类的实例
OmrEngine engine = new OmrEngine();

// 使用文本标记生成模板
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// 检查是否有错误
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// 保存生成结果:图片和.omr模板
res.save(outputDirectory, "Grid");

上面的代码将生成一个 OMR 模板文件和一个答题纸的图像。下面是生成的答题卡的图片。

示例代码生成的答题卡图片

示例代码生成的答题卡图片

使用 Java 对气泡答题纸执行 OMR 操作

在您收集到生成的答题卡上的答案后,您可以捕获他们的图像,然后对其执行 OMR 操作。在本例中,我们将对两张图像执行 OMR 操作;第一个如下所示。

以下是对图像进行 OMR 操作的步骤。

以下示例代码展示了如何使用 Java 对图像执行 OMR 操作。

// 源和输出目录路径
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" };

// 创建 OmrEngine 类的实例
OmrEngine engine = new OmrEngine();

// 加载模板文件
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// 循环浏览图像
for (int i = 0; i < UserImages.length; i++) {

    // 识别图像并接收结果
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // 将结果导出为 csv 字符串
    String csvResult = result.getCsv();

    // 将 csv 保存到输出文件夹
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

以下是上述代码生成的第一张图像的 CSV 输出。

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" 

获得免费许可证

您可以通过申请 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 Java 生成 OMR 模板和答题卡图像。此外,您还学习了如何对图像执行 OMR 操作并以 CSV 格式获取结果。 Aspose.OMR for Java 是一个强大的 API,用于您的 OMR 相关任务,您可以通过访问 官方文档 进行详细探索。如果您对 API 的任何方面有任何疑问,请随时通过我们的 免费支持论坛 与我们联系。

也可以看看