Tesseract pre-processing for OCR in a pdf, keep getting bad results, help please

Viewed 18

I'm trying to use Tesseract to OCR scanned Pdf documents. I searched the whole internet for solutions but still can't get a properly working image preprocess. I tried numerous ways to preprocess the images, but I keept getting poor results: sometimes it mix letters, interpret "i" as "/", find caracters where there is nothing... While my PDF file is good quality at start and not so screwed

Here is the current way I have best results, but still mix charcaters and find non existent characters where there is nothing :

print("Pre-traitement du Pdf")
for page_number in range(len(img)):
    img[page_number].save(r'C:\Users\488096\Documents\page'+ str(page_number) +'.jpg', 'JPEG')

print("Nombre de pages detectees:" + str(page_number))

# Tesseract
custom_config = r'--oem 3 --psm 6'
kernel = np.ones((2, 2), np.uint8)

print("Conversion du pdf en image et traitement afin d'ameliorer la reconnaissance")

for page_number in range(len(img)):
        img1 = cv2.imread(r'C:\Users\488096\Documents\page'+ str(page_number) +'.jpg')
#Traitement des images afin d'obtenir une meilleure reconnaissance des caractères
img = cv2.resize(img1, None, fx=3, fy=3, interpolation=cv2.INTER_NEAREST)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Remove shadows
cool_img = cv2.dilate(gray, kernel, iterations=1)
norm_img = cv2.erode(cool_img, kernel, iterations=1)
def_img = cv2.threshold(cv2.medianBlur(norm_img, 1), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

# Save pages as images in the pdf
cv2.imwrite(r'C:\Users\488096\Documents\img'+ str(page_number) +'.jpg', def_img)
txt = txt + (pytesseract.image_to_string(def_img,config=custom_config, lang="fra").encode("utf-8")).decode('utf-8')
print("Page # {} - {}".format(str(page_number),txt))

Thanks a lot for your help !

The italic I is often recognized as a / or sometimes as litterally nothing, and in the blank area there is often singles caracters found when there is litterally nothing but a blank space... What can I use instead of OCR to obtain good results ?

0 Answers
Related