Spaces:
Running
title: PRESUNI BPOM
emoji: ποΈ
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
ποΈ BPOM Compliance AI System
Sistem Cerdas Pemeriksaan Kepatuhan Registrasi Produk Pangan Berbasis AI
π Coba Demo Langsung Β· π Blueprint Teknis Β· π§ͺ Contoh Test Case
π Apa Itu Aplikasi Ini?
BPOM Compliance AI adalah aplikasi berbasis web yang secara otomatis memeriksa apakah produk pangan/suplemen memenuhi standar keamanan BPOM (Badan Pengawas Obat dan Makanan) Republik Indonesia.
Pengguna cukup meng-upload laporan uji laboratorium (PDF/DOCX) atau mengetik data hasil uji secara manual, lalu sistem akan:
- π Mengekstrak data cemaran mikroba, logam berat, dan informasi produk secara otomatis
- π·οΈ Mengklasifikasi kategori produk (Suplemen, Dairy, Daging Olahan, Buah & Sayur)
- βοΈ Memeriksa kepatuhan setiap parameter secara deterministik terhadap ambang batas resmi BPOM
- π€ Menjelaskan hasil pelanggaran dalam bahasa Indonesia yang mudah dipahami menggunakan AI (Gemini)
- π Menghasilkan laporan final dalam format PDF yang siap cetak
Arsitektur Hybrid: Rule-Based + AI
| Komponen | Metode | Kenapa? |
|---|---|---|
| Pengecekan Lulus/Gagal | Rule-Based (Deterministik) | Kepastian hukum mutlak β tidak boleh ada halusinasi AI |
| Klasifikasi Produk | Hybrid (Keyword + LLM Fallback) | Keyword matching cepat, LLM hanya dipanggil jika ambigu |
| Penjelasan Pelanggaran | RAG + LLM (Gemini) | Menjelaskan mengapa gagal, lengkap dengan pasal hukum |
| Referensi Hukum | Vector DB (ChromaDB) | Semantic search ke dokumen peraturan BPOM asli |
π Dasar Regulasi BPOM
Seluruh ambang batas dan aturan dalam sistem ini bersumber langsung dari peraturan resmi BPOM yang diunduh dari JDIH BPOM:
| Peraturan | Ruang Lingkup | Digunakan Untuk |
|---|---|---|
| PerBPOM No. 13 Tahun 2019 | Batas Maksimal Cemaran Mikroba dalam Pangan Olahan | Pengecekan ALT, Coliform, E.coli, Salmonella, S.aureus, Kapang/Khamir, B.cereus |
| PerBPOM No. 9 Tahun 2022 | Persyaratan Cemaran Logam Berat dalam Pangan Olahan | Pengecekan Timbal (Pb), Kadmium (Cd), Merkuri (Hg), Arsen (As) |
| PerBPOM No. 22 Tahun 2021 | Cara Produksi Pangan Olahan yang Baik (CPPOB) | Checklist sanitasi, higiene, penyimpanan, dan transportasi |
Kategori Produk yang Didukung
| Kategori | Contoh Produk |
|---|---|
SUPLEMEN |
Suplemen kesehatan, multivitamin, herbal kapsul |
DAIRY |
Susu UHT, yoghurt, keju olahan |
DAGING_OLAHAN |
Sosis, nugget, kornet, bakso kemasan |
BUAH_SAYUR |
Jus buah kemasan, sayur beku, manisan buah |
π Cara Menggunakan
Opsi 1: Langsung Coba Online (Tanpa Install)
Buka demo yang sudah di-deploy di Hugging Face Spaces:
π https://huggingface.co/spaces/Expanic/PRESUNI_BPOM
Opsi 2: Jalankan Sendiri di Lokal
Prasyarat
- Python 3.9 atau lebih baru
- API Key Google Gemini (gratis)
Step 1: Clone Repository
git clone https://github.com/Expanics/PRESUNIV_BPOM.git
cd PRESUNIV_BPOM
Step 2: Buat Virtual Environment & Install Dependencies
python -m venv venv
source venv/bin/activate # Mac / Linux
# venv\Scripts\activate # Windows
pip install -r requirements.txt
Step 3: Dapatkan API Key dari Google AI Studio
- Buka Google AI Studio
- Klik "Create API Key"
- Copy API Key yang dihasilkan (format:
AIzaSy...)
Step 4: Buat File .env
Buat file .env di root project:
echo "GEMINI_API_KEY=PASTE_API_KEY_KAMU_DISINI" > .env
Contoh isi .env:
GEMINI_API_KEY=AIzaSyC1234567890abcdefghijklmnop
β οΈ Jangan commit file
.envke GitHub! File ini berisi API key pribadi kamu.
Step 5: (Opsional) Update Database Regulasi
Jika kamu menambahkan PDF regulasi BPOM baru ke folder data/regulations/, jalankan:
python src/ingest.py
Step 6: Jalankan Aplikasi
python src/app.py
Buka browser di http://127.0.0.1:7860 π
π§ͺ Cara Mencoba / Test Case
Tersedia 3 skenario pengujian di file TEST_CASES.md yang bisa langsung di-copy-paste ke dalam aplikasi:
| No | Skenario | Deskripsi | Hasil yang Diharapkan |
|---|---|---|---|
| 1 | Full Approve β | Semua parameter lolos | Semua PASS, narasi positif |
| 2 | Partial Violations β οΈ | Coliform, Kapang, Timbal, Arsen melebihi batas | 4 parameter FAIL, sisanya PASS |
| 3 | Full Fail β | Semua cemaran gagal + klaim obat ilegal | Semua FAIL + peringatan klaim terlarang |
Cara Coba:
- Buka aplikasi β Tab "1. π₯ Input Dokumen"
- Buka file
TEST_CASES.md, copy salah satu blok teks - Paste ke area "Atau Masukkan Teks Manual"
- Klik "π Analisis Dokumen"
- Cek hasilnya di Tab "2. π Review Hasil AI"
- Klik "β Setuju & Buat Laporan Final" untuk generate laporan PDF
ποΈ Struktur Project
PRESUNIV_BPOM/
βββ app.py # Entry point (untuk Hugging Face Spaces)
βββ requirements.txt # Daftar library Python
βββ .env # API Key Gemini (JANGAN di-commit)
βββ blueprint.md # Dokumentasi teknis lengkap
βββ TEST_CASES.md # Contoh data input untuk pengujian
β
βββ src/ # Source code utama
β βββ app.py # UI Gradio & state management
β βββ extractor.py # Ekstraktor teks β JSON (Regex + OCR)
β βββ classifier.py # Klasifikasi kategori produk
β βββ rule_engine.py # Core: pengecekan PASS/FAIL deterministik
β βββ rag_query.py # Semantic search ke ChromaDB
β βββ llm_narrator.py # Narasi penjelasan AI (Gemini)
β βββ report_generator.py # Generator laporan PDF & Markdown
β βββ ingest.py # Ingest regulasi PDF ke vector DB
β
βββ rules/ # Ambang batas BPOM (JSON)
β βββ microba_rules.json # PerBPOM No. 13/2019 β Cemaran Mikroba
β βββ logam_berat_rules.json # PerBPOM No. 9/2022 β Logam Berat
β βββ cppob_rules.json # PerBPOM No. 22/2021 β CPPOB
β
βββ data/regulations/ # PDF peraturan BPOM asli (dari JDIH)
β βββ SUPLEMEN/
β βββ DAIRY/
β βββ DAGING_OLAHAN/
β βββ BUAH_SAYUR/
β
βββ chroma_db/ # Vector database (auto-generated)
βββ prompts/ # Template prompt untuk LLM
βοΈ Tech Stack
| Komponen | Teknologi |
|---|---|
| UI / Frontend | Gradio |
| Generative AI | Google Gemini 1.5 Flash |
| Vector Database | ChromaDB (Persistent) |
| Embedding | sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 |
| Ekstraksi PDF | pdfplumber + pytesseract (OCR fallback) |
| Ekstraksi DOCX | python-docx |
| Laporan PDF | FPDF2 |
π Keamanan & Privasi Data
- Proses Rule-Based berjalan 100% lokal β data TIDAK dikirim ke server manapun
- Proses AI (narasi) mengirim ringkasan data ke Google Gemini API
- Untuk kebutuhan enterprise/rahasia: ganti Gemini dengan LLM open-source lokal (misal Llama 3)
π Dokumentasi Lengkap
Untuk memahami arsitektur, schema data, workflow tiap modul, dan cara menambahkan kategori produk baru, baca dokumentasi teknis lengkap di:
π blueprint.md
π Lisensi
Project ini dibuat untuk keperluan akademis Universitas Presiden (President University).
Dibuat dengan β€οΈ untuk keamanan pangan Indonesia
Seluruh aturan bersumber dari JDIH BPOM β Badan Pengawas Obat dan Makanan Republik Indonesia