mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(ocr): upgrade PaddleOCR to v3.x with PP-OCRv5 and VL model in Docker
This commit is contained in:
+4
-3
@@ -91,6 +91,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libimage-exiftool-perl \
|
||||
python3 python3-pip python3-venv python3-dev \
|
||||
tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-spa \
|
||||
tesseract-ocr-chi-sim tesseract-ocr-jpn tesseract-ocr-kor \
|
||||
build-essential \
|
||||
libgl1 libglib2.0-0 \
|
||||
libegl1 libwayland-egl1 libwayland-client0 libwayland-cursor0 \
|
||||
@@ -120,13 +121,13 @@ RUN if [ "$TARGETARCH" = "amd64" ]; then \
|
||||
/opt/venv/bin/pip install rembg==2.0.62 && \
|
||||
/opt/venv/bin/pip install realesrgan==0.3.0 \
|
||||
--extra-index-url https://download.pytorch.org/whl/cu126 && \
|
||||
/opt/venv/bin/pip install paddlepaddle-gpu==3.0.0 \
|
||||
/opt/venv/bin/pip install paddlepaddle-gpu>=3.2.1 \
|
||||
--extra-index-url https://www.paddlepaddle.org.cn/packages/stable/cu126/ && \
|
||||
/opt/venv/bin/pip install paddleocr==2.9.1 \
|
||||
/opt/venv/bin/pip install "paddleocr[doc-parser]>=3.4.0,<3.5.0" \
|
||||
; else \
|
||||
/opt/venv/bin/pip install "rembg[cpu]==2.0.62" && \
|
||||
/opt/venv/bin/pip install realesrgan==0.3.0 && \
|
||||
/opt/venv/bin/pip install paddlepaddle==3.0.0 paddleocr==2.9.1 \
|
||||
/opt/venv/bin/pip install paddlepaddle>=3.2.1 "paddleocr[doc-parser]>=3.4.0,<3.5.0" \
|
||||
; fi
|
||||
|
||||
# mediapipe 0.10.21 only has amd64 wheels; arm64 maxes out at 0.10.18
|
||||
|
||||
@@ -91,24 +91,43 @@ def download_realesrgan_model():
|
||||
|
||||
|
||||
def download_paddleocr_models():
|
||||
"""Pre-download PaddleOCR models for all supported languages."""
|
||||
print("=== Downloading PaddleOCR models ===")
|
||||
"""Pre-download PaddleOCR PP-OCRv5 models for all supported languages."""
|
||||
print("=== Downloading PaddleOCR PP-OCRv5 models ===")
|
||||
try:
|
||||
from paddleocr import PaddleOCR
|
||||
except ImportError as e:
|
||||
if "libcuda" in str(e):
|
||||
# paddlepaddle-gpu can't import without CUDA driver at build time.
|
||||
# Models will be downloaded on first use at runtime instead.
|
||||
print(f" Skipping PaddleOCR model pre-download (no CUDA driver at build time)")
|
||||
print(f" Models will download on first use at runtime.\n")
|
||||
return
|
||||
raise
|
||||
|
||||
for lang in PADDLEOCR_LANGUAGES:
|
||||
print(f" Downloading models for lang={lang}...")
|
||||
PaddleOCR(lang=lang, use_gpu=False, show_log=False)
|
||||
print(f" Downloading PP-OCRv5 models for lang={lang}...")
|
||||
PaddleOCR(lang=lang, use_gpu=False, show_log=False, ocr_version="PP-OCRv5")
|
||||
print(f" {lang} ready")
|
||||
print(f"All {len(PADDLEOCR_LANGUAGES)} PaddleOCR languages downloaded.\n")
|
||||
print(f"All {len(PADDLEOCR_LANGUAGES)} PaddleOCR PP-OCRv5 languages downloaded.\n")
|
||||
|
||||
|
||||
def download_paddleocr_vl_model():
|
||||
"""Pre-download PaddleOCR-VL 1.5 model weights."""
|
||||
print("=== Downloading PaddleOCR-VL 1.5 model ===")
|
||||
try:
|
||||
from paddleocr import PaddleOCRVL
|
||||
except ImportError as e:
|
||||
if "libcuda" in str(e):
|
||||
print(f" Skipping PaddleOCR-VL pre-download (no CUDA driver at build time)")
|
||||
print(f" Model will download on first use at runtime.\n")
|
||||
return
|
||||
raise
|
||||
|
||||
print(" Downloading PaddleOCR-VL 1.5 weights (~1.93 GB)...")
|
||||
try:
|
||||
PaddleOCRVL(device="cpu")
|
||||
print(" PaddleOCR-VL 1.5 ready\n")
|
||||
except Exception as e:
|
||||
print(f" Warning: PaddleOCR-VL pre-download failed: {e}")
|
||||
print(f" Model will download on first use at runtime.\n")
|
||||
|
||||
|
||||
def verify_mediapipe():
|
||||
@@ -164,6 +183,7 @@ def main():
|
||||
download_rembg_models()
|
||||
download_realesrgan_model()
|
||||
download_paddleocr_models()
|
||||
download_paddleocr_vl_model()
|
||||
verify_mediapipe()
|
||||
smoke_test()
|
||||
print("All models downloaded and verified.")
|
||||
|
||||
Reference in New Issue
Block a user