PRESUNI_BPOM / README.md
Expanic's picture
Deploy React + FastAPI to HuggingFace Spaces
1bb466c
|
Raw
History Blame Contribute Delete
8.62 kB
metadata
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

Hugging Face Space Python Gradio Gemini

πŸš€ 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:

  1. πŸ” Mengekstrak data cemaran mikroba, logam berat, dan informasi produk secara otomatis
  2. 🏷️ Mengklasifikasi kategori produk (Suplemen, Dairy, Daging Olahan, Buah & Sayur)
  3. βš–οΈ Memeriksa kepatuhan setiap parameter secara deterministik terhadap ambang batas resmi BPOM
  4. πŸ€– Menjelaskan hasil pelanggaran dalam bahasa Indonesia yang mudah dipahami menggunakan AI (Gemini)
  5. πŸ“„ 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

  1. Buka Google AI Studio
  2. Klik "Create API Key"
  3. 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 .env ke 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:

  1. Buka aplikasi β†’ Tab "1. πŸ“₯ Input Dokumen"
  2. Buka file TEST_CASES.md, copy salah satu blok teks
  3. Paste ke area "Atau Masukkan Teks Manual"
  4. Klik "πŸ” Analisis Dokumen"
  5. Cek hasilnya di Tab "2. πŸ“‹ Review Hasil AI"
  6. 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