|
import streamlit as st |
|
import requests |
|
import json |
|
|
|
def extract_text_from_image(uploaded_file): |
|
"""Upload image to the text extraction API and return extracted text.""" |
|
try: |
|
|
|
uploaded_file.seek(0) |
|
|
|
|
|
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" |
|
|
|
|
|
files = {'image': (file_name, uploaded_file, mime_type)} |
|
|
|
|
|
response = requests.post('https://api-1-zvvu.onrender.com/upload', files=files) |
|
|
|
if response.status_code == 200: |
|
|
|
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') |
|
|
|
|
|
enable = st.checkbox("Enable camera") |
|
|
|
|
|
picture = st.camera_input("Take a picture", disabled=not enable) |
|
|
|
|
|
uploaded_file = st.file_uploader("Or upload an image...", type=['png', 'jpg', 'jpeg']) |
|
|
|
|
|
image_to_process = picture or uploaded_file |
|
|
|
if image_to_process: |
|
|
|
st.image(image_to_process, caption='Uploaded/Captured Image', use_column_width=True) |
|
|
|
|
|
if st.button('Extract Text'): |
|
|
|
with st.spinner('Extracting text...'): |
|
|
|
extracted_text = extract_text_from_image(image_to_process) |
|
|
|
|
|
st.subheader('Extracted Text:') |
|
st.text_area("", value=extracted_text, height=300) |
|
|
|
if __name__ == '__main__': |
|
main() |