Amazon’un Kindle Cloud Reader hizmeti, dijital kitaplarınızı tarayıcıda okumanızı sağlar. Ancak birçok metin-yazı (text-to-speech) eklentisi, bu platformda çalışmama sorunuyla karşılaşır. Peki neden? Cevap, Kindle’ın arka planda uyguladığı özel bir koruma sisteminde gizli.
DOM’dan Alınan Metin Neden Anlamsız Çıkıyor?
Çoğu web sitesinde çalışan metin-yazı araçları, sayfanın Document Object Model (DOM) yapısından metinleri alır ve bunları seslendirir. Ancak Kindle Cloud Reader’da bu yaklaşım başarısız olur. Bir paragrafı seçip kopyaladığınızda, yapıştırdığınızda karşınıza anlamsız karakter dizileri çıkar. Bu durumun nedeni, Amazon’un kitap metinlerini özel ve karmaşık fontlarla görüntülemesidir.
DOM’da yer alan karakter kodları, ekranda gördüğünüz gerçek harfler değildir. Amazon’un özel font dosyaları, bu kodları görsel olarak düzgün harflere dönüştürür. Bu teknik, içeriğin kopyalanmasını ve kopyalanmasını engellemek amacıyla kullanılır. Sonuç olarak, DOM’dan alınan metin, ekranda gördüğünüzle aynı değildir — bu da DOM tabanlı okuyucuların Kindle Cloud Reader’da çalışmamasına yol açar.
Gerçek Metin Nerede? Ekrandaki Piksellerde
Eğer DOM’dan doğru metin alınamıyorsa, geriye sadece bir seçenek kalır: ekrandaki görüntüyü kullanmak. Bu yaklaşımda, sayfanın ekran görüntüsü alınarak Optical Character Recognition (OCR) teknolojisiyle metne dönüştürülür. Bu yöntem, görsel olarak ekranda görünen her şeyi doğru bir şekilde yakalar.
Bu fikir, basitçe uygulanan bir süreç gibi görünebilir, ancak pratikte bazı zorlukları vardır. İşte geliştirilen çözümün temel adımları:
- Sayfa görüntüsünü yakala: Kindle Cloud Reader’ın kitap okuma alanının ekran görüntüsü alınır.
- OCR uygula: Yakalanan görüntü, metne dönüştürülür. Bu aşamada, modern tarayıcılar WebAssembly (WASM) üzerinden çalışan Tesseract OCR motorunu kullanabilir.
- Seslendir: Elde edilen metin, metin-yazı motoruna gönderilir ve sesli olarak okunur.
- Sayfa ilerlet ve tekrar et: Kitabın tüm sayfaları otomatik olarak ilerletilerek sürekli okuma sağlanır.
Bu yaklaşım, birkaç yıl öncesine kadar tarayıcı eklentilerinde uygulanabilir değildi. Ancak bugün, istemci tarafında çalışan WASM tabanlı OCR çözümleri sayesinde mümkün hale geldi.
OCR Uygulamasında Karşılaşılan Zorluklar
OCR teknolojisinin tarayıcı eklentilerinde kullanılması, bazı teknik engelleri de beraberinde getirir. Bu engellerden en önemlileri şunlardır:
- Hız ve doğruluk dengesi: OCR işlemi, DOM’dan metin okumaktan çok daha yavaştır. Birkaç milisaniyelik bir gecikme yerine, yüzlerce milisaniyelik bir işlem süresi söz konusudur. Bu durum, kullanıcı deneyimini doğrudan etkiler. OCR kalitesini artırmak için yapılan önişlemler (örneğin, kontrast ayarlama ve ölçeklendirme) büyük önem taşır. Ayrıca, işlenmiş sayfaların önbelleğe alınması da performansı önemli ölçüde iyileştirir.
- Sayfa sınırlarını belirleme: Kindle Cloud Reader, kitapları sayfalara böler ve sanal olarak kaydırır. Bu, sürekli okuma yaparken sayfa geçişlerinin doğru bir şekilde algılanmasını gerektirir. Sayfa sonuna gelindiğinde, otomatik olarak bir sonraki sayfaya geçilmesi ve yeni bir ekran görüntüsü alınması gerekir.
- Sayfa düzeni gürültüsü: Kitap sayfalarında başlıklar, sayfa numaraları ve dipnotlar bulunur. OCR işlemi sırasında bu unsurlar da metne dahil edilir. Bu durum, seslendirme sırasında "Sayfa 214" gibi anlamsız ifadelerin okunmasına neden olur. Bu sorunu çözmek için, OCR sonuçlarına hafif düzeyde bir filtreleme uygulanması gerekir.
Bu Teknik Ne Anlama Geliyor? Erişilebilirlik Aracı
Geliştirilen bu yöntem, bir erişilebilirlik aracı olarak tasarlanmıştır. Amacı, zaten satın almış olduğunuz ve tarayıcıda okuduğunuz bir kitabı sesli olarak dinlemenizi sağlamaktır. Bu, telefonunuzun ekran okuyucusunun yaptığı işle aynıdır: ekranda gördüğünüz içeriği seslendirir. Ancak bu yöntem, kitabın içeriğini kopyalamaz, dışa aktarmaz veya paylaşılabilir bir dosya üretmez. Kitabın korumalı içeriği tarayıcıda kalır; sadece o anda görünen sayfanın seslendirilmesi gerçekleşir.
Sonuç: DOM Yanılttığında, Piksel Oku
Bu projenin gelişimi sırasında edinilen en önemli ders, içeriğin gerçek temsilinin her zaman DOM’da bulunmadığıdır. Özel fontlar, canvas tabanlı metinler ve karmaşık tek sayfalık uygulama (SPA) yapıları, DOM’un doğru içeriği sağlamasını engelleyebilir. Bu durumlarda, ekran görüntüsünden metin çıkarımı (OCR) kullanmak, oldukça pratik bir çözüm haline gelir. Özellikle istemci tarafında WASM tabanlı OCR motorlarının kullanılabilirliği, bu yaklaşımı daha da cazip kılıyor.
Bu yöntemi CastReader adlı bir Chrome eklentisine entegre ettim. Eklenti, Kindle Cloud Reader’da kitaplarınızı seslendirmenize olanak tanır. Ücretsiz olarak kullanılabilen CastReader, 40’tan fazla dil desteğine sahiptir. Ayrıntılı ayarlamalar ve OCR önişlemleri hakkında daha fazla bilgi almak için yorum bölümüne sorularınızı bırakabilirsiniz.
Yapay zeka özeti
Kindle Cloud Reader’daki kitapları neden metin-yazı araçları seslendiremiyor? DOM tabanlı engelleri aşmak için ekran görüntüsü OCR kullanmanın avantajlarını ve CastReader eklentisini keşfedin.