Spaces:
Sleeping
Sleeping
File size: 3,209 Bytes
c953483 914d63a dd380e5 4fdc44f dd380e5 c953483 dd380e5 c953483 dd380e5 c953483 dd380e5 336268e dd380e5 c953483 dd380e5 336268e dd380e5 c953483 dd380e5 711369f dd380e5 11ddcf8 dd380e5 11ddcf8 dd380e5 336268e dd380e5 336268e dd380e5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
import streamlit as st
from PIL import Image
import google.generativeai as genai
# Configure Google Generative AI
genai_api_key = "AIzaSyCOEqA_IZlpWCHhMOGaDJ3iJjl5cRmzKgQ"
genai.configure(api_key=genai_api_key)
# Initialize Gemini model
@st.cache_resource
def load_gemini_model():
model = genai.GenerativeModel("gemini-1.5-flash")
return model
# Function to extract text from the image using Gemini model
def extract_text_from_image(uploaded_file, model):
# Open the uploaded file as a PIL image
image = Image.open(uploaded_file).convert("RGB")
# Generate content using the Gemini model with the image
response = model.generate_content(["Extract text from this medical report:", image])
extracted_text = response.text.strip()
return extracted_text
# Function to interpret the extracted text in layman's language
def interpret_medical_report(extracted_text, model):
# Provide interpretation in layman's terms
prompt = (
f"The following is a medical report text:\n\n"
f"{extracted_text}\n\n"
"Please interpret this report for 7th grader and non native english speaker, "
"explaining the main findings in as short as possible without any special character"
)
response = model.generate_content([prompt])
interpretation = response.text.strip()
return interpretation
# Function to provide recommendations based on the extracted text
def provide_recommendations(extracted_text, model):
# Provide recommendations
prompt = (
f"Based on the medical report text below:\n\n"
f"{extracted_text}\n\n"
"What recommendations would you give to the patient for managing their health?"
"Provide brief suggestions that are easy to understand for someone without medical knowledge without any special character."
)
response = model.generate_content([prompt])
recommendations = response.text.strip()
return recommendations
# Streamlit UI for the web app
def main():
st.title("Medical Report Analyzer")
st.write("Upload an image of a medical report")
# Load the Gemini model
model = load_gemini_model()
# File uploader for medical report image
uploaded_image = st.file_uploader("Upload Medical Report Image", type=["png", "jpg", "jpeg"])
if uploaded_image is not None:
image = Image.open(uploaded_image).convert("RGB")
st.image(image, caption="Uploaded Medical Report Image", use_container_width=True)
if st.button("Analyze Report"):
with st.spinner("Processing image and analyzing report..."):
# Extract text from image
extracted_text = extract_text_from_image(uploaded_image, model)
# Interpret the extracted text
st.subheader("Interpretation:")
interpretation = interpret_medical_report(extracted_text, model)
st.text(interpretation)
# Provide health recommendations
st.subheader("Recommendations:")
recommendations = provide_recommendations(extracted_text, model)
st.text(recommendations)
if __name__ == "__main__":
main()
|