Python | OCR en Todas las Imágenes presentes en una Carpeta Simultáneamente

Si tiene una carpeta llena de imágenes que tiene algún texto que debe extraerse en una carpeta separada con el nombre de archivo de imagen correspondiente o en un solo archivo, entonces este es el código perfecto que está buscando.

Este artículo no solo le brinda la base de OCR (reconocimiento óptico de caracteres) , sino que también lo ayuda a crear output.txtun archivo para cada imagen dentro de la carpeta principal y guardarlo en una dirección predeterminada.

Se necesitan bibliotecas –

pip3 install pillow
pip3 install os-sys

También necesitará la biblioteca tesseract-oct y pytesseract . Se tesseract-ocrpuede descargar e instalar desde aquí y pytesseractse puede instalar usandopip3 install pytesseract

A continuación se muestra la implementación de Python:

# Python program to extract text from all the images in a folder
# storing the text in corresponding files in a different folder
from PIL import Image
import pytesseract as pt
import os
      
def main():
    # path for the folder for getting the raw images
    path ="E:\\GeeksforGeeks\\images"
  
    # path for the folder for getting the output
    tempPath ="E:\\GeeksforGeeks\\textFiles"
  
    # iterating the images inside the folder
    for imageName in os.listdir(path):
              
        inputPath = os.path.join(path, imageName)
        img = Image.open(inputPath)
  
        # applying ocr using pytesseract for python
        text = pt.image_to_string(img, lang ="eng")
  
        # for removing the .jpg from the imagePath
        imagePath = imagePath[0:-4]
  
        fullTempPath = os.path.join(tempPath, 'time_'+imageName+".txt")
        print(text)
  
        # saving the  text for every image in a separate .txt file
        file1 = open(fullTempPath, "w")
        file1.write(text)
        file1.close() 
  
if __name__ == '__main__':
    main()

Imagen de entrada:

imagen_muestra1

Producción :

geeksforgeeks
geeksforgeeks

Si desea almacenar todo el texto de las imágenes en un solo archivo de salida, el código será un poco diferente. La principal diferencia es que el modo del archivo en el que escribiremos cambiará a “ +a ” para agregar el texto y crear el output.txtarchivo si aún no está presente.

# extract text from all the images in a folder
# storing the text in a single file
from PIL import Image
import pytesseract as pt
import os
      
def main():
    # path for the folder for getting the raw images
    path ="E:\\GeeksforGeeks\\images"
  
    # link to the file in which output needs to be kept
    fullTempPath ="E:\\GeeksforGeeks\\output\\outputFile.txt"
  
    # iterating the images inside the folder
    for imageName in os.listdir(path):
        inputPath = os.path.join(path, imageName)
        img = Image.open(inputPath)
  
        # applying ocr using pytesseract for python
        text = pt.image_to_string(img, lang ="eng")
  
        # saving the  text for appending it to the output.txt file
        # a + parameter used for creating the file if not present
        # and if present then append the text content
        file1 = open(fullTempPath, "a+")
  
        # providing the name of the image
        file1.write(imageName+"\n")
  
        # providing the content in the image
        file1.write(text+"\n")
        file1.close() 
  
    # for printing the output file
    file2 = open(fullTempPath, 'r')
    print(file2.read())
    file2.close()        
  
  
if __name__ == '__main__':
    main()

Imagen de entrada:

imagen_muestra1

imagen_muestra2

Producción:

Dio una salida del archivo único creado después de extraer toda la información de la imagen dentro de la carpeta. El formato del archivo es así:

Name of the image
Content of the image
Name of the next image and so on .....

Publicación traducida automáticamente

Artículo escrito por amankrsharma3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *