Spaces:
Sleeping
Sleeping
| 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() |