Amandeep01 commited on
Commit
a92f7ce
·
verified ·
1 Parent(s): 2a62547

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -28
app.py CHANGED
@@ -1,38 +1,59 @@
1
  import gradio as gr
2
  import easyocr
3
  from deep_translator import GoogleTranslator
 
 
4
 
5
- reader = easyocr.Reader(['en', 'hi']) # Hindi aur English OCR ke liye
6
-
7
- def extract_and_translate(image, target_lang):
8
- result = reader.readtext(image, detail=0)
9
- text = ' '.join(result)
10
- try:
11
- translated_text = GoogleTranslator(source='auto', target=target_lang).translate(text)
12
- except Exception as e:
13
- translated_text = f"Translation Error: {str(e)}"
14
- return translated_text
15
-
16
- lang_choices = {
17
- "Hindi": "hi",
18
- "English": "en",
19
- "Punjabi": "pa",
20
- "Gujarati": "gu",
21
- "Bengali": "bn",
22
- "Tamil": "ta",
23
- "Telugu": "te",
24
- "Marathi": "mr"
25
- }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  iface = gr.Interface(
28
- fn=extract_and_translate,
29
  inputs=[
30
- gr.Image(type="filepath", label="Upload Image"),
31
- gr.Dropdown(choices=list(lang_choices.values()), label="Translate To")
 
 
 
 
32
  ],
33
- outputs="text",
34
- title="Image Text Translator",
35
- description="Upload an image with printed text. Extracts and translates text into selected language."
36
  )
37
 
38
- iface.launch()
 
 
1
  import gradio as gr
2
  import easyocr
3
  from deep_translator import GoogleTranslator
4
+ from PIL import Image, ImageDraw, ImageFont
5
+ import numpy as np
6
 
7
+ # Initialize reader with allowed lang_list only
8
+ reader = easyocr.Reader(['en', 'hi', 'mr', 'ne'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
+ # Font path — works on HuggingFace
11
+ FONT_PATH = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
12
+
13
+ def process_image(image, target_lang):
14
+ img_array = np.array(image)
15
+
16
+ # Run OCR safely
17
+ results = reader.readtext(img_array)
18
+
19
+ if not results:
20
+ return image, "No text detected"
21
+
22
+ final_translations = []
23
+ img_pil = image.convert("RGB")
24
+ draw = ImageDraw.Draw(img_pil)
25
+ font = ImageFont.truetype(FONT_PATH, size=20)
26
+
27
+ for (bbox, text, prob) in results:
28
+ if text.strip():
29
+ try:
30
+ translated = GoogleTranslator(source='auto', target=target_lang).translate(text)
31
+ except:
32
+ translated = "[Translation Error]"
33
+
34
+ final_translations.append(translated)
35
+
36
+ # Draw translation at top-left of bounding box
37
+ top_left = bbox[0]
38
+ draw.text((top_left[0], top_left[1] - 20), translated, fill=(255, 0, 0), font=font)
39
+
40
+ full_text = "\n".join(final_translations)
41
+ return img_pil, full_text
42
+
43
+ # Gradio UI
44
  iface = gr.Interface(
45
+ fn=process_image,
46
  inputs=[
47
+ gr.Image(type="pil", label="Upload Image"),
48
+ gr.Textbox(label="Translate To (hi / en / mr / ne)")
49
+ ],
50
+ outputs=[
51
+ gr.Image(type="pil", label="Image with Translated Overlay"),
52
+ gr.Textbox(label="Translated Text Output")
53
  ],
54
+ title="Image Translator with Overlay",
55
+ description="Extract & translate text from an image (OCR + translation overlay)"
 
56
  )
57
 
58
+ if __name__ == "__main__":
59
+ iface.launch()