我附加了一个非常简单的文本图像,我想要从中获取文本。它是白色的,黑色的背景。对于肉眼来说它似乎绝对清晰,但显然对于超立方体来说它是垃圾。我尝试过更改 OEM 和 PSM 参数,但似乎没有任何效果。请注意,这适用于其他图像,但不适用于此图像。
请尝试在您的计算机上运行它,看看它是否有效。否则我可能必须完全更改我的 ocr 引擎。
注意:它之前一直在工作,直到我尝试在图像周围添加黑色像素以帮助提取过程。另外,我不认为超立方体是在白色背景上的黑色文本上进行训练的。它应该也能做到这一点。另外,如果这是真的,为什么它适用于与此格式相同的其他文本图像
编辑:奇迹般地,我再次尝试运行脚本,这次它能够正确提取 Chand,但在下面提到的情况下失败了。另外请看看我使用的参数。我已阅读文档,我觉得这将是正确的选择。我已添加图像供您引用。这不仅仅是这张图片的问题。为什么 tesseract 对于如此简单的用例会失败?
最佳答案
要找到所需的结果,您需要了解以下内容:
输入图像是粗体字,我们需要缩小粗体字体,然后假设输出为单个统一的文本 block 。
要缩小图像,我们可以使用 erosion
结果将是:
代码:
# 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/