Docker环境下Tesseract-OCR运行远慢于本地的问题求助
Docker环境下Tesseract+PyMuPDF OCR性能远低于本地的排查求助
基于python:3.10镜像构建Docker容器,已成功安装tesseract 5.3.1,运行通过PyMuPDF启用OCR(后端调用Tesseract)的脚本时,同版本软件、同一文件的处理速度,Docker环境远慢于Windows本地。
测试配置与结果
- 本地运行:
100%|██████████| 24/24 [00:49<00:00, 2.06s/it] It took 0:00:49 to process 24 pages.
- Docker内置安装运行:
100%|██████████| 24/24 [03:14<00:00, 8.12s/it] It took 0:03:14 to process 24 pages.
- Docker绑定挂载tessdata运行:
100%|██████████| 24/24 [02:06<00:00, 5.29s/it] It took 0:02:06 to process 24 pages.
Docker Compose挂载配置
绑定挂载tessdata并设置环境变量TESSDATA_PREFIX指向/code/ocr/tessdata:
- type: bind source: "C:/Program Files/Tesseract-OCR/tessdata" target: /code/ocr/tessdata
核心OCR脚本
import fitz # pip install pymupdf content_dict = {} pages = fitz.open(pdf_file_path) for page_num, page in enumerate(pages, start=1): list_of_text_in_block = [] page_data = page.get_textpage_ocr(dpi=400, full=True) text_blocks = page_data.extractBLOCKS() for text_block in text_blocks: block_text = text_block[4] list_of_text_in_block.append(block_text) content_dict[page_num] = ' '.join(list_of_text_in_block)
Tesseract版本信息
- Docker内
tesseract --version输出:
tesseract 5.3.1 leptonica-1.79.0 libgif 5.1.9 : libjpeg 6b (libjpeg-turbo 2.0.6) : libpng 1.6.37 : libtiff 4.2.0 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.4.0 Found AVX2 Found AVX Found FMA Found SSE4.1 Found OpenMP 201511 Found libcurl/7.74.0 OpenSSL/1.1.1n zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
- 本地
tesseract --version输出(注:5.3.1与5.3.1.20230401为同一版本):
tesseract v5.3.1.20230401 leptonica-1.83.1 libgif 5.2.1 : libjpeg 8d (libjpeg-turbo 2.1.4) : libpng 1.6.39 : libtiff 4.5.0 : zlib 1.2.13 : libwebp 1.3.0 : libopenjp2 2.5.0 Found AVX2 Found AVX Found FMA Found SSE4.1 Found libarchive 3.6.2 zlib/1.2.13 liblzma/5.2.9 bz2lib/1.0.8 liblz4/1.9.4 libzstd/1.5.2 Found libcurl/8.0.1 Schannel zlib/1.2.13 brotli/1.0.9 zstd/1.5.4 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.3) libssh2/1.10.0
疑问
运行脚本时,Docker仅占用1个CPU核心(主机共12核心)且满负荷,但此现象无法解释**绑定挂载tessdata比Docker内置安装快35%**的差异,请求排查性能差异的原因。
内容的提问来源于stack exchange,提问作者qoob
相关产品推荐
相关产品推荐

