rockerritesh's picture
Update app.py
cd1242f verified
raw
history blame
2.2 kB
import streamlit as st
import requests
import json # Add this import to parse JSON responses
def extract_text_from_image(uploaded_file):
"""Upload image to the text extraction API and return extracted text."""
try:
# Reset file pointer to the beginning
uploaded_file.seek(0)
# Set the correct filename and MIME type
file_name = uploaded_file.name if uploaded_file.name else "uploaded_image.png"
mime_type = uploaded_file.type if uploaded_file.type else "image/png"
# Prepare the file tuple (filename, file object, MIME type)
files = {'image': (file_name, uploaded_file, mime_type)}
# Make the API call
response = requests.post('https://api-1-zvvu.onrender.com/upload', files=files)
if response.status_code == 200:
# Parse and return the response
response_data = response.json()
return response_data.get("text", "No text extracted.")
else:
return f"Error: {response.status_code} - {response.text}"
except requests.RequestException as e:
return f"Request failed: {e}"
def main():
st.title('Image Text Extraction')
# Camera input toggle
enable = st.checkbox("Enable camera")
# Camera input
picture = st.camera_input("Take a picture", disabled=not enable)
# File uploader
uploaded_file = st.file_uploader("Or upload an image...", type=['png', 'jpg', 'jpeg'])
# Determine which image to use
image_to_process = picture or uploaded_file
if image_to_process:
# Display the image
st.image(image_to_process, caption='Uploaded/Captured Image', use_column_width=True)
# Extract text button
if st.button('Extract Text'):
# Show loading spinner
with st.spinner('Extracting text...'):
# Call the text extraction function
extracted_text = extract_text_from_image(image_to_process)
# Display the extracted text
st.subheader('Extracted Text:')
st.text_area("", value=extracted_text, height=300)
if __name__ == '__main__':
main()