Я использую pytesseract для создания некоторого ocr с многопроцессорным подходом.
Подход выглядит следующим образом:
tess_api = PyTessBaseAPI()
Parallel(n_jobs=4)(delayed(execute)(image) for image in images)
с функцией:
def execute(image):
tess_api.SetImage(image)
text = tess_api.GetUTF8Text()
это приведет к проблеме параллелизма, так как Worker 1 может переопределить изображение до того, как Worker 2 выполнит gettext ()
Идея состоит в том, чтобы на одного работника приходился один экземпляр PyTessBaseAPI
.
Основной идеей было бы сделать что-то вроде:
tess_apis = [PyTessBaseAPI(), PyTessBaseAPI(), PyTessBaseAPI(), PyTessBaseAPI()]
, а затем передать tess_api[0]
работнику 0, но я не знаю, как я могу установить связь между работником и экземпляром.
Любые предложения, или что было бы лучше?
Поскольку у меня есть тысячи изображений, я не хочу создавать экземпляры внутри функции execute.