我怎样才能提高这种图像的 tesseract 的准确性?

How can i increase the accuracy of tesseract for this kind of image?

我正在尝试使用 PIL 和 pytesseract 从视频游戏中获取文本。这是我要识别的示例:

我用了一个基本函数来获取二进制图像,另一个用来反转它,这是函数:

@staticmethod
    def getBinaryImage(image, thresh):
        fn = lambda x: 255 if x > thresh else 0
        im = image.convert('L').point(fn, mode='1')
        return im

通过这些过滤器,我设法得到了这个:

问题是 tesseract 无法识别这个。我尝试对二进制图像使用不同的阈值,但它没有帮助。

我的问题是,是否有任何其他基本滤镜可以应用到我的图像以使其质量更好并让 tesseract 识别它?

编辑:

这是我的图片的新版本,已调整大小。但是tesseract还是认不出来

我在 OCR 上使用 tesseract 和 best way 来处理你的排版。 您可以使用参数执行解决方案的另一种方法:

--psm N
Set Tesseract to only run a subset of layout analysis and assume a certain form of image. The options for N are:

0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR. (not implemented)
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.
11 = Sparse text. Find as much text as possible in no particular order.
12 = Sparse text with OSD.
13 = Raw line. Treat the image as a single text line,
     bypassing hacks that are Tesseract-specific.

然后使用 --psm 10

另一种方式是:

--oem N
Specify OCR Engine mode. The options for N are:

0 = Original Tesseract only.
1 = Neural nets LSTM only.
2 = Tesseract + LSTM.
3 = Default, based on what is available.

这个 oem 选项在 tesseract 4 和 5 上可用,根据我的经验,我不能使用这个选项会导致错误 我想使用 --oem 0,所以我安装了 tesseract 3.2,它是 --oem 0 的最新版本,我得到了更好的预测

说说我的经验,试试吧。 希望对你有用。