← Semua proyek 03 · Produk mobile · Machine learning

SmartReceipt

Pencatatan struk dengan OCR di perangkat, offline dan otomatis.

100% offline · klasifikasi otomatis

Peran Project Manager · ML developer Tim 4 orang Periode Oktober 2026
Flutter ML Kit TF-IDF + NB SQLite
SmartReceipt — Produk mobile · Machine learning
6.026 Sampel latih
1.419 Produk unik
15 Kategori
0 Ketergantungan server
Peran
Project Manager
Tim
4 orang
Durasi
1 bulan
Tipe
Project-based learning

Konteks & masalah

Mencatat pengeluaran manual cepat ditinggalkan karena membosankan. Struk sudah memuat semua datanya, tetapi dalam teks cetak thermal yang berisik: singkatan, salah ketik, dan format berbeda antar toko. Datanya juga tidak boleh keluar dari perangkat.

Peran & tanggung jawab

Saya memegang perencanaan proyek dan pengembangan model machine learning. Dua anggota mengerjakan aplikasi dan antarmuka, satu menangani data dan evaluasi; saya juga menjaga keputusan model tetap sejalan dengan keputusan produk.

Perencanaan

Urutannya sengaja dibalik: model dan data dulu, antarmuka menyusul, karena kualitas keluaran model menentukan berapa banyak koreksi manual pengguna. Satu aturan tidak boleh dilanggar: model berjalan sepenuhnya di perangkat.

Koordinasi

Tim kecil dan tenggat satu bulan, jadi koordinasi harian dan singkat. Yang saya jaga adalah kesepakatan format data — nama kategori, kode, dan struktur hasil klasifikasi — agar kedua sisi bisa diintegrasikan tanpa kejutan.

Pemantauan progress

Model diukur dengan matriks kebingungan dan akurasi per kategori, bukan perasaan "sudah bagus". Data uji dipisah berdasarkan produk unik agar tidak bocor ke data latih. Aplikasi diukur dari satu struk bisa diproses sampai tersimpan.

Risiko & penanganan

Risiko Akurasi model terlihat tinggi karena kebocoran data antara latih dan uji.
Penanganan Pembagian data berbasis produk unik, bukan baris acak.
Risiko Teks hasil OCR terlalu berisik untuk diklasifikasi dengan baik.
Penanganan Normalisasi teks dan perluasan singkatan sebelum klasifikasi, ditambah jalur "perlu ditinjau" saat model tidak yakin.
Risiko Model bergantung pada server sehingga melanggar batasan privasi.
Penanganan Model dilatih offline lalu dijalankan di perangkat dengan bobot yang dibundel di aplikasi.

Hasil

  • Aplikasi dapat memotret struk, mengenali teks, dan mengelompokkan item ke kategori secara otomatis.
  • Analitik pengeluaran dan riwayat struk tersedia tanpa koneksi internet.
  • Koreksi dari pengguna disimpan sebagai data latih tambahan untuk perbaikan model.
  • Memenuhi target project-based learning sesuai harapan pengampu.

Yang akan saya lakukan berbeda

Saya belajar bahwa mengukur model bukan pekerjaan sekali jadi. Versi pertama terlihat akurat, tetapi setelah diuji dengan produk yang belum pernah dilihat, kesalahannya terkonsentrasi di kategori yang mirip — misalnya Makanan dan Minuman. Ke depan saya akan menyiapkan data uji dari sumber berbeda sejak awal, bukan hanya memisahkan data yang sama.

Artefak

Dokumentasi direkonstruksi dari arsip proyek untuk keperluan portofolio.