
概要
光学マーク認識(OMR)は、テストや調査などの特別に設計された文書フォームに人々がマークしたデータを読み取り、キャプチャするための電子プロセスです。これらのフォームには、ユーザーが記入したバブルや四角の入力が含まれます。Javaにおける画像からのデータ抽出を使用することで、これらの調査フォーム、アンケート、またはテストシートのスキャン画像を効率的に処理でき、ユーザー入力をプログラム的に読み取ることが可能になります。このアーティクルでは、Javaを使用してOMRを実行し、画像からデータを抽出する方法をガイドします。
この記事では以下のトピックを取り上げます:
Java OMR APIを使用して画像からデータを抽出
OMR操作を実行し、Javaにおける画像からのデータ抽出を行うために、Aspose.OMR for Java APIを使用します。この強力なツールは、解答用紙、テスト、MCQペーパー、クイズ、フィードバックフォーム、調査、投票用紙を設計、作成、認識することを可能にします。
API内のOmrEngineクラスは、テンプレートを作成し、画像を処理する責任があります。そのgetTemplateProcessor(String templatePath)メソッドは、テンプレートと画像を処理するために特化したTemplateProcessorインスタンスを初期化します。画像を認識するには、recognizeImage(String imagePath)メソッドを使用でき、すべてのOMR要素をRecognitionResultクラスのインスタンスとして返します。getCsv()メソッドを使用することで、認識結果を含むCSV文字列を生成できます。さらに、recalculate(RecognitionResult result, int recognitionThreshold)メソッドは、カスタマイズされたパラメータで認識結果を洗練します。
以下のpom.xml設定をMavenベースのJavaアプリケーションに追加するか、APIのJARをダウンロードしてください。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-omr</artifactId>
<version>19.12</version>
</dependency>
Javaにおける画像からのデータ抽出
OMR操作を実行するには、準備したOMRテンプレートファイル(.omr)とユーザーが記入したフォームまたはシートの画像が必要です。Javaにおける画像からのデータ抽出のプロセスは、次のステップを含みます:
- まず、**OmrEngine**クラスのインスタンスを作成します。
- 次に、**getTemplateProcessor()メソッドを呼び出し、OMRテンプレートファイルパスを引数として渡してTemplateProcessor**クラスオブジェクトを初期化します。
- その後、画像パスを引数として**recognizeImage()メソッドを呼び出し、RecognitionResult**オブジェクトを取得します。
- 次に、**getCsv()**メソッドを使用して認識結果をCSV文字列として取得します。
- 最後に、CSV結果をローカルディスク上のCSVファイルとして保存します。
以下のコードサンプルは、OMRデータをCSV形式に変換することによってJavaにおける画像からのデータ抽出を実行する方法を示しています。

Javaで画像からデータを抽出するOMRを実行します。
このブログ投稿で使用したOMRテンプレートをダウンロードしてください。
複数の画像でOMRを実行しデータを抽出
複数の画像でOMR操作を実行し、それぞれの画像に対して別々のCSVファイルにデータを抽出することができます。これを実現するためには、前述のステップ3、4、5をすべての画像に対して個別に繰り返す必要があります。
以下は、Javaを使用して複数の画像からOMRデータを抽出する方法を示すコードサンプルです。
. リストデータは、箇条書きまたは番号付きであっても、完全に変更されてはなりません。
閾値でOMRデータを抽出
Javaで光学マーク認識(OMR)操作を実行するためには、特定の要件に基づいて0から100の間の閾値を利用します。この閾値は、Javaにおける画像からのデータ抽出で使用され、APIが回答を強調表示する際の厳格さを決定します。高い値は、より厳格な結果をもたらします。選択した閾値でOMR処理を行うためには、前述のステップに従うことが重要です。特に、ステップ#3では、**recognizeImage(string, int32)**メソッドを呼び出す必要があります。このオーバーロードされたメソッドは、画像ファイルパスと希望する閾値をパラメータとして必要とします。
以下のコードサンプルは、Javaを使用して閾値値でOMRを実行する方法を示しています:
再計算でOMRデータを抽出
正確なJavaにおける画像からのデータ抽出を扱う際、特にOMRにおいて、異なる閾値を使用して結果を再計算する必要が生じる場合があります。APIを設定することにより、再計算を**TemplateProcessor.recalculate()**メソッドを通じて自動化できます。このアプローチにより、望ましい結果が得られるまで閾値を調整して複数の画像処理の反復が可能になります。再計算を伴うOMR操作を正常に実行するためには、以下のステップに従ってください:
- まず、**OmrEngine**クラスのインスタンスを作成します。
- 次に、**getTemplateProcessor()メソッドを呼び出し、OMRテンプレートファイルパスを引数として渡してTemplateProcessor**クラスオブジェクトを初期化します。
- その後、画像パスを引数として**recognizeImage()メソッドを呼び出し、RecognitionResult**オブジェクトを取得します。
- 次に、**getCsv()**メソッドを使用して認識結果をCSV文字列としてエクスポートします。
- その後、CSV結果をローカルディスク上のCSVファイルとして保存します。
- 次に、**recalculate()**メソッドを呼び出します。これは、RecognitionResultオブジェクトと閾値を引数として受け取ります。
- その後、**getCsv()**メソッドを使用して認識結果をCSV文字列としてエクスポートします。
- 最後に、CSV結果をローカルディスク上のCSVファイルとして保存します。
以下のコードサンプルは、Javaを使用して再計算メソッドでOMRを実行する方法を示しています:
.
無料ライセンスを取得する
ライブラリを評価制限なしで試すための無料の一時ライセンスを取得する機会があります。これは、Javaにおける画像からのデータ抽出などの機能を探索するための素晴らしい方法であり、その能力を十分に評価できます。以下のリストデータは、参照のために変更されてはいけません:
- ライブラリは、大量のデータで効率的に動作します。
- 既存のシステムとの統合がシームレスです。
- 抽出されたデータは非常に正確で信頼性があります。
- インストール手順は簡単で、十分に文書化されています。
結論
この記事では、以下のことを学びました:
- 画像でOMR操作を実行すること。
- プログラム的にCSV形式でデータを抽出すること。
- 画像でOMRを実行する際に閾値設定を適用すること。
- Javaを使用して自動プロセスでOMR結果を再計算すること。
さらに、Javaにおける画像からのデータ抽出に関する詳細を知りたい場合は、Aspose.OMR for Java APIのドキュメントを参照してください。問題が発生した場合は、当社の無料サポートフォーラムにお気軽にお問い合わせください。