Я ищу OCR некоторых цифровых номеров в паре разных форматов.У меня есть функция, которая выравнивает текст по горизонтальной плоскости, чтобы позволить мне создавать ограничительные рамки в Opencv, которая работает для одного из моих цифровых изображений.Однако стиль второй цифры слегка наклонен (выделен курсивом), что иногда работает, но я обнаружил, что десятичная точка в основном теряется, поскольку она включается в одну из цифр, ограничивающих прямоугольники.
Есть ли способвыровнять цифры, основываясь на вертикальных линиях фактической цифры?
Ниже приведена моя рабочая функция для горизонтальной плоскости:
def deskew(img):
img_edges = cv2.Canny(img, 100, 100, apertureSize=3)
lines = cv2.HoughLinesP(img_edges, 1, math.pi / 180.0, 100, minLineLength=20, maxLineGap=50)
angles = []
for x1, y1, x2, y2 in lines[0]:
angle = math.degrees(math.atan2(y2 - y1, x2 - x1))
angles.append(angle)
med_angle = np.median(angles)
rotated_img = ndimage.rotate(img, med_angle, cval=255)
cv2.imshow("rotated image", rotated_img)
cv2.waitKey(0)
return rotated_img
Ниже приведен тип формата изображения / цифры, который я пробуюЧто касается регистрации и распознавания текста, я обнаружил, что в некоторых ручных записях угол около 5 градусов, кажется, работает с точным нанесением отдельных ограничивающих прямоугольников для захвата цифр и десятичных точек.
![enter image description here](https://i.stack.imgur.com/XZoqs.jpg)
Ниже приведен угол, отрегулированный вручную, показывающий все захваченные цифры и десятичную точку, которые могут быть OCR бы
![enter image description here](https://i.stack.imgur.com/P1PBJ.jpg)