API ile Python içinde nasıl çalışılır
Aspose.OMR FOSS, Python’ın genel API (omr.api) için kasıtlı olarak küçüktür: OmrEngine, TemplateProcessor, ImageCollection ve FormValidationLogic. Bu kılavuz, bunların generate-and-recognize iş akışı boyunca nasıl bir araya geldiğini gösterir.
Adım Adım Kılavuz
Adım 1: Paketi Kurun
git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"Adım 2: Gerekli Sınıfları İçe Aktarın
from omr.api import OmrEngine, FormValidationLogicAdım 3: Bir Şablon Oluşturun ve Kaydedin
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")Adım 4: Tanıma İçin Şablonu Yükleyin
Varsayılan Ignore yerine FormValidationLogic.Exception geçirin, çoklu seçimin devre dışı bırakıldığı sorular için bir ihlalin tetiklenmesini, sessizce kabul edilmesi yerine istiyorsanız.
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)Adım 5: Tanı ve Dışa Aktar
result = processor.Recognize("scan.png")
print(result.GetCsv())Yaygın Sorunlar ve Çözümler
FormValidationLogic.Exception asla hata oluşturmaz, çoklu işaretli bir soruda bile. Kontrol yalnızca bir soruda … için tetiklenir. Multiselect devre dışı; GlobalPageSettings.Multiselect varsayılan olarak etkindir, bu yüzden tek seçim olmasını beklediğiniz soru için açıkça devre dışı bırakıldığını onaylayın.
Bir seferde birden çok taramayı tanımam gerekiyor. Kullan TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) çağırmak yerine Recognize() bir döngüde.
Zaten kullanılan bir isim altında bir görüntü kaydettim. ImageCollection.Add üzerine yazmaz — kontrol Contains(name) ilk olarak, ya da her görüntü için benzersiz bir ad kullanın.
Sıkça Sorulan Sorular
OmrEngine birden fazla şablonda yeniden kullanmak güvenli mi?
Evet — durum bilgisizdir.
Farklı bir eşik ile bir sonucu yeniden puanlamak, yeniden taramadan nasıl yapılır?
TemplateProcessor.Recalculate(result, recognitionThreshold) çağırın.
Diskten okumak yerine bellekteki bir resmi işaretleme diline nasıl gömebilirim?
ImageCollection.Add(name, image_bytes) ile kaydedin, ardından işaretleme dilinde ?image=<name> olarak referans verin.