光學標記識別 (OMR) 經常用於檢查調查、問捲和多項選擇試卷。這是一種快速準確的表格處理方式。在本文中,您將學習如何使用 Java 創建 OMR 模板和檢查填好的答題紙。

用於生成 OMR 模板和執行 OMR 操作的 Java API

Aspose.OMR for Java是一個光學標記識別API,可以對PNGGIFJPEGTIFF進行OMR操作,等圖像。 API 還支持生成 OMR 模板。您可以直接從 downloads 部分下載 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 是適用於 OMR 相關任務的強大 API,您可以通過訪問 官方文檔 詳細了解它。如果您對 API 的任何方面有任何疑問,請隨時通過我們的免費支持論壇 與我們聯繫。

也可以看看