首页 > 解决方案 > 如何提高 python/tesseract 图像到文本的准确性?

问题描述

如何从某个区域抓取图像并正确使用 tesseract 转换为文本?我目前得到了这个:

img = ImageGrab.grab(bbox =(1341,182, 1778, 213))
tesstr = pytesseract.image_to_string(np.array(img), lang ='eng')
print (tesstr)

问题是它的翻译非常错误,因为它从中获取文本的区域是蓝色背景的红色,我该如何提高它的准确性?它试图从图像转换为文本的示例:

标签: pythonocrtesseractpython-tesseract

解决方案


  • *问题是它翻译得非常错误,因为它从中获取文本的区域是蓝色背景的红色,我该如何提高它的准确性?*

您应该知道提高输出质量。您需要尝试列出的每种建议方法。如果仍然无法达到预期的效果,则应查看其他方法:

要获得所需的结果,您需要获取图像的二进制掩码。简单阈值和自适应阈值都不适用于输入图像。

获取二进制掩码

    1. 上采样并将输入图像转换为 HSV 颜色空间
    1. 设置较低和较高的颜色边界。

结果:

在此处输入图像描述

0.37 版本的 OCR 输出将是:

Day 20204, 16:03:12: Your ‘Metal Triangle Foundation’
was destroved!

代码:


import cv2
import numpy as np
import pytesseract

# Load the image
img = cv2.imread("b.png")

# Up-sample
img = cv2.resize(img, (0, 0), fx=2, fy=2)

# Convert to HSV color-space
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Get the binary mask
msk = cv2.inRange(hsv, np.array([0, 0, 123]), np.array([179, 255, 255]))

# OCR
txt = pytesseract.image_to_string(msk)
print(txt)

# Display
cv2.imshow("msk", msk)
cv2.waitKey(0)

推荐阅读