为什么 tesseract 不能提取具有黑色背景的文本?

Why can't tesseract extract text that has a black background?

我附上了一张非常简单的文字图片,我想从中获取文字。它是黑色背景的白色。在肉眼看来,它似乎绝对清晰可辨,但显然要对它进行正方体测试,它就是一个垃圾。我曾尝试更改 oem 和 psm 参数,但似乎没有任何效果。请注意,这适用于其他图片,但不适用于这一张。

请在您的计算机上尝试 运行,看看是否有效。否则我可能不得不完全改变我的 ocr 引擎。

注意:在我尝试在图像周围添加黑色像素以帮助提取过程之前,它一直在工作。我也不认为 tesseract 是在白色背景上的黑色文本上训练的。它也应该能够做到这一点。此外,如果这是真的,为什么它适用于与此具有相同格式的其他文本图像

编辑:我奇迹般地再次尝试 运行 脚本,这次它能够正确提取 Chand,但在下面提到的情况下失败了。另请查看我使用的参数。我已经阅读了文档,我觉得这将是正确的选择。我添加了图像供您参考。这不仅仅是关于这个形象。为什么 tesseract 对于如此简单的用例会失败?

要找到想要的结果,您需要了解以下内容:

输入的图片是粗体,我们需要缩小粗体,然后假设输出是一个统一的文本块。

要缩小图像,我们可以使用 erosion

结果将是:

Erode Result
CHAND
BAKLIWAL

代码:


# Load the library
import cv2
import pytesseract

# Initialize the list
img_lst = ["lKpdZ.png", "ZbDao.png"]

# For each image name in the list
for name in img_lst:

    # Load the image
    img = cv2.imread(name)

    # Convert to gry-scale
    gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Erode the image
    erd = cv2.erode(gry, None, iterations=2)

    # OCR with assuming the image as a single uniform block of text
    txt = pytesseract.image_to_string(erd, config="--psm 6")
    print(txt)