opencv Pytesseract对于真实的OCR来说非常慢,有什么方法可以优化我的代码吗?

sqxo8psd  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(304)

我尝试使用msspytesseract在python中创建一个真实的OCR。
到目前为止,我已经能够捕捉我的整个屏幕,它有一个稳定的30帧每秒。如果我想捕捉一个较小的区域约500x500,我已经能够得到100+帧每秒。
然而,一旦我包含了这行代码,text = pytesseract.image_to_string(img),boom 0.8 FPS。有没有什么方法可以优化我的代码以获得更好的FPS?而且代码能够检测文本,只是速度非常慢。

from mss import mss
import cv2
import numpy as np
from time import time
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\\Users\\Vamsi\\AppData\\Local\\Programs\\Tesseract-OCR\\tesseract.exe'

with mss() as sct:
    # Part of the screen to capture
    monitor = {"top": 200, "left": 200, "width": 500, "height": 500}

    while "Screen capturing":
        begin_time = time()

        # Get raw pixels from the screen, save it to a Numpy array
        img = np.array(sct.grab(monitor))

        # Finds text from the images
        text = pytesseract.image_to_string(img)

        # Display the picture
        cv2.imshow("Screen Capture", img)

        # Display FPS
        print('FPS {}'.format(1 / (time() - begin_time)))

        # Press "q" to quit
        if cv2.waitKey(25) & 0xFF == ord("q"):
            cv2.destroyAllWindows()
            break
yzckvree

yzckvree1#

pytesseract在“默认情况下”效率不高,因为它 Package 了tesseract可执行文件,它将临时文件保存到磁盘等...如果你对性能很认真,你需要直接使用tesseract API(例如通过tesserocr或通过creating custom API wrapper

yeotifhr

yeotifhr2#

您可以使用“easyocr”,这是一个轻量级的Python包,可用于OCR应用程序。它非常快速,可靠,可以访问70多种语言,包括英语,中文,日语,韩语,印地语,还有更多的正在添加。
“pip安装easyocr”
看看这个:https://huggingface.co/spaces/tomofi/EasyOCR

相关问题