Tahir5's picture
Create app.py
d47801d verified
import streamlit as st
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
import torch
def load_model():
processor = TrOCRProcessor.from_pretrained('microsoft/trocr-base-handwritten')
model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-handwritten')
return processor, model
def recognize_text(image, processor, model):
pixel_values = processor(images=image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
return generated_text
def main():
st.title("Handwritten Text Recognition with TrOCR")
processor, model = load_model()
uploaded_file = st.file_uploader("Upload an image", type=["png", "jpg", "jpeg"])
image_url = st.text_input("Or enter an image URL:", "https://fki.tic.heia-fr.ch/static/img/a01-122-02-00.jpg")
if uploaded_file is not None:
image = Image.open(uploaded_file).convert("RGB")
elif image_url:
try:
image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")
except Exception as e:
st.error(f"Error loading image: {e}")
return
else:
st.warning("Please upload an image or provide a URL.")
return
st.image(image, caption="Uploaded Image", use_column_width=True)
if st.button("Recognize Text"):
with st.spinner("Processing..."):
text = recognize_text(image, processor, model)
st.success("Recognized Text:")
st.write(text)
if __name__ == "__main__":
main()