如何直接在 python 代码中配置 tesseract 中的 OMP_THREAD_LIMIT 以禁用多处理?

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)