Lakukan OMR dan Ekstrak Data menggunakan C#

Pengenalan tanda optik (OMR) memungkinkan pembacaan dan pengambilan data yang ditandai 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 atau lembar pengujian tersebut dan membaca input pengguna secara terprogram dalam aplikasi .NET. Pada artikel ini, kita akan mempelajari cara melakukan OMR dan mengekstrak data menggunakan C#.

Topik-topik berikut akan dibahas dalam artikel ini:

C# OMR API untuk Melakukan OMR dan Ekstrak Data

Untuk melakukan operasi OMR dan mengekspor data dari gambar, kami akan menggunakan Aspose.OMR for .NET API. Ini memungkinkan merancang, membuat, dan mengenali lembar jawaban, tes, kertas pilihan ganda, kuis, formulir umpan balik, survei, dan surat suara. Harap unduh DLL API atau instal menggunakan NuGet.

PM> Install-Package Aspose.OMR

Lakukan OMR dan Ekstrak Data dari Gambar

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

  1. Pertama, buat instance dari 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 RecognizeImage() dengan jalur gambar sebagai argumen.
  4. Setelah itu, dapatkan hasil pengenalan sebagai string CSV menggunakan metode GetCsv().
  5. Terakhir, simpan hasil CSV sebagai file CSV di disk lokal.

Contoh kode berikut menunjukkan cara melakukan OMR pada gambar dan mengekstrak data dalam format CSV menggunakan C#.

// Jalur file Templat OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Jalur file gambar
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// 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
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);
Lakukan OMR dan Ekstrak Data dari Gambar

Lakukan OMR dan Ekstrak Data dari gambar.

Template OMR yang digunakan pada contoh kode di atas dapat diunduh dari here.

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 melakukan OMR pada banyak gambar dan mengekstrak data dalam format CSV menggunakan C#.

// Jalur file Templat OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Jalur file folder gambar
string imageFolderPath = @"D:\Files\OMR\";

// Jalur direktori keluaran
string outputPath = @"D:\Files\OMR\";

// Gambar yang akan diproses
string[] UserImages = new string[] { "Sheet1.jpg", "Sheet2.jpg" };

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

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

// Proses gambar satu per satu
for (int i = 0; i < UserImages.Length; i++)
{
    string imagePath = Path.Combine(imageFolderPath, UserImages[i]);
    
    // Kenali gambar
    RecognitionResult result = templateProcessor.RecognizeImage(imagePath);
    
    // Dapatkan hasil dalam CSV
    string csvResult = result.GetCsv();

    // Simpan file CSV
    File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult);
}

API juga menyediakan fungsionalitas untuk mendeteksi dan mengenali kode batang apa pun yang tersedia pada gambar selama pengoperasian OMR. Ini adalah fitur default dari operasi OMR. Kami dapat melakukan operasi OMR dan mengenali barcode dengan mengikuti langkah-langkah yang disebutkan sebelumnya.

Dapatkan Hasil OMR dengan Threshold

Kami dapat menerapkan ambang saat melakukan operasi OMR pada gambar. Nilai ambang batas bisa dari 0 hingga 100 tergantung pada persyaratan. Semakin tinggi nilai threshold maka API semakin ketat dalam menyorot jawaban. Silakan ikuti langkah-langkah yang disebutkan sebelumnya untuk melakukan OMR dengan ambang batas. Namun, kita hanya perlu memanggil metode RecognizeImage(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 batas menggunakan C#.

// Jalur file Templat OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Jalur file gambar
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// 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
File.WriteAllText(@"D:\Files\OMR\Sheet1_threshold.csv", csvResult);

Operasi OMR dengan Perhitungan Ulang

Dalam kasus tertentu, kami 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 dari kelas OmrEngine.
  2. Selanjutnya, panggil metode GetTemplateProcessor() dan inisialisasi objek kelas TemplateProcessor. Dibutuhkan path file template OMR sebagai argumen.
  3. Kemudian, inisialisasi objek Stopwatch dan mulai penghitung waktu.
  4. Selanjutnya, dapatkan objek RecognitionResult dengan memanggil metode RecognizeImage() dengan jalur gambar sebagai argumen.
  5. Kemudian, hentikan timer dan ekspor hasil pengenalan sebagai string CSV menggunakan metode GetCsv().
  6. Selanjutnya, simpan hasil CSV sebagai file CSV di disk lokal.
  7. Kemudian, restart timer menggunakan metode Restart().
  8. Selanjutnya, panggil metode Recalculate(). Dibutuhkan objek RecognitionResult dan nilai ambang batas sebagai argumen.
  9. Setelah itu, hentikan timer dan ekspor hasil pengenalan sebagai string CSV menggunakan metode GetCsv().
  10. Terakhir, simpan hasil CSV sebagai file CSV di disk lokal.

Contoh kode berikut menunjukkan cara melakukan OMR dengan metode penghitungan ulang menggunakan C#.

// Jalur file Templat OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Jalur file gambar
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Nilai ambang batas
int CustomThreshold = 40;

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

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

// Timer untuk ukuran kinerja
Stopwatch sw = Stopwatch.StartNew();

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

sw.Stop();

// Dapatkan hasil dalam CSV
string csvResult = result.GetCsv();

// Simpan file CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);

sw.Restart();

// Hitung ulang
templateProcessor.Hitung ulang(result, CustomThreshold);
sw.Stop();

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

// Simpan file CSV yang dihitung ulang
File.WriteAllText(@"D:\Files\OMR\Sheet1_Hitung ulangd.csv", 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 dan mengekstrak data dalam format CSV menggunakan C#;
  • terapkan pengaturan ambang saat melakukan OMR pada gambar;
  • menghitung ulang hasil OMR dalam proses otomotif secara terprogram.

Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.OMR for .NET API menggunakan dokumentasi. Jika ada ambiguitas, jangan ragu untuk menghubungi kami di forum.

Lihat juga