Обрезать ограничивающий прямоугольник из PyTesseract

#python #image-processing #ocr #python-tesseract

#python #обработка изображений #ocr #python-тессеракт

Вопрос:

Я использую pytesseract для определения отдельных символов на изображении. Я использую image_to_boxes функцию, которая предоставляет мне символ и координаты. Однако мне нужно обрезать отдельные символы в отдельные файлы изображений. В настоящее время приведенный ниже код создаст ограничительную рамку, однако мне нужно, чтобы она обрезала символы и сохранила их в отдельные файлы изображений для каждого символа.

 filename = 'image.png'

# read the image and get the dimensions
img = cv2.imread(filename)
h, w, _ = img.shape # assumes color image

# run tesseract, returning the bounding boxes
boxes = pytesseract.image_to_boxes(img) 

# draw the bounding boxes on the image
for b in boxes.splitlines():
    b = b.split(' ')
    img = cv2.rectangle(img, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2)
  

Ответ №1:

Вы можете использовать pillow's crop функцию:

 from PIL import Image
img = Image.open("samp.png")

text = pytesseract.image_to_boxes(img).split("n")

for i in text:
    if i:
        (left, upper, right, lower) = list(map(int, i.split(" ")[1:-1]))
        im_crop = img.crop((left, upper, right, lower))
        plt.imshow(im_crop)
        plt.show()
  

или

 roi = img[lower:upper, left:right]