光學標記識別 (OMR) 經常用於檢查調查、問捲和多項選擇試卷。這是一種快速準確的表格處理方式。在本文中,您將學習如何使用 Java 創建 OMR 模板和檢查填好的答題紙。
用於生成 OMR 模板和執行 OMR 操作的 Java API
Aspose.OMR for Java是一個光學標記識別API,可以對PNG、GIF、JPEG、TIFF進行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 模板。
- 首先,創建一個 OmrEngine 類的實例。
- 使用 OmrEngine.generateTemplate(String markupPath) 方法處理文本標記。
- 使用 GenerationResult.save(String folder, String name) 方法保存 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 操作的步驟。
- 創建 OmrEngine 類的實例。
- 使用 OmrEngine.getTemplateProcessor(String templatePath) 方法加載模板文件。
- 使用 TemplateProcessor.recognizeImage(String imagePath) 方法處理圖像。
- 使用 RecognitionResult.getCsv() 方法獲取 CSV 格式的結果。
以下示例代碼顯示瞭如何使用 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 的任何方面有任何疑問,請隨時通過我們的免費支持論壇 與我們聯繫。