Как изменить контраст изображения с помощью Wand? - PullRequest
1 голос
/ 07 января 2020

У меня есть изображение ниже, используемое в Тессеракт OCR:

enter image description here

Мой код для обработки изображения:

# HOCR
with image[450:6200, 840:3550] as cropped:
    imgPage = wi(image = cropped)
    imageBlob = imgPage.make_blob('png')
    horas = gerarHocr(imageBlob)

def gerarHocr(imageBlob):
    image = Image.open(io.BytesIO(imageBlob))
    markup = pytesseract.image_to_pdf_or_hocr(image, lang='por', extension='hocr', config='--psm 6')
    soup = BeautifulSoup(markup, features='html.parser')

    spans = soup.find_all('span', {'class' : 'ocrx_word'})

    listHoras = []
    ...
    return listHoras

Хотя мой OCR иногда путается и дублирует 8 с 3 и возвращает, например, 07:44/14:183 вместо 07:44/14:13.

Я думаю, что если я удалю серые линии с помощью Wand, я улучшу уверенность OCR. Как мне это сделать, пожалуйста?

Спасибо,

Ответы [ 2 ]

2 голосов
/ 08 января 2020

Если система использует ImageMagick-6, вы можете позвонить Image.threshold(), но сначала может потребоваться удалить прозрачность.

with Image(filename='PWILE.png') as img:
    img.background_color = 'WHITE'
    img.alpha_channel = False
    img.threshold(threshold=0.5)
    img.save(filename='output_threshold.png')

Image.threshold

Если вы используете ImageMagick-7 (что-либо выше версии 7.0.8-41), то Image.auto_threshold() будет работать.

with Image(filename='support/PWILE.png') as img:
    img.auto_threshold(method='otsu')
0 голосов
/ 07 января 2020

Я бы использовал cv2 и / или numpy.array

для преобразования светло-серого цвета в белый

img[ img > 128 ] = 255

для преобразования темно-серого цвета в черный

img[ img < 128 ] = 0

import cv2

folder = '/home/user/images/'

# read it
img = cv2.imread(folder + 'old_img.png')

# convert ot grayscale
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# reduce colors

img[ img > 128 ] = 255
img[ img < 128 ] = 0

# save it    
cv2.imwrite(folder + 'new_img.png', img)

# display result
#cv2.imshow('window', img)
#cv2.waitKey(0) # press any key in window to close it
#cv2.destroyAllWindows()

Результат

enter image description here

...