You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Aktor teater tunanetra mengalami hambatan akses naskah (Format-Access Failure) ketika naskah dibagikan dalam format PDF hasil scan atau foto dokumen tanpa text layer, sehingga dokumen tersebut tidak dapat dibaca oleh Screen Reader (VoiceOver) secara mandiri.
Proposed Solution:
Aplikasi iOS yang mengekstrak teks dari naskah berbasis gambar/PDF menggunakan Vision OCR, memilah teks ke dalam struktur dialog standar via AI parser, dan menyajikannya dalam antarmuka yang ramah Screen Reader (VoiceOver) untuk navigasi latihan mandiri.
Success Metrics:
OCR Conversion Rate:$\ge 90%$ akurasi ekstraksi teks naskah ke format terstruktur (Scene, Tokoh, Dialog, Cue).
VoiceOver Navigation Independence:$100%$ komponen antarmuka dapat diakses mandiri menggunakan gestur rotor dan swipe per blok dialog VoiceOver.
Page-Matching Accuracy:$100%$ kesesuaian nomor halaman digital di aplikasi dengan jumlah halaman dokumen fisik/PDF asli.
Processing Latency: Proses OCR dan perapian naskah 1–5 halaman selesai dalam $< 5$ detik.
Scope of Work
Cakupan Pengguna
No
User Category
User Main Activity
1
Aktor Tunanetra(Primary User)
Mengimpor naskah fisik/PDF gambar, mendengarkan pembacaan naskah terstruktur halaman-per-halaman via VoiceOver, dan menavigasi baris dialog/adegan secara mandiri selama latihan.
Memfasilitasi pengguna untuk mengimpor file PDF gambar atau dokumen naskah fisik, mengekstrak teks mentah per halaman menggunakan Vision OCR, dan mencatat total halaman dokumen asli.
Document Status
Approved
I.1.1. User Story
No
User Story
Priority
Notes
1
Sebagai aktor tunanetra, saya ingin memindai file PDF naskah berbasis gambar agar teks naskah dapat diekstrak menjadi teks digital sesuai urutan halaman aslinya.
Must Have
Terintegrasi dengan DocumentPicker dan kamera VisionKit.
I.1.2. Scenario
No
Type
Description
Validation
1
Positif
Memilih file PDF naskah (misal: 11 halaman).
Sistem mengekstrak teks dari ke-11 halaman dan memicu pengumuman suara (Accessibility Announcement): "11 halaman naskah berhasil dipindai, memproses format...".
2
Negatif
Berkas PDF rusak / gambar buram.
Sistem menampilkan dialog kesalahan aksesibel dengan tombol "Coba Lagi" dan fokus VoiceOver otomatis diarahkan ke tombol tersebut.
3
Negatif
Pengguna membatalkan pemilihan dokumen.
Sistem mengembalikan fokus layar ke halaman utama tanpa error.
I.1.3. User Interaction and Design
Description
UI Design / Accessibility Notes
Ingestion Sheet / File Picker
Area sentuh tombol minimal $44 \times 44\text{ pt}$. Label VoiceOver: "Pilih naskah PDF atau foto, tombol". Umpan balik haptik sukses/gagal di akhir proses.
Memproses teks hasil OCR menjadi entitas terstruktur (Scene, Character, Dialogue, Stage Direction), menjaga pemetaan batas halaman (1:1), memecah dialog menjadi blok-blok terpisah, dan menyimpannya ke SwiftData.
Document Status
Approved
II.1.1. User Story
No
User Story
Priority
Notes
1
Sebagai aktor, saya ingin naskah terbagi persis per halaman aslinya dan terpecah per baris dialog agar saya dapat melompat baris per baris tanpa terbebani membaca 1 halaman penuh sekaligus.
Must Have
Disimpan lokal ke model database SwiftData.
II.1.2. Scenario
No
Type
Description
Validation
1
Positif
Parsing teks naskah 11 halaman.
Menghasilkan 11 objek ScriptPage, di mana setiap halaman memuat kumpulan ScriptBlock (dialog/paragraf terpisah).
2
Negatif
Format teks dalam 1 halaman tidak memiliki pemisah dialog yang jelas.
Sistem memecah teks per paragraf narasi tanpa menghilangkan nomor halaman asli atau membuat aplikasi crash.
II.1.3. User Interaction and Design
Description
UI Design / Accessibility Notes
Processing State
Indikator progres dengan label suara dinamis: "Sedang menyusun naskah per halaman...".
Menampilkan beranda utama dengan akses cepat ke naskah terakhir yang dibaca (Continue Reading), tombol aksi impor naskah baru, serta daftar ringkas naskah dan pencarian.
Document Status
Approved
III.1.1. User Story
No
User Story
Priority
Notes
1
Sebagai aktor, saya ingin melihat naskah yang terakhir saya buka di beranda agar saya dapat langsung melanjutkan latihan pada halaman terakhir yang sedang dipelajari.
Must Have
Memuat 1 kartu naskah aktif terakhir beserta info halaman terakhir dibaca.
III.1.2. Scenario
No
Type
Description
Validation
1
Positif
Membuka beranda saat ada riwayat naskah aktif.
Menampilkan kartu Recent Script dengan info judul naskah, posisi halaman terakhir (misal: "Halaman 4 dari 11"), dan tombol "Lanjutkan Membaca".
2
Positif
Membuka beranda saat pertama kali (Empty State).
Menampilkan instruksi suara ramah dan tombol besar "Mulai Pindai Naskah Pertama".
3
Positif
Mengetuk tombol "Import / Pindai Naskah".
Membuka alur File Ingestion (Epic [AppName]-01).
III.1.3. User Interaction and Design
Description
UI Design / Accessibility Notes
Homepage Layout
Desain kontras tinggi (Grayscale compliant). Kartu naskah digabung menjadi satu elemen VoiceOver: "Naskah aktif [Judul], terakhir di halaman 4 dari 11. Ketuk dua kali untuk melanjutkan."
Menampilkan naskah dengan sistem paginasi 1:1 sesuai dokumen asli (tanpa endless scroll), memecah isi naskah per dialog/paragraf menjadi elemen VoiceOver mandiri (next/previous), serta menyediakan Custom Accessibility Rotor.
Document Status
Approved
V.1.1. User Story
No
User Story
Priority
Notes
1
Sebagai aktor tunanetra, saya ingin naskah terbagi per halaman seperti aslinya dan berpindah dialog demi dialog dengan gestur geser (swipe) agar saya dapat mengontrol ritme latihan tanpa harus mendengarkan satu halaman penuh selesai.
Must Have
Menggunakan TabView (Paged Style) & AccessibilityRotor.
V.1.2. Scenario
No
Type
Description
Validation
1
Positif
Membuka naskah 11 halaman.
Antarmuka menampilkan Halaman 1 dari 11. Tidak ada infinite scroll. Paginasi dapat digeser horizontal atau via tombol navigasi halaman.
2
Positif
Menavigasi dialog di dalam satu halaman aktif via VoiceOver.
Setiap swipe kanan berpindah ke 1 blok dialog berikutnya: "Tokoh [Nama Tokoh], Dialog: [Teks Dialog]". Pengguna bisa langsung swipe kiri untuk kembali ke dialog sebelumnya tanpa mengulang halaman.
3
Positif
Menggunakan Custom Rotor VoiceOver.
Aktor dapat memilih rotor: Per Halaman (Page), Per Adegan (Scene), Per Tokoh (Character), atau Arahan Aksi (Stage Cues).
4
Positif
Berpindah ke halaman berikutnya.
Fokus VoiceOver otomatis mengumumkan: "Halaman 2 dari 11" dan memposisikan fokus pada dialog pertama halaman tersebut.
V.1.3. User Interaction and Design
Description
UI Design / Accessibility Notes
Paged Reader Layout
Paginasi kartu 1:1 (Page Style TabView / Stepper). Setiap dialog dibungkus dalam .accessibilityElement(children: .combine). Indikator halaman eksplisit: "Halaman 1 dari 11". Target sentuh tombol navigasi $\ge 44 \times 44\text{ pt}$.