从PNG图像中删除不需要的文本

2024-04-25 04:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Tesseract(带pytesseract)来识别PNG文件中的一些文本。此图像取自使用base64的某个网页img元素。我已经将所有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

我正在尝试减少图像中的噪声,以便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)

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

尽管我减少了不需要的文字,但tesseract似乎发现它更难阅读。还有什么我能做的吗?你知道吗


Tags: ioimageimportdataopenfileocrmemory