# Pengujian Efektivitas Sistem Rekomendasi OCR + Gemini AI

## Struktur File

```
tools/pengujian_ai/
├── skenario_pengujian.csv        # 30 skenario input pengujian Gemini AI
├── hasil_pengujian_template.csv  # Template isi hasil aktual dari aplikasi
├── evaluasi_gemini.py            # Script confusion matrix + classification report
├── evaluasi_ocr.py               # Script uji WER/CER akurasi OCR
└── README.md                     # Panduan ini
```

---

## Langkah 1 — Install Dependencies

```bash
pip install scikit-learn pandas matplotlib jiwer openpyxl
```

---

## Langkah 2 — Uji Gemini AI (Confusion Matrix)

### A. Lakukan pengujian manual di aplikasi

Buka `skenario_pengujian.csv`. Setiap baris adalah 1 skenario uji.  
Untuk setiap skenario, jalankan aplikasi dengan input yang sesuai, lalu catat:

| Yang Dicatat | Kolom di Script |
|---|---|
| Apakah kategori rekomendasi sesuai? (1/0) | `kategori_actual` |
| Apakah harga tidak melebihi budget? (1/0) | `budget_actual` |
| Apakah tidak ada alergen? (1/0) | `alergen_actual` |
| Apakah semua kriteria terpenuhi? (1/0) | `overall_actual` |

### B. Edit `evaluasi_gemini.py`

Ganti bagian `# ISI DARI HASIL PENGUJIAN APLIKASI` dengan angka 1/0 sesuai hasil Anda.

### C. Jalankan

```bash
cd tools/pengujian_ai
python evaluasi_gemini.py
```

**Output yang dihasilkan:**
- Tabel Confusion Matrix (TP, FP, FN, TN) per kriteria
- Accuracy, Precision, Recall, F1-Score
- Gambar `confusion_matrix_gemini.png` (siap masuk laporan)
- Classification Report lengkap

---

## Langkah 3 — Uji Akurasi OCR (WER/CER)

### A. Siapkan data

Ambil 20–30 foto menu Amor Coffee.  
Untuk setiap foto, ketik manual teks yang tertera (ground truth), lalu catat teks hasil OCR dari aplikasi.

### B. Edit `evaluasi_ocr.py`

Isi list `data_ocr` dengan tuple `(foto_id, ground_truth, hasil_ocr)`.

### C. Jalankan

```bash
python evaluasi_ocr.py
```

**Output yang dihasilkan:**
- WER & CER per foto
- Rata-rata akurasi OCR keseluruhan
- File `hasil_uji_ocr.xlsx`

---

## Cara Baca Hasil

### Confusion Matrix

| | Prediksi Valid | Prediksi Tidak Valid |
|---|---|---|
| **Aktual Valid** | TP ✅ | FN ❌ |
| **Aktual Tidak Valid** | FP ❌ | TN ✅ |

### Rumus Metrik

| Metrik | Rumus | Artinya |
|---|---|---|
| Accuracy | (TP+TN)/(TP+FP+FN+TN) | % prediksi benar secara keseluruhan |
| Precision | TP/(TP+FP) | Dari yang dinyatakan valid, berapa % benar? |
| Recall | TP/(TP+FN) | Dari yang seharusnya valid, berapa % terdeteksi? |
| F1-Score | 2×P×R/(P+R) | Rata-rata harmonis Precision & Recall |

### Interpretasi WER/CER (OCR)

| Nilai | Interpretasi |
|---|---|
| WER < 5% | ✅ Sangat Baik |
| WER 5–15% | ✅ Baik |
| WER 15–30% | ⚠️ Cukup |
| WER > 30% | ❌ Perlu perbaikan |

---

## Sitasi untuk Skripsi

```
Agnes Permata Sari, Fathiya Salamah, Zaka Gustian, M Chairul Fajrin. (2024).
Pemanfaatan Teknologi AI Seperti ChatGPT, Gemini, dan Perplexity dalam
Pengerjaan Tugas Mahasiswa. Scientica: Jurnal Ilmiah Sains dan Teknologi,
Vol. 3 No. 2, hal. 481–487.
```
