Inti API
Inti API
omr.api adalah permukaan kecil yang paling banyak kode berinteraksi: OmrEngine, TemplateProcessor, ImageCollection, dan enum FormValidationLogic.
OmrEngine
OmrEngine adalah pabrik tanpa status. Generate(source, settings) menerima sumber markup-DSL atau pohon TemplateConfig dan mengembalikan GenerationResult. GetTemplateProcessor(templateSource, validationLogic) memuat jalur berkas .omr yang sebelumnya disimpan dan mengembalikan TemplateProcessor yang terikat; sumber aliran justru mengambil argumen text-encoding sebelum logika validasi.
from omr.api import OmrEngine, FormValidationLogic
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)FormValidationLogic
Mengontrol perilaku mesin ketika aturan validasi templat — seperti batasan multi-select — dilanggar selama pengenalan: Ignore (default) secara diam-diam menerima pelanggaran, Exception menimbulkan, dan undefined adalah nilai nol enum. Pemeriksaan hanya berlaku untuk pertanyaan yang Multiselectnya dinonaktifkan; GlobalPageSettings.Multiselect defaultnya diaktifkan.
TemplateProcessor
Recognize(source, recognitionThreshold) mengenali satu gambar yang dipindai. RecognizeFolder(folderPath, recognitionThreshold) mengenali setiap gambar dalam folder dalam satu panggilan. Recalculate(result, recognitionThreshold) menghitung ulang hasil yang sudah dikenali dengan ambang batas yang berbeda, tanpa membaca ulang gambar sumber.
ImageCollection
Peta hanya-tambah, sensitif huruf besar/kecil dari nama ke byte gambar mentah. Add(name, image) mendaftarkan sebuah gambar, Contains(name) memeriksa apakah sebuah nama sudah terdaftar, Count melaporkan berapa banyak yang terdaftar, dan as_dict() mengembalikan peta pendukung. Markup dapat merujuk ke gambar yang terdaftar dengan nama (?image=<name>) alih-alih jalur sistem berkas.
from omr.api import ImageCollection
images = ImageCollection()
with open("logo.png", "rb") as f:
images.Add("logo.png", f.read())Tips dan Praktik Terbaik
- Gunakan
FormValidationLogic.Exceptionselama pengembangan untuk menampilkan pelanggaran multi-select secara langsung alih-alih mengabaikannya secara diam-diam (hanya aktif untuk pertanyaan denganMultiselectdinonaktifkan). Recalculate()lebih murah dibandingkan memindai ulang — gunakan ketika hanya ambang batas pengenalan yang perlu diubah.- Nama
ImageCollectionsensitif huruf besar/kecil; mendaftarkan nama yang sama dua kali akan menimbulkan error alih-alih menimpa secara diam-diam. Generate()melaporkan sebagian besar kegagalan melaluiGenerationResult.ErrorCode/ErrorMessagealih-alih menimbulkan error — periksaErrorCodesebelum mempercayai hasil yang dihasilkan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Mendaftarkan gambar dua kali menimbulkan | ImageCollection.Add tidak mengizinkan nama duplikat | Periksa Contains(name) terlebih dahulu, atau gunakan nama unik per gambar |
| Jawaban multi-select yang tidak diizinkan diterima secara diam-diam | Default FormValidationLogic.Ignore tidak menimbulkan | Berikan FormValidationLogic.Exception ke GetTemplateProcessor(), dan pastikan Multiselect pada pertanyaan dinonaktifkan |
FAQ
Apakah OmrEngine aman untuk digunakan kembali di beberapa templat?
Ya — itu tidak memiliki status; setiap panggilan Generate()/GetTemplateProcessor() bersifat independen.
Bagaimana cara mengenali seluruh folder pemindaian sekaligus?
Panggil TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) alih-alih melakukan perulangan Recognize() secara manual.
Ringkasan API Reference
| Kelas/Metode | Deskripsi |
|---|---|
OmrEngine.Generate | Merender templat menjadi gambar halaman + deskriptor .omr |
OmrEngine.GetTemplateProcessor | Memuat deskriptor .omr untuk pengenalan |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Titik masuk pengenalan |
ImageCollection.Add / Contains / as_dict | Registri gambar dalam memori untuk markup |
FormValidationLogic | Enum perilaku pelanggaran validasi |