@ -22,8 +22,19 @@ PY=python3.10
PIP = " $PY -m pip "
PIP_OPTS = "--quiet --root-user-action=ignore"
echo "[1/7] python / paddle 확인"
echo "[1/8] python3.10 + pip (deadsnakes PPA)"
if ! command -v $PY >/dev/null 2>& 1; then
export DEBIAN_FRONTEND = noninteractive
apt-get update -qq
apt-get install -y -q software-properties-common ca-certificates curl
add-apt-repository -y ppa:deadsnakes/ppa
apt-get update -qq
apt-get install -y -q python3.10 python3.10-venv python3.10-dev libgomp1
curl -sS https://bootstrap.pypa.io/get-pip.py | $PY
fi
$PY --version
echo "[2/8] paddle 확인"
if ! $PY -c 'import paddle; assert paddle.is_compiled_with_cuda()' 2>/dev/null; then
echo " paddle 미설치 또는 CUDA 비호환. sm_120 wheel 설치..."
WHL = $( ls " $WHEEL_DIR " /paddlepaddle_gpu-*-cp310-*linux_x86_64.whl 2>/dev/null | head -1)
@ -35,18 +46,18 @@ if ! $PY -c 'import paddle; assert paddle.is_compiled_with_cuda()' 2>/dev/null;
fi
$PY -c 'import paddle; print(" paddle:", paddle.__version__, "cuda:", paddle.is_compiled_with_cuda())'
echo "[ 2/7 ] OpenCV 시스템 의존성 (libgl 등)"
echo "[ 3/8 ] OpenCV 시스템 의존성 (libgl 등)"
export DEBIAN_FRONTEND = noninteractive
apt-get install -y -q libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 wget git
echo "[ 3/7 ] PaddleOCR clone (release/2.7)"
echo "[ 4/8 ] PaddleOCR clone (release/2.7)"
if [ ! -d " $PADDLEOCR_DIR " ] ; then
git clone --depth 1 -b release/2.7 https://github.com/PaddlePaddle/PaddleOCR.git " $PADDLEOCR_DIR "
fi
cd " $PADDLEOCR_DIR "
echo " PaddleOCR @ $( git rev-parse --short HEAD) "
echo "[ 4/7 ] PaddleOCR Python 의존성 (한 줄씩, 충돌 패키지는 skip)"
echo "[ 5/8 ] PaddleOCR Python 의존성 (한 줄씩, 충돌 패키지는 skip)"
# paddle은 이미 wheel로, blinker는 system pkg, opencv는 numpy2 비호환 → 제외 후 별도 설치
grep -viE '^(paddlepaddle|paddleocr|blinker|opencv-)' requirements.txt > /tmp/kr_lp_req.txt || true
while IFS = read -r line; do
@ -54,7 +65,7 @@ while IFS= read -r line; do
$PIP install $PIP_OPTS --ignore-installed " $line " 2>/dev/null || echo " skip: $line "
done < /tmp/kr_lp_req.txt
echo "[ 5/7 ] OpenCV (numpy2 호환) + numpy<2 (PaddleOCR release/2.7 호환성) + wandb + cuDNN 9.17"
echo "[ 6/8 ] OpenCV (numpy2 호환) + numpy<2 (PaddleOCR release/2.7 호환성) + wandb + cuDNN 9.17"
$PIP install $PIP_OPTS 'opencv-python>=4.10' 'opencv-contrib-python>=4.10' wandb
# paddle sm_120 wheel은 cuDNN 9.17 빌드라 paddle deps의 9.13.0.50을 9.17로 upgrade 필요.
# (안 하면 conv2d에서 cublasLtCreate 심볼 로드 실패 → process abort)
@ -63,7 +74,7 @@ $PIP install $PIP_OPTS --upgrade 'nvidia-cudnn-cu13>=9.17,<9.18'
# paddle 3.3.0.dev는 numpy 1.x도 호환.
$PIP install $PIP_OPTS 'numpy<2' --force-reinstall
echo "[ 6/ 7] PGNet step1 pretrain weight 다운로드 + import smoke test"
echo "[ 7/8 ] PGNet step1 pretrain weight 다운로드 + import smoke test"
mkdir -p " $PRETRAIN_DIR "
cd " $PRETRAIN_DIR "
if [ ! -d train_step1 ] ; then
@ -82,7 +93,7 @@ from ppocr.data.imaug.pg_process import PGProcessTrain
print( ' PGNet modules import OK' )
"
echo "[ 7/7 ] dict / config symlink → PaddleOCR 트리"
echo "[ 8/8 ] dict / config symlink → PaddleOCR 트리"
ln -sf " $KR_LP_DIR /dict/kr_lp_dict.txt " " $PADDLEOCR_DIR /ppocr/utils/kr_lp_dict.txt "
mkdir -p " $PADDLEOCR_DIR /configs/e2e "
ln -sf " $KR_LP_DIR /configs/kr_lp_pgnet.yml " " $PADDLEOCR_DIR /configs/e2e/kr_lp_pgnet.yml "