python3 -m venv .venv
source .venv/bin/activate
pip install opencv-python-headless typer
Зависимости: opencv-python-headless, numpy, typer, ruff (dev).
Проверка:
python -m src.image_split --help
pip install paddlepaddle==3.2.2
pip install paddleocr pyyaml
Модели загружаются автоматически при первом запуске в ~/.paddlex/official_models/ (~2.5 GB).
Проверка:
python -m src.image_to_latex --help
pip install llama-cpp-python
Модель загружается из HuggingFace при первом запуске (~4.4 GB):
# Автоматически при первом --llm, или вручную:
curl -L "https://huggingface.co/bartowski/Qwen2.5-7B-Instruct-GGUF/resolve/main/Qwen2.5-7B-Instruct-Q4_K_M.gguf" \
-o ~/.cache/llama_models/Qwen2.5-7B-Instruct-Q4_K_M.gguf
Использование:
python -m src.image_to_latex -i page.jpg --llm
Требуется подписка OpenCode Go. Токен записать в .env:
echo 'OPENCODE_API_KEY=sk-...' > .env
echo 'HF_TOKEN=hf_...' >> .env
.env уже добавлен в .gitignore.
Использование:
python -m src.image_to_latex -i page.jpg --vlm
Surya 2 требует отдельного venv из-за конфликтов зависимостей с PaddleOCR.
# Установка llama-server (CPU-версия)
mkdir -p ~/.local/bin
curl -L "${URL}" -o /tmp/llama.tar.gz
tar -xzf /tmp/llama.tar.gz -C /tmp/
cp /tmp/llama-*/llama-server /tmp/llama-*/lib*.so* ~/.local/bin/
export PATH="$HOME/.local/bin:$PATH"
# Установка пакетов (в основном venv — конфликтует с PaddleOCR)
pip install surya-ocr torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install "opencv-python-headless==4.11.0.86" "pillow<11" transformers platformdirs
Использование:
python -m src.image_to_latex -i page.jpg --ocr-engine surya
pip install ruff pytest
ruff check src/ tests/
python -m pytest tests/ -v
~/.paddlex/official_models/ PaddleOCR (~2.5 GB)
~/.cache/llama_models/ LLM (~4.4 GB)
/tmp/hf_cache/ Surya 2 (~1.5 GB, HuggingFace)