Skip to content

[Bug] PaddleOCR v3.3.0 + PaddlePaddle v3.0.0 fails in Docker (ARM64 & x86_64) #76111

@woojae05

Description

@woojae05

问题描述 Issue Description

🐛 PaddleOCR 3.3.0 + PaddlePaddle 3.0.0 fails in Docker environments (ARM64 & x86_64)

👋 Issue Summary

I'm experiencing critical compatibility issues when running PaddleOCR 3.3.0 with PaddlePaddle 3.0.0 in Docker containerized environments. The issues occur on both ARM64 (Apple Silicon) and x86_64 (AWS Lambda) architectures.


🔴 Problem Details

ARM64 Environment (Apple Silicon M-series)

Symptom: Segmentation Fault during model initialization

FatalError: `Segmentation fault` is detected by the operating system.
[SignalInfo: *** SIGSEGV (@0x0) received by PID 1 (TID 0xffff612341a0) from PID 0 ***]

Steps to Reproduce:

  1. Build Docker image with PaddlePaddle 3.0.0 + PaddleOCR 3.3.0
  2. Run basic initialization:
    from paddleocr import PaddleOCRocr = PaddleOCR(lang="en")  # ❌ Segfault here
    

x86_64 Environment (AWS Lambda Base Image)

Symptom: Library loading failure

❌ Error: name 'libpaddle' is not defined

Steps to Reproduce:

  1. Use public.ecr.aws/lambda/python:3.11 base image
  2. Install system dependencies (mesa-libGL, libXext, etc.)
  3. Install PaddlePaddle 3.0.0 + PaddleOCR 3.3.0
  4. Import succeeds, but initialization fails with libpaddle error

🔧 Environment Details

Item Value
PaddleOCR Version 3.3.0
PaddlePaddle Version 3.0.0
Python Version 3.11
Base Images python:3.11-slim (ARM64), public.ecr.aws/lambda/python:3.11 (x86_64)

🧪 Attempted Solutions

✅ Tried (No Effect)

  1. Environment Variables:

    FLAGS_use_mkldnn=0
    FLAGS_use_xdnn=0
    OMP_NUM_THREADS=1
    OPENBLAS_NUM_THREADS=1
    MKL_NUM_THREADS=1
    
  2. NumPy Version Pinning:

    pip install 'numpy<2.0.0'
    
  3. PaddlePaddle Version Downgrade:

    • 3.0.0b2 (beta) → Same segfault
    • 2.6.1 → API compatibility issues (set_optimization_level missing)
  4. Lightweight Models:

    • Switched to PP-OCRv4_mobile → Failed due to API parameter changes

📋 Reproducible Dockerfiles

ARM64 (Apple Silicon)

FROM python:3.11-slim

ENV FLAGS_use_mkldnn=0
FLAGS_use_xdnn=0
OMP_NUM_THREADS=1
OPENBLAS_NUM_THREADS=1
MKL_NUM_THREADS=1

RUN apt-get update && apt-get install -y
libgl1 libglib2.0-0 libsm6 libxext6
libxrender-dev libgomp1
&& rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir
paddlepaddle==3.0.0
paddleocr==3.3.0
'numpy<2.0.0'
opencv-python-headless
Pillow

WORKDIR /app
COPY test_paddleocr.py .
CMD ["python", "test_paddleocr.py"]

Build & Run:

docker build -t paddleocr-test .
docker run --rm paddleocr-test

x86_64 (AWS Lambda)

FROM public.ecr.aws/lambda/python:3.11

RUN yum update -y &&
yum install -y mesa-libGL libXext libSM libXrender libgomp &&
yum clean all

ENV FLAGS_use_mkldnn=0
FLAGS_use_xdnn=0
OMP_NUM_THREADS=1

RUN pip install --no-cache-dir
paddlepaddle==3.0.0
paddleocr==3.3.0
'numpy<2.0.0'
opencv-python-headless
Pillow

WORKDIR /var/task
COPY test_paddleocr.py .
CMD ["python", "test_paddleocr.py"]

Build & Run:

docker buildx build --platform linux/amd64 -t paddle-lambda:test .
docker run --rm --platform linux/amd64 paddle-lambda:test

🧪 Test Script

from paddleocr import PaddleOCR
import numpy as np
import os

Environment optimization

os.environ["FLAGS_use_mkldnn"] = "0"
os.environ["FLAGS_use_xdnn"] = "0"
os.environ["GOTOBLAS_NUM_THREADS"] = "1"
os.environ["VECLIB_MAXIMUM_THREADS"] = "1"

print("✅ PaddleOCR import OK")

try:
print("Initializing PaddleOCR...")
ocr = PaddleOCR(lang="en") # ❌ Fails here
print("✅ PaddleOCR init OK")

# Test prediction
img = np.ones((128, 512, 3), dtype=np.uint8) * 255
res = ocr.predict(img)
print("✅ Prediction OK")

except Exception as e:
print(f"❌ Error: {e}")
import traceback
traceback.print_exc()


🎯 Expected Behavior

PaddleOCR should initialize successfully in Docker containers on both ARM64 and x86_64 architectures without segmentation faults or library loading errors.


版本&环境信息 Version & Environment Information

🔧 Environment Details

Item Value
PaddleOCR Version 3.3.0
PaddlePaddle Version 3.0.0
Python Version 3.11
Base Images python:3.11-slim (ARM64), public.ecr.aws/lambda/python:3.11 (x86_64)

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions