Вы можете использовать функцию findContours () OpenCV и снимать галочку в зависимости от области.
Сначала необходимо преобразовать изображение в двоичное, а затем инвертировать изображение, а затем удалить меньшие контуры в зависимости от площади.Ниже приведен фрагмент кода для выполнения этой задачи:
import cv2
import pytesseract
im = cv2.imread("4SPb7.png")
# RGB to grayscale conversion
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# grayscale to binary
_, im_bw = cv2.threshold(im_gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)
# invert image
im_bw = 255-im_bw
# find contours
_, cnts, hierarchy = cv2.findContours(im_bw, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
# remove small components based on area
if cnts is not None:
for i in range(0, len(cnts)):
a = cv2.contourArea(cnts[i])
if a < 30:
cv2.drawContours(im_bw, cnts, i, 0, cv2.FILLED)
im_bw = 255-im_bw
print(pytesseract.image_to_string(im_bw))
Вывод:
CTLDC8GT
Вывод изображения: