Я пытаюсь использовать 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)
Выход:
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)
A10502
JTDBZ41E2AJO48448
JTDBZ41E2AJO48448
3223289920
ROJO MICA METAL)CO
TOYOTA
COROLLA
A10502
NINGUNA
EN CIRCULAC(ON
NINGUNA
UMA
ALVARADO N!NALAYA1 EVA
Несмотря на то, что я сократил ненужный текст, кажется, что тессеракту труднее его читать. Есть ли что-то еще, что я могу сделать?