Текст на цветных изображениях недостаточно четок для OCR позволяет четко распознавать текст на изображениях, поэтому мне нужно сделать текст более четким или четким.
После применения различных методов выделения текста из остальных изображений я получили изображение с достаточным контрастом/четкостью, чтобы начать Следующий шаг: удаление шума и усиление пикселей изображения, образующих текст. Результаты первой части показаны ниже:






Я применил разные методов, но ни один из них не дает правильного результата. Основной метод, который я применил, заключается в следующем:
Код: Выделить всё
def posterize(img = None, image_path = None, level = 3):
if image_path:
image = cv2.imread(image_path)
else:
image = img
result = image.copy()
indices = np.arange(0,256)
divider = np.linspace(0, 255, level + 1)[1]
quantiz = np.intp(np.linspace(0, 255, level))
color_levels = np.clip(np.intp(indices/divider), 0, level - 1)
palette = quantiz[color_levels]
im2 = palette[image]
result = cv2.convertScaleAbs(im2)
return result
img = cv2.imread(image_path,cv2.IMREAD_GRAYSCALE)
blur = cv2.medianBlur(img,3)
post = posterize(blur, image_path = None, level = 5)
image = cv2.adaptiveThreshold(post,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
kernel = np.ones((2, 2), np.uint8)
final = cv2.dilate(image, kernel, iterations=1)
Поиск и рисование контуров:
Код: Выделить всё
edged = cv2.Canny(blur, 50, 100)
contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 1)
Код: Выделить всё
ret,th = cv2.threshold(blur,90,255,cv2.THRESH_BINARY).
kernel = np.ones((2, 2), np.uint8)
image = cv2.erode(image, kernel, iterations=1)
kernel = np.ones((1, 1), np.uint8)
image = cv2.dilate(image, kernel, iterations=1)
Код: Выделить всё
image = cv2.fastNlMeansDenoising(img,None,20,7,21)
Мне нужно найти технику или метод, который достаточно очищает изображение, сохраняя при этом текст достаточно четким, чтобы оптическое распознавание текста могло его распознать.
Буду признателен любая помощь в этом отношении.
Заранее большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-with-ocr