Я пытаюсь проанализировать документ PDF, преобразовав его в изображения с помощью библиотеки "pdf2image" в python, а затем пытаюсь найти контуры следующим образом:
cv2_image = cv2.imread(image, 1)
blackText_whiteBackground = back_rm(cv2_image)
whiteText_blackBackground = black_white(blackText_whiteBackground)
blur_dilate = blur_and_dilate(whiteText_blackBackground)
cnts, _ = cv2.findContours(blur_dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
где blur_and_dilate. последний метод, который объявлен так:
def blur_and_dilate(img, iterations=20):
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
dilate = cv2.dilate(img, kernel, iterations=iterations)
cv2.imwrite("blur_and_dilate.png", dilate)
return dilate
Мой входной образ выглядит так:
Но после применяя сортировку в контурах следующим образом:
def sort_contours(cnts, cv2_image):
boundingBoxes = [cv2.boundingRect(c) for c in cnts]
sorted_ctrs = sorted(cnts, key=lambda ctr: cv2.boundingRect(ctr)[0] + cv2.boundingRect(ctr)[1] * cv2_image.shape[1])
# return the list of sorted contours and bounding boxes
return sorted_ctrs, boundingBoxes
Я получаю результат следующим образом:
Jaya Samhitha & Chandralekha
Owner Name
Flat No-302 Crest Homes, Alapati Nagar Colony,Mehdipatnam,Hyderabad-500028, Hyderabad,Andhra Pradesh, India,500028
Owner Address
В идеале левый столбец должен идти первым, а затем значение правого столбца , Я использовал несколько алгоритмов сортировки контуров, чтобы решить это, но это не так. Какие изменения я должен внести в алгоритм сортировки, чтобы правильно распечатать это?