Как читать чёрный текст на чёрном фоновом изображении через тессеракт OCR? - PullRequest
2 голосов
/ 31 мая 2019

У меня черный текст на черном фоне, и я хочу прочитать его через OCR. К сожалению, OCR не может прочитать это отлично. Изображение выглядит так. enter image description here Я хочу преобразовать значение RGBA, которое меньше (90, 90, 90, 255), в (255, 255, 255, 255), чтобы оно стало черно-белым. Какой код для его преобразования?

Ответы [ 2 ]

3 голосов
/ 31 мая 2019

Что вам нужно сделать, это сделать все изображение черно-белым, прежде чем Tesseract выполнит свою работу.

Считать изображение

import cv2
im_gray = cv2.imread('your_image_here', cv2.IMREAD_GRAYSCALE)

Сделать его в градациях серого

(thresh, im_bw) = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

", который автоматически определяет порог по изображению с помощью метода Оцу, или, если вы уже знаете его,можно использовать: "

thresh = 127
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]

Запись на диск

cv2.imwrite('bw_image.png', im_bw)

Взят отсюда

0 голосов
/ 31 мая 2019

Вы можете преобразовать свои серые пиксели в белые пиксели с помощью простого преобразования. Если вы не хотите использовать open cv и ваше изображение представляет собой одноканальный массив (серая шкала):

threshold = 60 # try something between 30 and 150
vect_func = np.vectorize(lambda x: 0 if x == threshold else 255)
black_white_img = vect_func(gray_scale_image)
...