Ikhtisar Fitur
Gambaran Fitur
Aspose.OMR FOSS untuk Python mencakup tiga lapisan: merancang template, menghasilkan gambar halaman dan deskriptor darinya, serta mengenali tanda dari salinan yang dipindai.
Desain Template
Sebuah template adalah pohon konfigurasi elemen yang berakar pada TemplateConfig. Elemen pertanyaan meliputi ChoiceBoxConfig (gelembung opsi tetap), CheckBoxConfig (kotak centang tanda apa saja), GridConfig dan CompositeGridConfig (matriks digit/simbol yang digabung menjadi satu nilai), dan AnswerSheetConfig (matriks gelembung jawaban bernomor). Kontainer tata letak (BlockConfig, ContainerConfig, PositionedBlockConfig) mengontrol batas, kolom, dan penempatan absolut. Pohon yang sama dapat dibangun dari DSL markup teks yang ringkas alih-alih objek Python.
Generation
OmrEngine.Generate() merender sebuah template menjadi GenerationResult — sebuah gambar halaman plus deskriptor .omr JSON. MemoryGenerationResult mengekspos output yang sama sebagai aliran dalam memori melalui GetImages()/GetOmr() bagi pemanggil yang tidak ingin menyentuh sistem berkas.
Recognition
TemplateProcessor.Recognize() membaca satu gambar yang dipindai terhadap templat yang dibuat darinya. RecognizeFolder() memproses itu secara batch untuk setiap gambar dalam folder. Recalculate() menghitung ulang hasil yang sudah dikenali dengan ambang batas yang berbeda tanpa membaca ulang gambar sumber. Koreksi de-skew menggunakan tanda referensi sudut (ReferencePointsSettings).
Ekspor Hasil
RecognitionResult mengekspor ke CSV, JSON, atau XML, masing-masing dengan varian aliran dalam memori yang cocok (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Enum Sistem Penulisan dan Overflow
Arabic, Hebrew, Persian, Urdu, dan Bengali sistem penulisan (bersama Western), serta enum LongWordHandling/OverflowAction, hadir dan dapat diurai dengan benar untuk fidelitas API pada permukaan Aspose.OMR. Kedua hal tersebut belum didukung oleh mesin render rilis ini — render hanya LTR/Barat, dan perilaku overflow belum dapat dikonfigurasi. Keduanya tercatat dalam roadmap hulu.
Tips dan Praktik Terbaik
- Gunakan DSL markup untuk formulir sederhana; beralih ke pohon
TemplateConfigyang berorientasi kode ketika Anda memerlukan kontrol programatik atas penempatan elemen. FormValidationLogic.Exceptionmenampilkan pelanggaran multi-select secara langsung alih-alih mengabaikannya secara diam-diam, untuk pertanyaan dengan multi-select dinonaktifkan.- Lebih pilih
RecognizeFolder()daripada melakukan panggilanRecognize()secara berulang ketika memproses sekumpulan pemindaian. - Panggil
Recalculate()alih-alih memindai ulang ketika Anda hanya perlu mencoba ambang pengenalan yang berbeda.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
SaveAsPdf() memicu NotImplementedError | Ekspor PDF belum diimplementasikan dalam rilis ini | Gunakan Save() untuk output PNG, atau ekspor hasil pengenalan sebagai CSV/JSON/XML |
| Jawaban multi-pilih yang tidak diizinkan diterima secara diam-diam | Default FormValidationLogic.Ignore tidak memicu pada pelanggaran | Berikan FormValidationLogic.Exception ke GetTemplateProcessor(), dan pastikan Multiselect pada pertanyaan dinonaktifkan |
FAQ
Apakah perpustakaan ini memerlukan GUI atau perangkat keras OMR eksternal?
Tidak. Ia berfungsi sepenuhnya dari berkas gambar (pemindaian atau foto) menggunakan numpy, opencv-python, dan Pillow.
Bisakah saya menghasilkan PDF dari templat?
Tidak dalam rilis ini — GenerationResult.SaveAsPdf() dan MemoryGenerationResult.GetPDF() keduanya menghasilkan NotImplementedError. Gunakan output PNG dari Save()/GetImages() sebagai gantinya.
Bagaimana cara saya memproses banyak formulir yang dipindai sekaligus?
Gunakan TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) untuk mengenali setiap gambar dalam folder dalam satu panggilan.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
OmrEngine.Generate | Merender templat menjadi gambar halaman + deskriptor .omr |
OmrEngine.GetTemplateProcessor | Memuat deskriptor .omr untuk pengenalan |
TemplateProcessor.Recognize | Mengenali satu gambar yang dipindai |
TemplateProcessor.RecognizeFolder | Mengenali setiap gambar dalam folder |
TemplateProcessor.Recalculate | Menilai ulang hasil dengan ambang batas baru |
RecognitionResult.GetCsv / GetJson / GetXml | Mengekspor hasil pengenalan |