YourAIEngineer commited on
Commit
1a6c41c
·
verified ·
1 Parent(s): a04d997

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +4 -65
app.py CHANGED
@@ -26,76 +26,15 @@ OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
26
 
27
  @st.cache_resource
28
  def initialize_ocr():
29
- """Inisialisasi model PaddleOCR."""
30
  try:
31
- # Menggunakan CPU, tanpa parameter yang tidak dikenali
32
- return PaddleOCR(use_gpu=False, lang='en', use_angle_cls=True)
33
  except Exception as e:
34
  st.error(f"Gagal inisialisasi OCR: {e}")
35
  return None
36
- except Exception as e:
37
- st.error(f"Gagal inisialisasi OCR: {e}")
38
- return None
39
-
40
-
41
- def parse_numeric_value(text: str) -> float:
42
- """Parse string menjadi float, menghapus karakter non-numerik."""
43
- if not text:
44
- return 0.0
45
- cleaned = re.sub(r"[^\d\.\-]", "", str(text))
46
- if cleaned in ["", ".", "-"]:
47
- return 0.0
48
- try:
49
- return float(cleaned)
50
- except:
51
- return 0.0
52
-
53
-
54
- def get_nutrition_advice(serving_size, sugar_norm, fat_norm, sugar_grade, fat_grade, final_grade):
55
- """Memanggil API OpenRouter untuk saran nutrisi."""
56
- prompt = f"""
57
- Anda adalah ahli gizi dari Indonesia yang ramah.
58
- - Takaran Saji: {serving_size} g/ml
59
- - Gula (per 100): {sugar_norm:.2f} g (Grade {sugar_grade.replace('Grade ', '')})
60
- - Lemak Jenuh (per 100): {fat_norm:.2f} g (Grade {fat_grade.replace('Grade ', '')})
61
- - Grade Akhir: {final_grade.replace('Grade ', '')}
62
-
63
- Berikan saran nutrisi singkat 50-80 kata, fokus pada dampak kesehatan dan tips praktis.
64
- """
65
- headers = {"Authorization": f"Bearer {OPENROUTER_API_KEY}", "Content-Type": "application/json"}
66
- payload = {
67
- "model": "mistralai/mistral-7b-instruct:free",
68
- "messages": [{"role": "user", "content": prompt}],
69
- "max_tokens": 250,
70
- "temperature": 0.7
71
- }
72
- try:
73
- r = requests.post(f"{OPENROUTER_BASE_URL}/chat/completions", headers=headers, json=payload, timeout=30)
74
- r.raise_for_status()
75
- data = r.json()
76
- return data["choices"][0]["message"]["content"].strip()
77
- except Exception as e:
78
- return f"Error: {e}"
79
-
80
-
81
- def get_grade_from_value(value, thresholds):
82
- if value <= thresholds["A"]: return "Grade A"
83
- if value <= thresholds["B"]: return "Grade B"
84
- if value <= thresholds["C"]: return "Grade C"
85
- return "Grade D"
86
-
87
-
88
- def get_grade_color(grade):
89
- colors = {
90
- "Grade A": ("#2ecc71","white"),
91
- "Grade B": ("#f1c40f","black"),
92
- "Grade C": ("#e67e22","white"),
93
- "Grade D": ("#e74c3c","white")
94
- }
95
- return colors.get(grade,("#bdc3c7","black"))
96
-
97
 
98
- def reset_state():
99
  for k in ['ocr_done','data','calculated']:
100
  st.session_state.pop(k, None)
101
 
 
26
 
27
  @st.cache_resource
28
  def initialize_ocr():
29
+ """Inisialisasi model PaddleOCR tanpa parameter GPU."""
30
  try:
31
+ # Hanya tentukan language dan angle classifier
32
+ return PaddleOCR(lang='en', use_angle_cls=True)
33
  except Exception as e:
34
  st.error(f"Gagal inisialisasi OCR: {e}")
35
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
+ def reset_state():():
38
  for k in ['ocr_done','data','calculated']:
39
  st.session_state.pop(k, None)
40