IMAGENAMER/Imagenamer.py

93 lines
3.2 KiB
Python
Raw Normal View History

"""This Program is used to rename image files with its content"""
"""SETUP"""
2020-09-09 18:06:33 +00:00
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
import os
import string
import uuid
2020-09-09 18:06:33 +00:00
namearray = []
indexnow = 0
pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract' #absolute path to out tesseract instalation
2020-09-09 18:06:33 +00:00
"""FUNCTIONS"""
2020-09-09 18:06:33 +00:00
def ocr(filename):
newname = pytesseract.image_to_string(Image.open(absolutebasepathin+"\\"+filename)) # Use pillow to open an image for pytesseract image2string to use
2020-09-09 18:06:33 +00:00
return newname
def namecleaner(filename):
print("filenameis "+filename)
filename = "_".join(filename.split()) # Get rig of line braks and spaces
filename = filename.replace("__","_") # Cleaning duplicated '_'s
filename = filename.replace(" ","") # Get rig of spaces(For recursion)
filename = filename.replace("\n","") # Get rig of line braks(For recursion)
#Get rid of forbiden characters
2020-09-09 18:06:33 +00:00
filename = filename.replace("<","")
filename = filename.replace(">","")
filename = filename.replace(":","")
filename = filename.replace("\"","")
filename = filename.replace("/","")
filename = filename.replace("\\","")
filename = filename.replace("|","")
filename = filename.replace("?","")
filename = filename.replace("*","")
##################################
outputname = filename.replace(".","") # Get rid of extra dots
2020-09-09 18:06:33 +00:00
print("outputnameis "+outputname)
return outputname
"""CORECODE"""
# Define the input and output directories
2020-09-09 18:06:33 +00:00
basepathin = '.\ImagesToConvert'
print("basepathin = "+basepathin)
basepathout = '.\ImageOutput'
print("basepathout = "+basepathout)
# Getting the absolute path to the before named directories
absolutebasepathin = os.path.abspath('.\ImagesToConvert')
print("absolutebasepathin = "+absolutebasepathin)
2020-09-09 18:06:33 +00:00
absolutebasepathout = os.path.abspath('.\ImagesOutput')
print("absolutebasepathout = "+absolutebasepathout)
# List all files in a directory using scandir()
with os.scandir(absolutebasepathin) as entries:
2020-09-09 18:06:33 +00:00
for entry in entries:
if entry.is_file():
# Fill an array with the list
2020-09-09 18:06:33 +00:00
namearray.append(entry.name)
# Get array length for the loop
2020-09-09 18:06:33 +00:00
arraylength = len(namearray)
print("arraylength = "+str(arraylength))
while indexnow < arraylength:
# Get file name from the array
2020-09-09 18:06:33 +00:00
basename = namearray[indexnow]
print("basename = "+basename)
# Call ocr
2020-09-09 18:06:33 +00:00
newname = ocr(basename)
print("newname = "+newname)
# Call "namecleaner" to get rid of forbiden characters, line breaks and spaces.
2020-09-09 18:06:33 +00:00
cleanname = namecleaner(newname)
print("cleanname = "+cleanname)
if cleanname != "":
cleanname = cleanname + basename[len(basename)-4:len(basename)]
os.rename(absolutebasepathin+"\\"+basename, absolutebasepathout+"\\"+cleanname)
print(basename+" is now renamed as "+cleanname)
else:
UUIDnow = str(uuid.uuid4())
cleanname = namecleaner(UUIDnow)
cleanname = cleanname + basename[len(basename)-4:len(basename)]
os.rename(absolutebasepathin+"\\"+basename, absolutebasepathout+"\\"+cleanname)
print(basename+" is now "+cleanname)
indexnow += 1
2020-09-09 18:06:33 +00:00
print("All images are given a name")