I always get annoyed when someone gives me an image and wants me to type it out because my typing speed is around 70 - 80 WPM. I was like let me upload it.. That works but to an extent and takes time. Also, websites are a certain amount of submissions are allowed.
Objective
Take in a file, originally it will just be one type and spread out to other files, and print out the text that is on that file. It is trivial and code is most likely out there for it. More file types and building into an application are the main focus.
Disclaimer
I do not claim this to be my code as I based it solely on another repository.
A very simple program that is basic like Bubble sort or Binary Tree. It is code that isn't going to change so why try and write everything from scratch when someone else has written a perfectly good program.
def get_string(img_path):
# Read image with opencv
img = cv2.imread(img_path)
# Convert to gray
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Apply dilation and erosion to remove some noise
kernel = np.ones((1, 1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)
# Write image after removed noise
cv2.imwrite(src_path + "removed_noise.png", img)
# Apply threshold to get image with only black and white
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)
# Write the image after apply opencv to do some ...
cv2.imwrite(src_path + "thres.png", img)
# Recognize text with tesseract for python
result = pytesseract.image_to_stringring(Image.open(src_path + "thres.png"))
return result
src_path = './'
print('--- Recognizing text from image ---')
filename = "2.png"
img2txt = get_string(src_path + filename)
print(img2txt)