Удаление фоновых шумных линий из изображения Captcha с помощью PYTHON PIL

У меня обработанное изображение капчи (увеличено) выглядит так:

Как вы можете видеть, размер шрифта «TEXT» немного больше ширины линий с шумом.
Поэтому мне нужен алгоритм или код для удаления шумных линий с этого изображения.

С помощью Python PIL Library и алгоритма прерывания, упомянутого ниже, я не могу получить выходное изображение, которое может быть легко прочитано с помощью OCR.

Вот код Python, который я пробовал:

import PIL.Image
import sys

# python chop.py [chop-factor] [in-file] [out-file]

chop = int(sys.argv[1])
image = PIL.Image.open(sys.argv[2]).convert('1')
width, height = image.size
data = image.load()

# Iterate through the rows.
for y in range(height):
    for x in range(width):

        # Make sure we're on a dark pixel.
        if data[x, y] > 128:
            continue

        # Keep a total of non-white contiguous pixels.
        total = 0

        # Check a sequence ranging from x to image.width.
        for c in range(x, width):

            # If the pixel is dark, add it to the total.
            if data[c, y] < 128:
                total += 1

            # If the pixel is light, stop the sequence.
            else:
                break

        # If the total is less than the chop, replace everything with white.
        if total <= chop:
            for c in range(total):
                data[x + c, y] = 255

        # Skip this sequence we just altered.
        x += total


# Iterate through the columns.
for x in range(width):
    for y in range(height):

        # Make sure we're on a dark pixel.
        if data[x, y] > 128:
            continue

        # Keep a total of non-white contiguous pixels.
        total = 0

        # Check a sequence ranging from y to image.height.
        for c in range(y, height):
            # If the pixel is dark, add it to the total.
            if data[x, c] < 128:
                total += 1

            # If the pixel is light, stop the sequence.
            else:
                break

        # If the total is less than the chop, replace everything with white.
        if total <= chop:
            for c in range(total):
                data[x, y + c] = 255

        # Skip this sequence we just altered.
        y += total

image.save(sys.argv[3])

Итак, в основном я хотел бы знать лучший алгоритм / код, чтобы избавиться от шума и, таким образом, сделать изображение читаемым при помощи оптического распознавания символов (Tesseract или pytesser).

Ответы на вопрос(3)

Ваш ответ на вопрос