(ПРИМЕЧАНИЕ. Приведенная ниже информация основана на обзоре кода pytesseract.py, я не пытался настроить многопроцессный тест для проверки)
Существует несколько библиотек Python, которые взаимодействуют с tesseract-ocr
. Возможно, вы используете pytesseract
(угадывание по функции image_to_string
).
Эта библиотека вызывает двоичный файл tesseract-ocr как подпроцесс и использует временные файлы для взаимодействия с ним. Он использует устаревший tempfile.mktemp()
, который не гарантирует уникальные имена файлов - кроме того, он даже не использует возвращенное имя файла как есть, поэтому второй вызов tempfile.mktemp()
может легко вернуть тот же файл имя.
Рассмотрите возможность использования другой библиотеки интерфейса Python для Tesseract: например, pip install tesseract-ocr
или python-tesseract
от Google (https://code.google.com/archive/p/python-tesseract/).
(если проблема на самом деле связана с временными файлами, как я подозреваю), вы можете обойти эту проблему, установив разные временные каталоги для каждого из ваших порожденных рабочих процессов:
td = tempfile.mkdtemp()
tempfile.tempdir = td
try:
# your-code-calling pytesseract.image_to_string() or similar
finally:
os.rmdir(td)
tempfile.tempdir = None