以前,我一直在使用 Pytesseract,但是对于效率和性能来说,TesserOCR API 对我来说似乎是一个更好的选择。但是,实时阅读文本似乎存在一些问题,并且遇到了一些错误。根据一些消息来源,API 只能接收单个图像,我还没有找到一种方法来输入帧以进行实时处理。目前,我有下面的代码片段,但它会引发一些错误。这似乎与熊猫数组与预期类型不匹配有关SetImage
def ideallyEfficientOCR():
api = tesserocr.PyTessBaseAPI()
sct = mss.mss()
mon = {"top": 300, "left": 900, "width": 770, "height": 550}
while "screen capturing":
frame = np.asarray(sct.grab(mon))
api.SetImage(frame)
text = api.GetUTF8Text()
print(text)
cv2.imshow('window', frame)
我以前像这样使用 Pytesseract:
def notEfficientOCR():
sct = mss.mss()
mon = {"top": 300, "left": 900, "width": 770, "height": 550}
while "screen capturing":
frame = np.asarray(sct.grab(mon))
phrase = pytesseract.image_to_string(cv2.cvtColor(frame, cv2.IMREAD_GRAYSCALE),lang = 'eng')
cv2.imshow('window', frame)
但我意识到第二个示例仅处理 1.2 fps 左右,问题似乎出在 Pytesseract 上,因为没有它,MSS
运行良好的 60 fps。另外,我真的不想重新使用ImageGrab
from PIL
,因为MSS
它对于实时屏幕捕获更有效。我的目标是在使用 TesserOCR API 时最大限度地提高速度。任何帮助表示赞赏,谢谢!