Python | Convert image to text and then to speech

Our goal is to convert a given text image into a string of text, saving it to a file and to hear what is written in the image through audio.

For this, we need to import some Libraries

  1. Pytesseract(Python-tesseract) : It is an optical character recognition (OCR) tool for python sponsored by google.
  2. pyttsx3 : It is an offline cross-platform Text-to-Speech library
  3. Python Imaging Library (PIL) : It adds image processing capabilities to your Python interpreter
  4. Googletrans : It is a free python library that implements the Google Translate API.

Examples:




Input : We Have an image with some text 

Output: THE TEXT FROM THE IMAGE IS EXTRACTED AND A VOICE WILL SPEAK THE TEXT
      

          This is the first line of
           this text example.

          This is the second line
           of the same text.

       Translated(src=en, dest=de, text=Dies ist die erste Zeile von

           Dieses Textbeispiel.

            Dies ist die zweite Zeile
            desselben Textes., pronunciation=None, extra_data="{'translat..."

Code : Python code to convert text to speech

filter_none

edit
close

play_arrow

link
brightness_4
code

# import the following libraries
# will convert the image to text string
import pytesseract      
  
# adds image processing capabilities
from PIL import Image    
  
 # converts the text to speech  
import pyttsx3           
  
#translates into the mentioned language
from googletrans import Translator      
  
 # opening an image from the source path
img = Image.open('text1.png')     
  
# describes image format in the output
print(img)                          
# path where the tesseract module is installed
pytesseract.pytesseract.tesseract_cmd ='C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'   
# converts the image to result and saves it into result variable
result = pytesseract.image_to_string(img)   
# write text in a text file and save it to source path   
with open('abc.txt',mode ='w') as file:     
      
                 file.write(result)
                 print(result)
                   
p = Translator()                      
# translates the text into german language
k = p.translate(result,dest='german')      
print(k)
engine = pyttsx3.init()
  
# an audio will be played which speaks the test if pyttsx3 recognizes it
engine.say(k)                             
engine.runAndWait()

chevron_right


NOTE : We can convert the text into any desired language. For Example Japanese, Russian, Hindi. But the only condition is that the googletrans should recognize the destination language. Also, pyttsx3 will speak only the languages which are recognized by it.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.