Feature Request: Add PaddleOCR GPU support to Docker image
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- docker, python
- Ambito
- devops, infrastructure, machine-learning
Direzione di ricerca
Inizia esaminando il Dockerfile esistente e la configurazione di pubblicazione delle immagini, quindi leggi unstructured/partition/utils/ocr_models/paddle_ocr.py e OCR_AGENT_BUG_ISSUE.md. Determina se i tag delle immagini GPU o gli argomenti di build rientrano nell’ambito e verifica che l’immagine selezionata venga compilata con le dipendenze PaddleOCR richieste e supporti l’esecuzione su GPU.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Feature Request: Add PaddleOCR GPU support to unstructured-api Docker image
Summary
The official unstructured-api Docker image includes Tesseract but not PaddleOCR. Users who want to use PaddleOCR with GPU acceleration must build a custom image. It would be valuable to have an official GPU-enabled image with PaddleOCR pre-installed.
Current Behavior
- The
unstructured-api:latestimage only includes Tesseract OCR - PaddleOCR must be manually installed via
pip install paddlepaddle unstructured-paddleocr - There is no GPU-enabled variant of the image
- The
OCR_AGENTenvironment variable is ignored (see related issue: OCR_AGENT_BUG_ISSUE.md)
Proposed Solution
Option 1: Provide GPU-enabled image tags
Publish additional Docker image variants:
unstructured-api:latest-gpu-cu118 # CUDA 11.8
unstructured-api:latest-gpu-cu126 # CUDA 12.6
These images would include:
paddlepaddle-gpufrom the appropriate CUDA indexunstructured-paddleocr- NVIDIA CUDA runtime
Option 2: Add build args to existing Dockerfile
Add build arguments to allow users to build GPU-enabled images:
ARG USE_GPU=false
ARG CUDA_VERSION=cu118
RUN if [ "$USE_GPU" = "true" ]; then \
pip install --no-cache-dir \
paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/stable/${CUDA_VERSION}/ \
unstructured-paddleocr; \
fi
Implementation Details
The unstructured library already supports GPU acceleration for PaddleOCR. In unstructured/partition/utils/ocr_models/paddle_ocr.py:
gpu_available = paddle.device.cuda.device_count() > 0
if gpu_available:
logger.info(f"Loading paddle with GPU on language={language}...")
paddle_ocr = PaddleOCR(
use_angle_cls=True,
use_gpu=gpu_available, # Auto-detects GPU
lang=language,
enable_mkldnn=True,
show_log=False,
)
This means the library automatically uses GPU when available - the only requirement is installing paddlepaddle-gpu instead of paddlepaddle.
Workaround
Users can extend the official image:
FROM downloads.unstructured.io/unstructured-io/unstructured-api:latest
USER root
ARG USE_GPU=false
RUN if [ "$USE_GPU" = "true" ]; then \
pip install --no-cache-dir \
paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ \
unstructured-paddleocr; \
else \
pip install --no-cache-dir \
paddlepaddle \
unstructured-paddleocr; \
fi
USER notebook-user
ENV OCR_AGENT=unstructured.partition.utils.ocr_models.paddle_ocr.OCRAgentPaddle
Note: This also requires patching general.py to pass ocr_agent to partition() - see OCR_AGENT_BUG_ISSUE.md.
Benefits
- Performance: PaddleOCR with GPU is significantly faster than Tesseract for batch processing
- Accuracy: PaddleOCR (especially PP-OCRv4) provides better accuracy on many document types
- Ease of use: Official GPU images eliminate the need for custom Dockerfiles
Environment
- unstructured-api: latest
- unstructured: 0.18.18+
- PaddlePaddle: 3.2.2
- CUDA: 11.8 / 12.6
Related Issues
- OCR_AGENT environment variable is ignored (see OCR_AGENT_BUG_ISSUE.md)
References
- Lingua principale
- Python
- Stelle
- 953
- Fork
- 192
- Merge medio
- 1g 1h
- PR unite (30g)
- 5
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Unstructured-IO/unstructured-api
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 39/100
-
Dependency DashboardAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 15/100
Tutte le issue di Unstructured-IO/unstructured-api
Issue simili
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Forse già presa @ericz7900 l’ha presa oggi. Apertallm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rheeloaded/paperpull#117 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
agenda-tech-brasil/agenda-tech-brasil#1619 · 1 commento ·
-
process
Difficoltà 1/5 1-3 ore Idoneità per principianti 76/100
pyrite-wiki/pyrite#1036 ·
I maintainer di solito rispondono entro 1 giorno