110 lines
4.0 KiB
TOML
110 lines
4.0 KiB
TOML
[project]
|
||
name = "tianmu"
|
||
version = "0.2.0"
|
||
description = "天目 · 魂镜本地 OCR 引擎 — PP-OCRv6(via RapidOCR)+ PaddleOCR-VL-1.6"
|
||
authors = [{ name = "chenxin", email = "2685475410@qq.com" }]
|
||
license = "MIT"
|
||
requires-python = ">=3.12"
|
||
dependencies = [
|
||
"fastapi>=0.139.0",
|
||
"httpx[http2]>=0.28.1",
|
||
"loguru>=0.7.3",
|
||
"pillow>=10.0.0",
|
||
"pydantic>=2.13.4",
|
||
"pydantic-settings>=2.14.2",
|
||
"python-multipart>=0.0.32",
|
||
"uvicorn[standard]>=0.51.0",
|
||
]
|
||
|
||
[project.optional-dependencies]
|
||
# ═══════════════════════════════════════════════════════════
|
||
# PP-OCRv6 引擎(RapidOCR + ONNX Runtime)
|
||
# ═══════════════════════════════════════════════════════════
|
||
# CPU 推理(所有平台通用,包括 M4 的 CoreML 实验性支持)
|
||
rapidocr = [
|
||
"rapidocr>=3.9.0",
|
||
"onnxruntime>=1.20.0",
|
||
]
|
||
|
||
# GPU 推理(NVIDIA CUDA,仅 Linux/Windows)
|
||
rapidocr-gpu = [
|
||
"onnxruntime-gpu>=1.20.0",
|
||
]
|
||
|
||
# ═══════════════════════════════════════════════════════════
|
||
# PaddleOCR-VL 引擎(HuggingFace Transformers)
|
||
# ═══════════════════════════════════════════════════════════
|
||
# CPU/MPS(macOS 自动获取 CPU/MPS 版本,Linux/Windows 自动走 CPU 版本)
|
||
vl = [
|
||
"torch>=2.0.0",
|
||
"torchvision>=0.15.0",
|
||
"transformers>=5.0.0",
|
||
]
|
||
|
||
# GPU(通过 [tool.uv.sources] 自动选择 CUDA 版本,无需重复声明)
|
||
# 见下方 pytorch-cu128 源映射:Linux/Windows 自动使用 CUDA 12.8 版本
|
||
# ═══════════════════════════════════════════════════════════
|
||
|
||
all = ["tianmu[rapidocr,rapidocr-gpu,vl]"]
|
||
dev = [
|
||
"pre-commit>=4.6.0",
|
||
"pytest>=9.1.1",
|
||
"pytest-asyncio>=1.4.0",
|
||
"ruff>=0.15.21",
|
||
]
|
||
lint = ["black>=26.5.1", "mypy>=2.3.0", "ruff>=0.15.21"]
|
||
test = ["pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0"]
|
||
dev-all = ["tianmu[dev,lint,test]"]
|
||
|
||
[project.scripts]
|
||
tianmu = "src.main:main_cli"
|
||
|
||
# =============================================
|
||
# uv 配置 - 跨平台 PyTorch 自动适配
|
||
# =============================================
|
||
|
||
# 默认使用中科大镜像(所有平台通用)
|
||
[[tool.uv.index]]
|
||
name = "ustc"
|
||
url = "https://pypi.mirrors.ustc.edu.cn/simple/"
|
||
default = true
|
||
|
||
# PyTorch CUDA 12.8 专用源(仅 Linux/Windows 使用)
|
||
[[tool.uv.index]]
|
||
name = "pytorch-cu128"
|
||
url = "https://mirrors.nju.edu.cn/pytorch/whl/cu128/"
|
||
explicit = true
|
||
|
||
# === 包来源映射:根据操作系统自动选择 ===
|
||
[tool.uv.sources]
|
||
# Linux/Windows:使用 CUDA 12.8 版本
|
||
torch = { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }
|
||
torchvision = { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }
|
||
torchaudio = { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }
|
||
tianmu = { workspace = true }
|
||
|
||
# macOS:从默认源(中科大)自动获取 CPU/MPS 版本
|
||
# 不需要额外配置,会自动回退到 default = true 的源
|
||
|
||
# 验证命令:
|
||
# macOS: python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'MPS available: {torch.backends.mps.is_available()}')"
|
||
# Linux: python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}')"
|
||
|
||
[build-system]
|
||
requires = ["hatchling>=1.25.0"]
|
||
build-backend = "hatchling.build"
|
||
|
||
[tool.hatch.build.targets.wheel]
|
||
packages = ["src"]
|
||
|
||
[tool.ruff]
|
||
line-length = 100
|
||
target-version = "py312"
|
||
|
||
[tool.ruff.lint]
|
||
select = ["E", "F", "I", "N", "W"]
|
||
|
||
[tool.pytest.ini_options]
|
||
asyncio_mode = "auto"
|
||
testpaths = ["tests"]
|