F
F
fantom_ask2020-09-04 17:30:45
Python
fantom_ask, 2020-09-04 17:30:45

How to divide an image into blocks?

I want to split an image into blocks, lines or words and get an
Instance of each block along with its size and position relative to the original image e.g.
{'name':'block_1.png','url':'\tmp\block_1.png', ' width':100,'height':100,'x':20,'y':10,}
{'name':'block_2.png','url':'\tmp\block_2.png', 'width ':100,'height':50,'x':30,'y':10,} Block

image example Code
5f524ee340405864867217.jpeg
5f524ef53ca72877116576.png
5f524efd4c978140211944.png
5f524f0476d04587879790.png
5f524f0bd5e75585424228.png
5f524f1367731414184943.png

from PIL import Image
import pytesseract
import cv2
import os

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'

base_dir = os.path.dirname(os.path.abspath(__file__))
image = base_dir + r'\tmp\test2 (5).PNG'
d = Image.open(image)
preprocess = "thresh"

# загрузить образ и преобразовать его в оттенки серого
image = cv2.imread(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# проверьте, следует ли применять пороговое значение для предварительной обработки изображения

if preprocess == "thresh":
    gray = cv2.threshold(gray, 0, 255,
        cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# если нужно медианное размытие, чтобы удалить шум
elif preprocess == "blur":
    gray = cv2.medianBlur(gray, 3)

# сохраним временную картинку в оттенках серого, чтобы можно было применить к ней OCR
filename_dir = base_dir +"\gray\{}.png".format(os.getpid())
cv2.imwrite(filename_dir, gray)

# загрузка изображения в виде объекта image Pillow, применение OCR, а затем удаление временного файла
text = pytesseract.image_to_string(Image.open(filename_dir))
print(text)
#os.remove(filename_dir)

# показать выходные изображения
cv2.imshow("Image", image)
cv2.imshow("Output", gray)

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question