CoolFace
Apppublic

Cnass/mangaocr

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes
App README

Manga OCR Dataset Builder

Manga sayfalarindan konusma balonlarini otomatik tespit edip, PaddleOCR Recognition modelini fine-tune etmek icin kullanilacak etiketli bir veri seti olusturmaya yarayan, mobil uyumlu bir Gradio uygulamasi.

Ozellikler

  • —Segmentasyon: huyvux3005/manga109-segmentation-bubble (YOLO11n instance segmentation) modeli ile konusma balonu / metin bolgesi tespiti.
  • —Bitisik balon ayirma: Segmentasyonun ince bir piksel koprusuyle birlestirdigi iki ayri balon otomatik olarak ayri bolgelere ayrilir (erosion + connected components tabanli). Otomatik ayirma yetersiz kaldiginda, "Elle Kirp" paneli ile aktif bolge uzerinde slider'lar (Sol/Ust/Sag/Alt %) kullanarak istediginiz kadar alan secip her birini ayri crop olarak ekleyebilirsiniz — bu yontem mobil dokunmatik cihazlarda da guvenilir calisir.
  • —OCR: PaddleOCR PP-OCRv5 (Ingilizce) ile otomatik metin tanima.
  • —Toplu (ZIP) yukleme: Birden fazla manga sayfasi iceren bir .zip dosyasi yuklenip sayfalar otomatik sirayla islenebilir (tek seferde en fazla 60 sayfa); bir sayfanin tum bolgeleri bitince kuyruktaki bir sonraki sayfa otomatik acilir. Sayfalar bellekte degil diskte tutulur, boylece cok sayfali zip'lerde bellek/baglanti zaman asimi sorunu yasanmaz.
  • —Duzenleme: Kullanici OCR sonucunu onaylamadan once duzenleyebilir.
  • —Toplu (batch) gonderim: Onaylanan ornekler once yerel bir gonderim kuyrugunda birikir; "Dataset'e Gonder" butonuna basildiginda kuyruktaki TUM ornekler TEK BIR Hugging Face Hub commit'inde gonderilir. Bu, HF Hub'in saatlik commit limitini (128/saat) asmayi onler — onlarca ornek onaylasaniz bile tek commit yeterlidir. Kuyruk, gonderilmeden once "Kuyrugu Temizle" ile iptal edilebilir.
  • —Otomatik senkronizasyon: Onaylanan orneklerimiz `Cnass/manga` dataset repository'sine yuklenir (images/NNNNNN.png + train.csv).
  • —Duplicate kontrolu: SHA256 hash ile ayni gorselin iki kez yuklenmesi engellenir (hem repo'daki mevcut ornekler hem de henuz gonderilmemis kuyruktaki ornekler icin).
  • —Mobil oncelikli arayuz: Buyuk dokunmatik butonlar, ilerleme cubugu, tam ekran crop onizlemesi.

Kurulum (Space Secrets)

Bu uygulamanin calismasi icin aşağıdaki secret'in Space ayarlarindan tanimlanmasi gerekir:

Secret adiAciklama
HF_TOKENCnass/manga dataset repo'suna yazma yetkisi olan bir Hugging Face erisim tokeni (write scope).

Onerilen donanim

Segmentasyon ve OCR modelleri CPU uzerinde calisacak sekilde yapilandirilmistir. Akici bir deneyim icin en az 8 vCPU / 32 GB RAM donanim katmani onerilir.

Dosya yapisi

app.py              # Gradio arayuzu ve olay akisi
config.py            # Tum yapilandirma degerleri (hardcoded deger yok)
segmenter.py          # YOLO11n balon segmentasyonu + bitisik balon ayirma
ocr.py               # PaddleOCR PP-OCRv5 metin tanima
dataset_manager.py     # Oturum ici durum, sayfa kuyrugu, manuel bolme, validasyon
hf_dataset.py          # Hugging Face Hub dataset upload/duplicate/CSV yonetimi
utils.py             # Loglama, hash, zip cikartma, dosya adlandirma yardimcilari
requirements.txt

Kullanim akisi

Tekli sayfa

  1. 1.Manga Yukle — bir manga sayfasi (JPG/PNG) yukleyin.
  2. 2.Detect Text — segmentasyon modeli metin bolgelerini tespit eder, her biri ayri PNG olarak kirpilir.
  3. 3.Ilk crop acilir, OCR sonucu otomatik olarak metin kutusuna yazilir.
  4. 4.Gerekirse metni duzenleyin.
  5. 5.Kaydet ve Sonraki ile onaylayip gonderim kuyruguna ekleyin (henuz Hugging Face'e gonderilmez), veya Atla ile bu bolgeyi atlayin, veya Tekrar OCR ile yeniden tanima calistirin.
  6. 6.Aktif bolge aslinda birbirine bitisik iki (veya daha fazla) balon iceriyorsa, "✂️ Elle Kirp" butonuna basin: acilan panelde Sol/Ust/Sag/Alt yuzde slider'larini kaydirarak istediginiz alani secin (onizleme aninda guncellenir), "Bu Alani Ekle" deyin; birden fazla balon varsa slider'lari yeniden ayarlayip tekrar ekleyin. Bitince "Tamamla" deyin — orijinal (birlesik) bolge, sectiginiz parcalarla degistirilir ve her biri ayri ayri OCR'lanip kuyruga eklenebilir. Vazgecmek icin "Iptal" kullanin.
  7. 7.Tum bolgeler islendiginde yeni bir sayfa yukleyebilirsiniz.
  8. 8.Onayladiginiz ornekler Gonderim Kuyrugu'nda birikir; istediginiz zaman "📤 Dataset'e Gonder" butonuna basarak kuyruktaki TUM ornekleri TEK BIR commit'te Hugging Face'e gonderin (rate limit sorunlarini onlemek icin onerilir — bkz. asagidaki not). Vazgecmek isterseniz "🗑️ Kuyrugu Temizle" ile kuyrugu bosaltabilirsiniz.
  9. 9.Dataset Durumu butonu ile repo'daki guncel ornek sayisini gorebilirsiniz.
Neden gonderim kuyrugu var? Hugging Face Hub, repository basina saatte 128 commit sinirlamasi uyguluyor. Her onaylanan ornegi aninda ayri ayri gondermek bu limiti hizla dolduruyordu (orn. ~40 ornekte 429 Too Many Requests hatasi). Bunun yerine ornekler once yerel olarak biriktirilir; "Dataset'e Gonder" dediginizde hepsi TEK bir commit halinde gonderilir — onlarca ornek onaylasaniz bile rate limit'e takilmazsiniz.

Toplu (ZIP) yukleme

  1. 1."Toplu Yukleme (ZIP)" bolumunden, icinde birden fazla manga sayfasi bulunan bir .zip dosyasi yukleyin (tek seferde en fazla 60 sayfa; daha fazlasi icin zip'i birden fazla parcaya bolup ayri ayri yukleyin).
  2. 2.Ilk sayfa otomatik olarak islenir; normal akisla (yukaridaki 3-6 adimlari) bolgeleri onaylayin/atlayin.
  3. 3.Bir sayfadaki tum bolgeler bitince, kuyruktaki bir sonraki sayfa otomatik olarak yuklenip Detect Text calistirilir — elle sayfa yuklemenize gerek kalmaz.
  4. 4.Ilerleme cubugunda hangi sayfada oldugunuz gosterilir (orn. "Sayfa 2/12: 003.png").
  5. 5.Kuyruk bitince tum sayfalarin tamamlandigi bildirilir.

Dataset formati

images/
  000001.png
  000002.png
train.csv
README.md

train.csv:

csv
image,text
images/000001.png,"Hello."
images/000002.png,"Let's go!"