Удаление ненужного текста из изображения PNG - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь использовать Tesseract (с pytesseract), чтобы распознать некоторый текст из файла PNG. Это изображение взято с некоторого элемента img веб-страницы, который использует base64. Я уже взял всю строку base64 и поместил ее в другой файл (data.txt).

Это результат запуска Tesseract для изображения без изменений:

import base64
import io
import pytesseract
from PIL import Image, ImageEnhance


data = open('data.txt')
memory_file = io.BytesIO(base64.b64decode(data.read()))
image_file = Image.open(memory_file)
image_file.show()
ocr = pytesseract.image_to_string(image_file, lang='spa')
print(ocr)

Выход:

enter image description here

DATOS DEL VEHICULO:

Nº PLACA: A10502

Nº SERIE: JTDBZ41E2AJO48448
Nº VIN: JTDBZ41E2AJO48448
Nº MOTOR: 3223289920

COLOR: ROJO MICA METALICO
MARCA: TOYOTA

MODELO: COROLLA

PLACA VIGENTE: A10502
PLACA ANTERIOR: NINGUNA

ESTADO: EN CIRCULACION
ANOTACIONES: NINGUNA
SEDE: LIMA

PROPIETARIOIS):
ALVARADO NINALAYA1 EVA

Я пытаюсь уменьшить шум на изображении, чтобы Тессеракту было легче извлечь текст. Вот что я для этого сделал:

import base64
import io
import pytesseract
from PIL import Image, ImageEnhance

data = open('data.txt')
memory_file = io.BytesIO(base64.b64decode(data.read()))
image_file = Image.open(memory_file)

pixels = image_file.load()
for i in range(image_file.size[0]): # for every pixel:
    for j in range(image_file.size[1]):
        pxs = pixels[i, j]
        if pxs[0] > 45:
            pixels[i, j] =  (0, 0, 0, 0)

image_file.show()
ocr = pytesseract.image_to_string(image_file, lang='spa')
print(ocr)

enter image description here

A10502
JTDBZ41E2AJO48448
JTDBZ41E2AJO48448
3223289920

ROJO MICA METAL)CO
TOYOTA

COROLLA

A10502

NINGUNA

EN CIRCULAC(ON
NINGUNA

UMA

ALVARADO N!NALAYA1 EVA

Несмотря на то, что я сократил ненужный текст, кажется, что тессеракту труднее его читать. Есть ли что-то еще, что я могу сделать?

...