如何从一个区域抓取图像并正确使用 tesseract 转换为文本?我目前得到了这个:
img = ImageGrab.grab(bbox =(1341,182, 1778, 213))
tesstr = pytesseract.image_to_string(np.array(img), lang ='eng')
print (tesstr)
问题是它翻译得非常错误,因为它从中获取文本的区域是红色和蓝色背景,我该如何提高其准确性?它试图从图像转换为文本的示例:
答案 0 :(得分:2)
您应该知道Improving the quality of the output。您需要尝试列出的每种建议方法。如果还是达不到想要的效果,可以看看其他的方法:
要得到想要的结果,需要得到图像的二值掩码。简单阈值和自适应阈值都不适用于输入图像。
获取二进制掩码
结果:
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)
答案 1 :(得分:1)
Tesseract API 中有一个选项,您可以通过增加 DPI 来检查图像以检测文本。 DPI 越高,精度越高,直到出现收益递减。需要更多的处理能力。 DPI 不应超过原始图像 DPI。