import streamlit as st from PIL import Image import os from ocr_tamil.ocr import OCR from deep_translator import GoogleTranslator # Load OCR models ocr_detect = OCR(detect=True, enable_cuda=False) ocr_recognize = OCR(detect=False, enable_cuda=False) # Language code mapping lang_codes = { 'English': 'en', 'Kannada': 'kn', 'Tamil': 'ta', 'Telugu': 'te', 'Hindi': 'hi', 'Malayalam': 'ml', 'Marathi': 'mr', 'Bengali': 'bn', 'Gujarati': 'gu', 'Urdu': 'ur', } # Prediction function def predict(image_path, target_language): try: texts = ocr_detect.predict(image_path) texts = [" ".join(texts[0])] detected_text = texts[0] translated_text = GoogleTranslator(source='auto', target=target_language).translate(detected_text) return detected_text, translated_text except Exception as e: return f"Error: {str(e)}", "" # Streamlit UI st.title("Tamil OCR + Translation") uploaded_file = st.file_uploader("Upload a Tamil handwritten image", type=["jpg", "jpeg", "png"]) target_lang_name = st.selectbox("Target Language", list(lang_codes.keys())) if uploaded_file: image = Image.open(uploaded_file) st.image(image, caption="Uploaded Image", use_column_width=True) image_path = "uploaded_image.jpg" image.save(image_path) if st.button("Submit"): detected, translated = predict(image_path, lang_codes[target_lang_name]) st.success("Detected Text:") st.write(detected) st.success("Translated Text:") st.write(translated)