python - 为什么 tesseract 无法提取黑色背景的文本?

标签 python opencv ocr python-tesseract

我附加了一个非常简单的文本图像,我想要从中获取文本。它是白色的,黑色的背景。对于肉眼来说它似乎绝对清晰,但显然对于超立方体来说它是垃圾。我尝试过更改 OEM 和 PSM 参数,但似乎没有任何效果。请注意,这适用于其他图像,但不适用于此图像。

It should be extracted as Chand

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

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

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

enter image description here

enter image description here

最佳答案

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

输入图像是粗体字,我们需要缩小粗体字体,然后假设输出为单个统一的文本 block 。

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

结果将是:

<表类=“s-表”> <标题> 侵 eclipse 结果 <正文> enter image description here CHAND enter image description here 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)

关于python - 为什么 tesseract 无法提取黑色背景的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66489314/

相关文章:

python - 如何分割成 block (子矩阵),或处理一个巨大的矩阵,在 numpy 上给出内存错误?

python - 在 setup.py 文件中设置文件权限

python - python中的堆叠条偏移

python - 将惰性求值转换为装饰器 (Python)

python - 如果二进制图像几乎全黑,我如何检查 numpy?

ocr - 谷歌视觉 ocr : vertical and horizontal lines text recognition

python - 使用 pytesseract 从图像生成 PDF

c++ - cvSet2D 的有效替代方案?

c++ - OpenCV 网格区域

image - 识别音乐符号的程序