Lakukan OMR dan Ekstrak Data menggunakan Java

Pengenalan tanda optik (OMR) adalah proses elektronik yang memungkinkan pembacaan dan pengambilan data yang ditandai oleh orang-orang pada jenis formulir dokumen khusus. Formulir dokumen ini bisa berupa tes atau survei, yang terdiri dari input gelembung atau persegi yang diisi oleh pengguna. Kami dapat dengan mudah melakukan operasi OMR pada gambar yang dipindai dari formulir survei, kuesioner, atau lembar tes tersebut dan membaca input pengguna secara terprogram. Pada artikel ini, kita akan mempelajari cara melakukan OMR dan mengekstrak data dari gambar di Java.

Topik-topik berikut akan dibahas dalam artikel ini:

  1. Java OMR API untuk Mengekstrak Data dari Gambar
  2. Ekstrak Data dari Gambar
  3. Lakukan OMR dan Ekstrak Data dari Banyak Gambar
  4. Ekstrak Data OMR dengan Threshold
  5. Ekstrak Data OMR dengan Perhitungan Ulang

Java OMR API untuk Mengekstrak Data dari Gambar

Untuk melakukan operasi OMR dan mengekstrak data dari format gambar yang didukung, kita akan menggunakan Aspose.OMR for Java API. Ini memungkinkan merancang, membuat, dan mengenali lembar jawaban, tes, kertas pilihan ganda, kuis, formulir umpan balik, survei, dan surat suara.

Kelas OmrEngine API menangani pembuatan template dan pemrosesan gambar. Metode getTemplateProcessor(String templatePath) dari kelas ini membuat instance TemplateProcessor untuk memproses template dan gambar. Kita dapat mengenali gambar menggunakan metode recognizeImage(String imagePath). Ia mengembalikan semua elemen OMR sebagai instance kelas RecognitionResult. Metode getCsv() dari kelas ini menghasilkan string CSV dengan hasil pengenalan. Metode menghitung ulang (RecognitionResult result, int recognitionThreshold) memperbarui hasil pengenalan menggunakan parameter yang disesuaikan.

Harap unduh JAR dari API atau tambahkan konfigurasi pom.xml berikut dalam aplikasi Java berbasis Maven.

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

Ekstrak Data dari Gambar di Jawa

Kami membutuhkan template OMR (.omr) yang telah disiapkan bersama dengan gambar formulir/lembar yang diisi pengguna untuk melakukan operasi OMR. Kami dapat melakukan operasi OMR pada gambar dan mengekstrak data dengan mengikuti langkah-langkah berikut:

  1. Pertama, buat instance kelas OmrEngine.
  2. Selanjutnya, panggil metode getTemplateProcessor() dan inisialisasi objek kelas TemplateProcessor. Dibutuhkan path file template OMR sebagai argumen.
  3. Kemudian, dapatkan objek RecognitionResult dengan memanggil metode recognitionImage() dengan jalur gambar sebagai argumen.
  4. Setelah itu, dapatkan hasil pengenalan berupa string CSV menggunakan metode getCsv().
  5. Terakhir, simpan hasil CSV sebagai file CSV di disk lokal.

Contoh kode berikut menunjukkan cara mengekstrak data OMR dari gambar dalam format CSV menggunakan Java.

// Contoh kode ini menunjukkan cara melakukan OMR pada gambar dan mengekstrak data
// Jalur file Templat OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Jalur file gambar
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Inisialisasi Mesin OMR
OmrEngine engine = new OmrEngine();

// Dapatkan prosesor template
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Kenali gambar
RecognitionResult result = templateProcessor.recognizeImage(imagePath);

// Dapatkan hasil dalam CSV
String csvResult = result.getCsv();

// Simpan file CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);
Ekstrak-Data-dari-Gambar-di-Java

Lakukan OMR dan Ekstrak Data dari gambar di Java.

Silakan unduh template OMR yang digunakan dalam entri blog ini.

Lakukan OMR dan Ekstrak Data dari Banyak Gambar

Kami dapat melakukan operasi OMR pada banyak gambar dan mengekstrak data dalam file CSV terpisah untuk setiap gambar dengan mengikuti langkah-langkah yang disebutkan sebelumnya. Namun, kita perlu mengulang langkah # 3, 4, dan 5 untuk semua gambar satu per satu.

Contoh kode berikut menunjukkan cara mengekstrak data OMR dari banyak gambar menggunakan Java.

// Contoh kode ini menunjukkan cara melakukan OMR pada banyak gambar dan mengekstrak data
// Jalur folder yang berfungsi
String folderPath = "C:\\Files\\OMR\\";

// Jalur file Templat OMR
String templatePath = folderPath + "Sheet.omr";

// Jalur file gambar
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" };

// Inisialisasi Mesin OMR
OmrEngine engine = new OmrEngine();

// Dapatkan prosesor template
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Proses gambar satu per satu dalam satu lingkaran
for (int i = 0; i < UserImages.length; i++)
{
    String image = UserImages[i];
    String imagePath = folderPath + image;

    // Kenali gambar
    RecognitionResult result = templateProcessor.recognizeImage(imagePath);

    // Dapatkan hasil dalam CSV
    String csvResult = result.getCsv();

    // Simpan file CSV
    PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true);
    wr.println(csvResult);
    System.out.println(csvResult);
}

Ekstrak Data OMR dengan Threshold di Java

Kami dapat melakukan operasi OMR dengan nilai ambang (0 hingga 100) tergantung pada persyaratan. Semakin tinggi nilai threshold membuat API semakin ketat dalam menyoroti jawaban. Silakan ikuti langkah-langkah yang disebutkan sebelumnya untuk melakukan OMR dengan ambang batas. Namun, kita hanya perlu memanggil metode recognitionImage(string, int32) yang kelebihan beban pada langkah # 3. Dibutuhkan jalur file gambar dan nilai ambang sebagai argumen.

Contoh kode berikut menunjukkan cara melakukan OMR dengan nilai ambang menggunakan Java.

// Contoh kode ini menunjukkan cara melakukan OMR dengan rashold dan mengekstrak data dari gambar
// Jalur file Templat OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Jalur file gambar
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Nilai ambang batas
int CustomThreshold = 40;

// Inisialisasi Mesin OMR
OmrEngine engine = new OmrEngine();

// Dapatkan prosesor template
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Kenali gambar
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold);

// Dapatkan hasil dalam CSV
String csvResult = result.getCsv();

// Simpan file CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true);
wr.println(csvResult);
System.out.println(csvResult);

Ekstrak Data OMR dengan Perhitungan Ulang di Jawa

Dalam kasus tertentu, kita mungkin perlu menghitung ulang hasil OMR dengan nilai ambang yang berbeda. Untuk tujuan ini, kita dapat mengonfigurasi API untuk menghitung ulang secara otomatis menggunakan metode TemplateProcessor.recalculate() . Ini memungkinkan pemrosesan gambar beberapa kali dengan mengubah pengaturan ambang untuk mendapatkan hasil yang diinginkan. Kami dapat melakukan operasi OMR dengan perhitungan ulang dengan mengikuti langkah-langkah yang diberikan di bawah ini:

  1. Pertama, buat instance kelas OmrEngine.
  2. Selanjutnya, panggil metode getTemplateProcessor() dan inisialisasi objek kelas TemplateProcessor. Dibutuhkan path file template OMR sebagai argumen.
  3. Kemudian, dapatkan objek RecognitionResult dengan memanggil metode recognitionImage() dengan jalur gambar sebagai argumen.
  4. Selanjutnya, ekspor hasil pengenalan sebagai string CSV menggunakan metode getCsv().
  5. Kemudian, simpan hasil CSV sebagai file CSV di disk lokal.
  6. Selanjutnya, panggil metode hitung ulang (). Dibutuhkan objek RecognitionResult dan nilai threshold sebagai argumen.
  7. Setelah itu, ekspor hasil pengenalan sebagai string CSV menggunakan metode getCsv().
  8. Terakhir, simpan hasil CSV sebagai file CSV di disk lokal.

Contoh kode berikut menunjukkan cara melakukan OMR dengan metode perhitungan ulang menggunakan Java.

// Jalur file Templat OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Jalur file gambar
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// Nilai ambang batas
int CustomThreshold = 40;

// Inisialisasi Mesin OMR
OmrEngine engine = new OmrEngine();

// Dapatkan prosesor template
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// Kenali gambar
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold);

// Dapatkan hasil dalam CSV
String csvResult = result.getCsv();

// Simpan file CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);

// Hitung ulang
// Anda dapat menerapkan nilai ambang baru di sini
templateProcessor.recalculate(result, CustomThreshold);

// Dapatkan hasil yang dihitung ulang dalam CSV
csvResult = result.getCsv();

// Simpan file CSV yang dihitung ulang
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true);
finalWr.println(csvResult);

Dapatkan Lisensi Gratis

Anda bisa mendapatkan lisensi sementara gratis untuk mencoba perpustakaan tanpa batasan evaluasi.

Kesimpulan

Dalam artikel ini, kita telah mempelajari cara:

  • melakukan operasi OMR pada gambar;
  • ekstrak data dalam format CSV secara terprogram;
  • terapkan pengaturan ambang saat melakukan OMR pada gambar;
  • menghitung ulang hasil OMR dalam proses otomotif menggunakan Java.

Selain itu, mengekstraksi data dari gambar di Java, Anda dapat mempelajari lebih lanjut tentang Aspose.OMR for Java API menggunakan dokumentasi. Jika ada ambiguitas, jangan ragu untuk menghubungi kami di forum dukungan gratis.

Lihat juga