Я создаю службу Python, которая получает пакет изображений, запускает их индивидуально через PyTesseract с помощью метода pytesseract.image_to_string
и возвращает текст, извлеченный из каждого из них внутри списка. Он работает нормально, но мы стремились улучшить его производительность. Наша первая попытка заключалась в использовании pool.map
из библиотеки многопроцессорности Python, чтобы разбить список изображений на более мелкие части и обработать их с использованием разных ядер. Но время обработки на самом деле увеличилось.
Итак, мы начали искать возможность отправлять все изображения одновременно в PyTesseract, надеясь, что тот факт, что они будут загружены только один раз, улучшит сервис. PyTesseract позволяет это сделать с помощью команды pytesseract.image_to_string('images.txt')
с передаваемым текстовым файлом, содержащим адрес, по которому сохраняется каждое изображение.
Это заметно ускорило обработку. К сожалению, PyTesseract фактически объединяет текст, извлеченный из всех изображений в файле, в одну большую строку, что делает практически невозможным узнать, какая часть текста взята из какого изображения.
Итак, мой вопрос: есть ли надежный способ делать то, что мы пытаемся сделать, независимо от того, использует ли он сам PyTesseract или другую библиотеку?