我正在尝试使用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)
输出:
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)
A10502
JTDBZ41E2AJO48448
JTDBZ41E2AJO48448
3223289920
ROJO MICA METAL)CO
TOYOTA
COROLLA
A10502
NINGUNA
EN CIRCULAC(ON
NINGUNA
UMA
ALVARADO N!NALAYA1 EVA
即使我减少了不必要的文字,tesseract似乎也很难阅读。我还能做些什么吗?