Pytesseract - OCR на изображении с текстом в разных цветах - PullRequest
1 голос
/ 10 апреля 2020

Pytesseract не может извлечь текст, если текст присутствует в разных цветах. Я пытался использовать opencv, чтобы инвертировать изображение, но оно не работает для темных цветов текста.

Изображение: see attached image

import cv2
import pytesseract

from PIL import Image


def text(image):
    image = cv2.resize(image, (0, 0), fx=7, fy=7)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imwrite("gray.png", gray)

    blur = cv2.GaussianBlur(gray, (3, 3), 0)
    cv2.imwrite("gray_blur.png", blur)

    thresh = cv2.threshold(blur, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
    cv2.imwrite("thresh.png", thresh)

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
    opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
    cv2.imwrite("opening.png", opening)

    invert = 255 - opening
    cv2.imwrite("invert.png", invert)

    data = pytesseract.image_to_string(invert, lang="eng", config="--psm 7")
    return data

Есть ли способ извлечь оба текста из данного изображения: DEADLINE (красный) и WHITE HOUSE (белый)

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете использовать ImageOps для инвертирования изображения. И бинаризировать изображение.

import pytesseract
from PIL import Image,ImageOps
import numpy as np

img = Image.open("OCR.png").convert("L")
img = ImageOps.invert(img)
# img.show()
threshold = 240
table = []
pixelArray = img.load()
for y in range(img.size[1]):  # binaryzate it
    List = []
    for x in range(img.size[0]):
        if pixelArray[x,y] < threshold:
            List.append(0)
        else:
            List.append(255)
    table.append(List)

img = Image.fromarray(np.array(table)) # load the image from array.
# img.show()

print(pytesseract.image_to_string(img))

Результат:

enter image description here

img в конце, как это:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...