#!/bin/bash # Tool_OCR WSL Ubuntu 開發環境設置腳本 set -e # 遇到錯誤時停止 echo "================================" echo "Tool_OCR 開發環境設置" echo "================================" echo "" # 顏色定義 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 檢查是否為 root if [ "$EUID" -eq 0 ]; then echo -e "${RED}請不要使用 sudo 運行此腳本${NC}" echo "腳本會在需要時提示輸入 sudo 密碼" exit 1 fi echo -e "${YELLOW}[1/8] 更新系統套件列表...${NC}" sudo apt update echo "" echo -e "${YELLOW}[2/8] 安裝 Python 開發工具...${NC}" sudo apt install -y \ python3-pip \ python3-venv \ python3-dev \ build-essential \ pkg-config echo "" echo -e "${YELLOW}[3/8] 安裝系統層級依賴...${NC}" sudo apt install -y \ pandoc \ libmagic1 \ libmagic-dev \ fonts-noto-cjk \ fonts-noto-cjk-extra \ fonts-liberation \ libpango-1.0-0 \ libpangocairo-1.0-0 \ libcairo2 \ libcairo2-dev \ libgdk-pixbuf2.0-0 \ libgdk-pixbuf-2.0-dev \ libffi-dev \ libffi8 \ shared-mime-info \ poppler-utils \ libgl1 \ libglib2.0-0 \ libglib2.0-dev \ libgomp1 \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libopencv-dev \ libsqlite3-dev \ libreoffice-core-nogui \ libreoffice-writer-nogui \ libreoffice-impress-nogui \ ca-certificates \ curl \ wget \ libxml2 \ libxslt1-dev \ python3-cffi echo "" echo -e "${YELLOW}[4/8] 安裝 Node.js 和 npm...${NC}" # 檢查是否已安裝 nvm if [ ! -d "$HOME/.nvm" ]; then echo "安裝 nvm..." curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # 載入 nvm export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" else echo "nvm 已安裝" export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" fi # 安裝 Node.js LTS echo "安裝 Node.js LTS..." nvm install --lts nvm use --lts echo "" echo -e "${YELLOW}[5/8] 創建 Python 虛擬環境...${NC}" if [ ! -d "venv" ]; then python3 -m venv venv echo "虛擬環境已創建" else echo "虛擬環境已存在" fi echo "" echo -e "${YELLOW}[6/8] 安裝 Python 依賴...${NC}" source venv/bin/activate pip install --upgrade pip setuptools wheel pip install -r requirements.txt echo "" echo -e "${YELLOW}測試關鍵套件...${NC}" python -c "import magic; print('✓ python-magic')" || echo "✗ python-magic failed" python -c "from weasyprint import HTML; print('✓ WeasyPrint')" || echo "✗ WeasyPrint failed" python -c "import cv2; print('✓ OpenCV')" || echo "✗ OpenCV failed" echo "" echo -e "${YELLOW}[7/8] 安裝前端依賴...${NC}" cd frontend # 清理可能存在的鎖定文件 if [ -d "node_modules" ]; then echo "清理現有 node_modules..." rm -rf node_modules package-lock.json fi # 清理 npm 緩存 npm cache clean --force # 安裝依賴(使用 --force 避免鎖定問題) echo "安裝前端依賴..." npm install --force cd .. echo "" echo -e "${YELLOW}[8/8] 創建必要的目錄...${NC}" mkdir -p backend/uploads/{temp,processed,images} mkdir -p backend/storage/{markdown,json,exports} mkdir -p backend/models/paddleocr mkdir -p backend/logs echo "" echo -e "${GREEN}================================${NC}" echo -e "${GREEN}環境設置完成!${NC}" echo -e "${GREEN}================================${NC}" echo "" echo "下一步操作:" echo "1. 初始化數據庫:" echo " source venv/bin/activate" echo " cd backend" echo " alembic upgrade head" echo " python create_test_user.py" echo " cd .." echo "" echo "2. 啟動後端:" echo " ./start_backend.sh" echo "" echo "3. 啟動前端 (新終端):" echo " ./start_frontend.sh" echo "" echo "4. 訪問應用:" echo " 前端: http://localhost:5173" echo " API文檔: http://localhost:8000/docs" echo " 健康檢查: http://localhost:8000/health" echo ""