Spaces:
Sleeping
Sleeping
| # prompt: give me app.py | |
| import streamlit as st | |
| import os | |
| from PIL import Image | |
| import openai | |
| import easyocr | |
| # Set OpenAI API key | |
| openai.api_key = os.environ.get("OPENAI_API_KEY") | |
| # Initialize OCR reader | |
| reader = easyocr.Reader(['en']) | |
| def extract_text_from_image(image): | |
| """Extract text from the image using easyocr.""" | |
| text = reader.readtext(image, detail=0) | |
| return " ".join(text) | |
| def answer_question(image, question): | |
| """Answer a question about the image using OpenAI's API.""" | |
| extracted_text = extract_text_from_image(image) | |
| prompt = f""" | |
| I have an image with the following text extracted from it: {extracted_text} | |
| Here's a question about the image: {question} | |
| Answer the question based on the image content and text. | |
| """ | |
| response = openai.ChatCompletion.create( | |
| model="gpt-3.5-turbo", # Or a suitable model | |
| messages=[{"role": "user", "content": prompt}] | |
| ) | |
| return response.choices[0].message.content | |
| # Streamlit app | |
| st.title("Multimodal AI Assistant") | |
| uploaded_image = st.file_uploader("Upload an image", type=["jpg", "jpeg", "png"]) | |
| if uploaded_image is not None: | |
| image = Image.open(uploaded_image) | |
| st.image(image, caption="Uploaded Image", use_column_width=True) | |
| question = st.text_input("Ask a question about the image") | |
| if question: | |
| with st.spinner("Generating answer..."): | |
| answer = answer_question(image, question) | |
| st.write("Answer:", answer) | |