Использование Python и Opencv для выравнивания наклонных цифр - PullRequest
1 голос
/ 27 сентября 2019

Я ищу 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

Ниже приведен угол, отрегулированный вручную, показывающий все захваченные цифры и десятичную точку, которые могут быть OCR бы

enter image description here

...