我正在尝试从屏幕截图中检测一些大写字符。我使用 PIL 将其转换为黑白,然后使用 PyTesser 页面中的代码示例,在图像上运行 tesser.exe:
from pytesser import *
image = Image.open('fnord.tif')
print image_to_string(image)
我正在使用这张图片:
但它不承认它是一个 E,或者真的是什么。我认为这是一个足够干净的捕获?顶部的噪音不会把它扔掉,对吧?
有什么我想念的吗?
如果您担心噪点是否存在问题,请手动在 MSPaint 或类似工具中打开图像,去除噪点,然后通过 OCR 运行新图像。这是了解 OCR 引擎如何工作以及混淆它和不混淆的最佳方式。每个 OCR 引擎的工作方式都不同。
在这种情况下,可能是一点点噪音也会混淆字符分区过程。您应该检查从 OCR 引擎返回的边界框值,以查看 OCR 引擎是否甚至在正确的位置查找您的单词或字符。
一些 OCR 引擎具有在 OCR 过程中从图像中去除噪声的选项。这通常称为去斑或去噪。可以使用 Leptonica ( http://www.leptonica.org ) 去除噪音,它现在是最新的 Tesseract 图像的一部分。
屏幕字体对 OCR 引擎提出了很大的挑战,因为 DPI 通常非常低。在您的“E”的情况下,应该有足够多的像素被识别。沉重的冲程重量可能会使发动机感到困惑。
此外,商业引擎通常会比 Tesseract 更准确,但也会带来昂贵的许可费用。