Download install.sh from spark-ux/indic-doc-parser: direct link, hf CLI and curl.
- Browser
- Download file 2.8 kB
-
https://huggingface.co/spark-ux/indic-doc-parser/resolve/main/install.sh
- Command line
-
hf download hf://spark-ux/indic-doc-parser/install.sh
-
curl -L -o install.sh https://huggingface.co/spark-ux/indic-doc-parser/resolve/main/install.sh
2.8 kB
| # Install IndicDocParser's dependencies into the active Python environment. | |
| # | |
| # ./install.sh # pick the CUDA wheels from your driver | |
| # IDP_CUDA=cu121 ./install.sh # force a CUDA line | |
| # IDP_CUDA=cpu ./install.sh # CPU only -- fine for layout, slow for the recognizer | |
| # | |
| # The one thing pip cannot work out for itself is which CUDA build you need. `pip install torch` | |
| # takes the newest wheel, which on an older driver initialises to CPU with nothing but a warning -- | |
| # you get a working install that silently never touches the GPU. And torchvision pins an exact | |
| # torch, so resolving the two separately is how you end up with a mismatched pair and a run of | |
| # import errors. This installs both together, from one index. | |
| set -euo pipefail | |
| cd "$(dirname "$0")" | |
| PY=${PYTHON:-python3} | |
| # `uv venv` creates environments without pip, so `$PY -m pip` is not a safe assumption. Prefer | |
| # whatever the environment actually has; uv is also just faster. | |
| if command -v uv >/dev/null 2>&1; then | |
| pip_install() { uv pip install --python "$PY" "$@"; } | |
| elif "$PY" -m pip --version >/dev/null 2>&1; then | |
| pip_install() { "$PY" -m pip install "$@"; } | |
| elif "$PY" -m ensurepip --upgrade >/dev/null 2>&1; then | |
| pip_install() { "$PY" -m pip install "$@"; } | |
| else | |
| echo "no installer found for $PY -- install pip (python -m ensurepip) or uv, then re-run" >&2 | |
| exit 1 | |
| fi | |
| detect_cuda() { | |
| command -v nvidia-smi >/dev/null 2>&1 || { echo cpu; return; } | |
| local v | |
| v=$(nvidia-smi 2>/dev/null | sed -n 's/.*CUDA Version: \([0-9]*\)\.\([0-9]*\).*/\1/p' | head -1) | |
| case "$v" in | |
| # CUDA 12.x drivers run any cu12x wheel (minor version compatibility), so one build covers | |
| # the whole line. A 13.x wheel on a 12.x driver does NOT work -- that is the trap. | |
| 12) echo cu124 ;; | |
| 13|1[4-9]) echo cu130 ;; | |
| "") echo cpu ;; | |
| *) echo cu124 ;; | |
| esac | |
| } | |
| CUDA=${IDP_CUDA:-$(detect_cuda)} | |
| INDEX=https://download.pytorch.org/whl/$CUDA | |
| echo "==> target: $CUDA" | |
| [ "$CUDA" = cpu ] && echo " (no GPU detected -- layout runs fine on CPU, the recognizer is slow)" | |
| echo "==> torch + torchvision, together, from $INDEX" | |
| pip_install torch torchvision --index-url "$INDEX" | |
| echo "==> everything else" | |
| pip_install -r requirements.txt | |
| echo "==> checking" | |
| $PY - <<'PY' | |
| import torch, torchvision, transformers | |
| print(f" torch {torch.__version__}") | |
| print(f" torchvision {torchvision.__version__}") | |
| print(f" transformers {transformers.__version__}") | |
| print(f" cuda {'yes, ' + torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'NO -- running on CPU'}") | |
| import sys; sys.path.insert(0, ".") | |
| from indic_doc_parser import IndicDocParser # noqa: F401 | |
| print(" import ok") | |
| PY | |
| echo "==> done" | |