将图像修改为白底黑字

PyB*_*oss 0 python image-processing image-segmentation tensorflow pytorch

我有一张图像需要进行 OCR(光学字符识别)来提取所有数据。

在此输入图像描述

首先,我想将彩色图像转换为白色背景上的黑色文本,以提高 OCR 准确性。

我尝试下面的代码

from PIL import Image
img = Image.open("data7.png")
img.convert("1").save("result.jpg")
Run Code Online (Sandbox Code Playgroud)

它给了我下面不清楚的图像

在此输入图像描述

我期望有这个图像

在此输入图像描述

然后,我将使用 pytesseract 来获取数据框

import pytesseract as tess
file = Image.open("data7.png")
text = tess.image_to_data(file,lang="eng",output_type='data.frame')
text
Run Code Online (Sandbox Code Playgroud)

最后,我想要得到的数据框如下

在此输入图像描述

AKX*_*AKX 5

这是一个香草枕头解决方案。仅对图像进行灰度化即可获得不错的结果,但绿色文本太淡了。

因此,我们首先放大绿色通道(当然,它可能会剪辑,但这不是问题),然后对图像进行灰度化、反转和自动对比。

from PIL import Image, ImageOps

img = Image.open('rqDRe.png').convert('RGB')

r, g, b = img.split()

img = Image.merge('RGB', (
    r,
    g.point(lambda i: i * 3),  # brighten green channel
    b,
))

img = ImageOps.autocontrast(ImageOps.invert(ImageOps.grayscale(img)), 5)

img.save('rqDRe_processed.png')
Run Code Online (Sandbox Code Playgroud)

输出

在此输入图像描述