|
|
| import gradio as gr |
| import pandas as pd |
| import cv2 |
| import easyocr |
| import google.generativeai as genai |
|
|
| reader= easyocr.Reader(['en']) |
| API_KEY = 'AIzaSyC85O_R-H8VhRpxAEj7iUAw0o7NCNJ_VmE' |
| genai.configure(api_key = API_KEY) |
|
|
| allergies = "peanuts,dairy,gluten" |
|
|
| def ocr_genai(image): |
| results=reader.readtext(image) |
| results=pd.DataFrame(results,columns=['bbox','text','conf']) |
| model = genai.GenerativeModel('gemini-pro') |
| chat = model.start_chat(history = []) |
| instruction = "" |
| question = ' '.join(results.text.astype(str)) |
| response = chat.send_message(question+f"The ingredients are extracted from EasyOCR and may not be well formatted. Extract only the ingredients. The user is allergic to {allergies}. For each ingredient, determine if it poses a risk to the user. If it does, classify the risk level as 'High', 'Moderate', or 'Low', and provide a one-line description explaining why and how it poses a risk. The response should be in text format with fields 'ingredient' and 'risk'. The 'risk' field should contain both the risk level and the description.") |
| return response.text |
|
|
| title = "SafeSpoon" |
| description = "Upload an image of ingredients" |
| inputs = gr.Image() |
| outputs = gr.Textbox(label='Results',lines = 20) |
| interface = gr.Interface(fn=ocr_genai, inputs=inputs, outputs=outputs,title=title) |
| interface.launch(share=True) |