Amandeep01 commited on
Commit
392b951
·
verified ·
1 Parent(s): 932742c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -56
app.py CHANGED
@@ -1,64 +1,32 @@
1
- # app.py
2
  import gradio as gr
3
  import easyocr
4
- from transformers import MarianMTModel, MarianTokenizer
5
-
6
- # OCR Reader Initialization
7
- reader = easyocr.Reader(['en', 'hi', 'fr', 'de', 'es', 'ru'], gpu=False) # Add more if needed
8
-
9
- # Supported Languages for Translation
10
- LANGUAGE_CODES = {
11
- "English": "en",
12
- "Hindi": "hi",
13
- "French": "fr",
14
- "German": "de",
15
- "Spanish": "es",
16
- "Russian": "ru"
17
- }
18
-
19
- # Function to load MarianMT model
20
- model_cache = {}
21
- def get_model(target_lang):
22
- model_name = f"Helsinki-NLP/opus-mt-ROMANCE-{target_lang}" if target_lang in ['fr', 'es', 'ro', 'pt'] else f"Helsinki-NLP/opus-mt-en-{target_lang}"
23
- if model_name not in model_cache:
24
- tokenizer = MarianTokenizer.from_pretrained(model_name)
25
- model = MarianMTModel.from_pretrained(model_name)
26
- model_cache[model_name] = (tokenizer, model)
27
- return model_cache[model_name]
28
-
29
- # Main function
30
- def translate_image_text(image, target_lang):
31
- try:
32
- # OCR
33
- result = reader.readtext(image, detail=0, paragraph=True)
34
- extracted_text = " ".join(result)
35
-
36
- if not extracted_text.strip():
37
- return "No text found in the image."
38
-
39
- # Get model
40
- code = LANGUAGE_CODES[target_lang]
41
- tokenizer, model = get_model(code)
42
-
43
- # Translation
44
- batch = tokenizer([extracted_text], return_tensors="pt", padding=True)
45
- gen = model.generate(**batch)
46
- translated = tokenizer.batch_decode(gen, skip_special_tokens=True)[0]
47
-
48
- return translated
49
- except Exception as e:
50
- return f"Error: {str(e)}"
51
-
52
- # Gradio Interface
53
- iface = gr.Interface(
54
- fn=translate_image_text,
55
  inputs=[
56
  gr.Image(type="filepath", label="Upload Image"),
57
- gr.Dropdown(choices=list(LANGUAGE_CODES.keys()), label="Translate To")
 
 
 
 
58
  ],
59
- outputs=gr.Textbox(label="Translated Text"),
60
  title="Image Text Translator",
61
- description="Upload an image containing text, and choose a language to translate the extracted text."
62
  )
63
 
64
- iface.launch()
 
 
1
  import gradio as gr
2
  import easyocr
3
+ from googletrans import Translator
4
+
5
+ # OCR reader with Hindi + English (Devanagari fix)
6
+ reader = easyocr.Reader(['hi', 'en']) # You can change 'hi' to 'mr' or 'ne' etc.
7
+ translator = Translator()
8
+
9
+ # Function to extract text and translate
10
+ def ocr_and_translate(image, target_lang):
11
+ result = reader.readtext(image)
12
+ extracted_text = " ".join([text[1] for text in result])
13
+ translated = translator.translate(extracted_text, dest=target_lang)
14
+ return translated.text
15
+
16
+ # Gradio UI
17
+ interface = gr.Interface(
18
+ fn=ocr_and_translate,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  inputs=[
20
  gr.Image(type="filepath", label="Upload Image"),
21
+ gr.Dropdown(
22
+ ["en", "hi", "mr", "ne", "fr", "de", "es", "bn", "gu", "ta", "te"],
23
+ label="Translate To",
24
+ value="hi"
25
+ )
26
  ],
27
+ outputs="text",
28
  title="Image Text Translator",
29
+ description="Upload an image with text, and translate extracted text to your chosen language."
30
  )
31
 
32
+ interface.launch()