Создайте один прямоугольник контура для каждой суммы цены в счете-фактуре ($xx.xx), включая десятичную точку

#python #opencv #cv2 #opencv-contour #mathematical-morphology

Вопрос:

Я пытаюсь сегментировать текст из счета-фактуры, используя следующее, примененное к изображению:

 image = cv2.imread(im_path)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
rectKern = cv2.getStructuringElement(cv2.MORPH_RECT, (15,30))
squareKern = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
light = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, squareKern)
light = cv2.threshold(light, 0,255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) [1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (30,10))
light = cv2.morphologyEx(light, cv2.MORPH_CLOSE, kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7,15)) 
light = cv2.morphologyEx(light, cv2.MORPH_OPEN, kernel)
light = cv2.morphologyEx(light, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (30,10)))
 

Однако для цен (в формате $xx.xx), которые должны отображаться в виде одного контура белого прямоугольника, мне часто не хватает двух непересекающихся белых прямоугольников (поэтому соединительная десятичная точка не включена). Я не уверен, какие преобразования следует применить, чтобы включить десятичную точку и иметь белый прямоугольник для каждой цены (по-прежнему разделяя цены по разным строкам).
Мой код сгенерировал следующее:
контур изображения