Birden çok satıra yayılan Arapça ayetleri algılama


12

Bir Kuran uygulaması oluşturmam gerekiyor ve bir kullanıcı dokunduğunda ayetleri okumak istiyorum. Karşılaştığım sorun bazı ayetlerin bir buçuk satıra (vurgulanmış kırmızı ayet) genişleyebilmesi veya sadece bir satırın dörtte birine (vurgulanmış yeşil ayet) sığabilmesidir. Yani her ayeti metin görünümüne veya başka bir görünüme eklemek işe yaramaz gibi görünüyor.

İkinci görüntüdeki kırmızı ayetler gibi ayetleri tespit etmek istiyorum. Ben ayetler için ses dosyaları var bu yüzden metin-konuşma dönüştürme gerek yok


1
Sayfa resim verisi veya oluşturulmuş Unicode metni olarak mı veriliyor?

Metinden Konuşmaya .. Ama sonra lütfen bize araştırmanızı gösterin.

Dinamik olarak imagView her ayetleri görüntü eklemeyi denedim, ama sorun ortaya çıktı görüntü görünümü böyle bir buçuk satır genişletmek olmaz. Bazen bazı ayetler bir buçuk satır gerektirebilir, Umarım ne demek istediğimi anlarsın. Bunun üstesinden gelmek için bir öneriye ihtiyacım var.

1
İki satır kullanın ve biraz yükünüz var mı?

1
Bir buçuk satır demek, ekranın genişliğini, ardından bir sonraki satırın yarısını kaplar mı demek istiyorsun?

Yanıtlar:


9

Bu, basit şablon eşleşmesi ile oldukça basit bir şekilde çözülebilir. Nasıl ayarladığınızı tam olarak bilmiyorum, bu yüzden algoritmayı genel olarak açıklayacağım ve illüstrasyonları kullanacağım.

  • Ayet sayılarının, bir ayetin başlangıcını ve sonunu tespit etmek için kolayca kullanılabilen ayırt edici bir kenarlığı olduğunu gözlemleyin. Bu kalıp için ikili bir şablon oluşturun ve saklayın. Bunun gibi bir şey:

    resim açıklamasını buraya girin

  • Ekrandaki satır sayısı önceden bilindiğinden (sayfayı biçimlendirdiğinizden) ve her ayetin sabit bir yüksekliği olduğundan, ayetlerin merkez çizgileri için Y koordinatlarının ekranda olması gereken yeri kolayca (algoritmik olarak) çıkarabilirsiniz. . Bu şu fikri gösterir:

    resim açıklamasını buraya girin

  • Kullanıcı bir ayete dokunduğunda, XY koordinatlarını alın ve Y koordinatını en yakın ayet merkezine yaslayın.

  • Sonra X koordinatı ile başlayarak, bu satır boyunca basit bir şablon eşleştirme (çapraz korelasyon) gerçekleştirin. İleri yönde (sola doğru) ilk eşleşme (çapraz korelasyonda zirve), ayetin bitiş noktası olacaktır. Ters yönde (sağda) eşleşme yoksa, bir ayet yukarı hareket edin (bunu yapabilirsiniz, çünkü merkez çizginin Y koordinatını biliyorsunuz) ve tekrarlayın. Sol uçtan ilk maç, ayetin başlangıç ​​noktası olacaktır. Benzer şekilde, hatta ileri doğru eşleşme yoksa, bir satır aşağı gidin ve tekrarlayın.

    İşte fikrin kısa bir örneği. Sarı kutu, kullanıcının ayete dokunduğu yerdir. Ardından şablonunuzla çapraz korelasyon yaparsınız ve mavi daireler eşleşir.

    resim açıklamasını buraya girin

    Eylemde görmek istiyorsanız, bu cevapta şablon eşleşmesini de kullanıyorum .

  • Ayetin başlangıç ​​noktasını belirledikten sonra, o kenarlığın içindeki ayet numarasını çıkarmak ve karşılık gelen ses dosyasını çalmak için Arapça bir metin tanıyıcı kullanın.


Daha basit çözüm:

Daha basit bir çözüm, eğer bunu yapmak istemiyorsanız, ayet başlangıç ​​noktalarının XY koordinatlarını saklamak (basit tutun ve merkez noktalarını kullanın) ve kullanıcı girişinin koordinatlarını aldıktan sonra tekrar yapıştırabilirsiniz. merkez çizgisine getirin ve sonra ayetin nereden başladığını görmek için geriye doğru yürüyün. Bu daha hızlı olma avantajına sahip olabilir.

Bunu ilk çözüm olarak ileri sürmedim çünkü yorumlarda benzer bir fikri reddetmiş gibisin. Sonunda, bu sizin kısıtlamalarınıza bağlıdır - hesaplama işini (şablon eşleştirme - bu arada, şablonu saklamanızı da gerektirir) veya belleği (koordinatları saklama) kullanmayı tercih eder misiniz.

Ben olsaydım, muhtemelen bununla giderdim, ama görüntü işleme çözümü denemek eğlenceli olabilir.


yoda ya da başka kimse, biraz daha iyi bu sorunu açıklayabilir misiniz lütfen .?!Aslında bilmek ve im almak değil sadece nasıl ya da nasıl mavi daireler içinde sayı almak için.?! Çok teşekkürler!

@xmenus Çembere kilitlendikten sonra (ayırt edici kenarlıkla eşleşen desenle yaptığınız), içindeki içeriği tanımlamak için Arapça bir metin / sayı tanıma kütüphanesi kullanmanız gerekir. Arapça bilmiyorum ve bu yüzden hiçbir şey tavsiye edemez. OP sormak deneyebilirsiniz ...
Lorem Ipsum

@xmenus Arapça konusunda yardıma ihtiyacınız olursa bana sorabilirsiniz, ancak sadece bir Arapça numarayı tespit etmek isteyip istemediğinizi soracağınız şeyden, muhtemelen çevrelerle yaptığınız gibi aynı şablonu eşleştirebilirsiniz.
Spacey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.