Pytesseract 数字图像到文本

问题描述 投票:0回答:1

我正在尝试使用 pytesseract 从图像中提取数字。

它适用于其中一些(1、2、3、5、6、20...),但我想让它适用于所有人。

这是我正在使用的数据示例:

2 的示例

7 的示例

415 示例

图像非常小(75x26),字体很差,但人类可读。

我尝试做一些预处理,因为它并没有检测到太多,但即使进行了预处理,我也无法检测到 7、11、415 这样的数字...

我已经测试了很多东西,但这里有一个版本可以检测我的大部分数字:

from PIL import Image, ImageEnhance

image = Image.open(f"{i}.png")
gray = image.convert("L")
enhancer = ImageEnhance.Contrast(gray)
image_enhanced = enhancer.enhance(2.0)
text = pytesseract.image_to_string(image_enhanced, config="--psm 6 -c tessedit_char_whitelist=0123456789")
print(text)

我也尝试过使用 cv2 应用阈值,但没有取得更大的成功,尽管有时看起来更干净的数字(未找到 1,发现 0 代表 11,3 代表 9...)

预处理期间不同的1

预处理过程中出现不同的9

预处理期间不同的11

img = cv2.imread(f'/content/{i}.png')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 170, 255, cv2.THRESH_BINARY)
text = pytesseract.image_to_string(thresh, config="--psm 6 -c tessedit_char_whitelist=0123456789")

为了获得更好的结果,我还应该添加更多的预处理步骤吗?

我知道我可以“微调”pytesseract,但它看起来像是一个基本的事情,所以我想知道在浪费更多时间之前我是否做错了......

python tesseract python-tesseract
1个回答
0
投票

您可能会在白色背景上使用黑色数字获得更好的结果,请参阅为什么 Pytesseract 无法识别黑色上的纯白色文本?图像处理以提高 tesseract OCR 准确性

© www.soinside.com 2019 - 2024. All rights reserved.