光学式マーク認識(OMR)は、調査、質問票、および多肢選択式の試験紙をチェックするために頻繁に使用されます。これは、フォームを処理するための高速で正確な方法です。この記事では、Javaを使用してOMRテンプレートを作成し、記入済みの解答用紙を確認する方法を学習します。

OMRテンプレートを生成してOMR操作を実行するためのJavaAPI

Aspose.OMR for Javaは、PNGGIFJPEGTIFF、などの画像。 APIは、OMRテンプレートの生成もサポートしています。 ダウンロードセクションからAPIを直接ダウンロードするか、次のMaven構成を使用してAPIをインストールできます。

<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操作を実行できます。この例では、2つの画像に対して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のいずれかの側面について質問がある場合は、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目