File size: 1,809 Bytes
d54a5a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
license: mit
tags:
  - ocr
  - receipt
  - object-detection
  - yolov8
  - tensorflow
  - keras
  - text-recognition
  - expense-classification
language:
  - id
---

# NotePay β€” Receipt OCR Models

Model AI untuk pipeline OCR struk belanja otomatis.
Bagian dari project **NotePay** (Coding Camp 2026 β€” DBS Foundation).

## Pipeline

```
Foto Struk
  β†’ [1] YOLOv8n-OBB    : deteksi 4 region (nama_toko, line_item, tanggal_waktu, total_belanja)
  β†’ [2] CRNN + CTC      : text recognition per crop (TensorFlow/Keras)
  β†’ [3] Classifier       : klasifikasi kategori pengeluaran tiap line item
  β†’ JSON terstruktur
```

## Model Files

| File | Deskripsi |
|---|---|
| `yolo/best.pt` | YOLOv8n-OBB β€” deteksi region struk |
| `crnn/inference_model.keras` | CRNN+CTC β€” baca teks dari crop |
| `classifier/classifier_model.keras` | Text classifier β€” kategori pengeluaran |

## Expense Categories (Classifier)

| ID | Kategori |
|---|---|
| 0 | Makanan & Minuman |
| 1 | Kebersihan & Perawatan |
| 2 | Rumah Tangga |
| 3 | Kesehatan & Farmasi |
| 4 | Elektronik & Pulsa |
| 5 | Pakaian & Aksesori |
| 6 | Lain-lain |

## Usage

```python
from huggingface_hub import hf_hub_download

# Download semua model
yolo_path       = hf_hub_download("NeoCode77/notepay-models", "yolo/best.pt")
crnn_path       = hf_hub_download("NeoCode77/notepay-models", "crnn/inference_model.keras")
classifier_path = hf_hub_download("NeoCode77/notepay-models", "classifier/classifier_model.keras")

# Load
from ultralytics import YOLO
import keras

yolo       = YOLO(yolo_path)
crnn       = keras.models.load_model(crnn_path, compile=False, safe_mode=False)
classifier = keras.models.load_model(classifier_path, compile=False)
```

Atau gunakan `ai/model_loader.py` dari repo ini yang sudah handle caching & GPU setup.