Eli*_*pez 6 python multithreading tesseract environment-variables multiprocessing
我在一个使用 docker-compose 运行的项目中使用 tesseract。我不知道如何直接在我的 python 文件中配置单个处理器核心。我想这样做是因为并行 Tesseract 时会出现缓慢和过度消耗的情况。
我发现了很多类似的主题,但它们只涉及如何在命令行上配置 OMP_THREAD_LIMIT。以下是我的 python 代码中 tesseract 的配置方式:
__tesseract_config_without_dir = "--psm 3 --oem 1 --dpi 300"
TESSERACT_DATA = os.environ.get(
"TESSDATA_PREFIX", "/usr/share/tesseract-ocr/4.00/tessdata/"
)
__tesseract_config = (
__tesseract_config_without_dir
+ ' --tessdata-dir "{}"'.format(config.TESSERACT_DATA)
)
Run Code Online (Sandbox Code Playgroud)
所以我想在我的 __tesseract_config 中添加一个像 'OMP_THREAD_LIMIT=1' 这样的选项,但我不知道如何编写它。在 tesseract 文档中,我们只找到以下信息:
“环境变量
OMP_THREAD_LIMIT
如果 tesseract 可执行文件是使用多线程支持构建的,则它通常会使用四个 CPU 核心进行 OCR 处理。虽然这对于单个图像来说可能会更快,但如果主机提供的 CPU 核心少于四个或针对许多图像进行 OCR,则性能会很差。OMP_THREAD_LIMIT=1 时仅使用单个 CPU 内核。”
小智 6
要禁用 Tesseract 的多线程,我刚刚在代码开头添加了
os.environ['OMP_THREAD_LIMIT'] = '1'
Run Code Online (Sandbox Code Playgroud)