Технология обработки изображений / распознавания для разделения символов касания

python #numpy #opencv #ocr

#python #numpy #opencv #распознавание

Вопрос:

Я пытаюсь подготовить изображения для распознавания с помощью Tesseract. Однако некоторые последовательности символов касаются (из-за засечек на глифах шрифта), и это сбивает его с толку.

Например I/U :

введите описание изображения здесь

Я замечаю яркий контур для каждого символа. Если бы это можно было заменить темным цветом, буквы получили бы некоторое пространство для дыхания.

     img_grey[img_grey > 100] = 0
 

… Но я не могу заставить это работать.

Кто-нибудь знает о лучшей технике?

Комментарии:

1. OCR не должен нуждаться в этом

Ответ №1:

Используя OpenCV, вы можете преобразовать его в оттенки серого, затем применить порог Otsu для получения двоичного изображения, а затем стереть его:

 import cv2         
import numpy as np    

im = cv2.imread('image.png')
im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
 
_, th = cv2.threshold(im, 120, 255, cv2.THRESH_BINARY   cv2.THRESH_OTSU)     

kernel = np.ones((5,5), np.uint8)

# Increase iterations if you want it thinner
eroded = cv2.erode(th, kernel, iterations=2)

cv2.imwrite('eroded.png', eroded)
 

введите описание изображения здесь

Ответ №2:

Вы можете попытаться стереть изображение, в opencv есть операция, называемая eroding, в этом случае она в основном уменьшает толщину символа. Это должно оставить некоторое пространство между символами, но будьте осторожны, чтобы не переусердствовать, иначе tesseract может не распознать символ. Методом проб и ошибок можно получить нужное количество ошибок.

Для получения более подробной информации перейдите по этой ссылке.