- Add debug_font_path, demo_docs_dir, e2e_api_base_url to config.py - Fix hardcoded paths in pp_structure_debug.py, create_demo_images.py - Fix hardcoded paths in test files - Update .env.example with new configuration options - Update .gitignore to exclude AI development files (.claude/, openspec/, AGENTS.md, CLAUDE.md) - Add production startup script (start-prod.sh) - Add README.md with project documentation - Add 1panel Docker deployment files (docker-compose.yml, Dockerfiles, nginx.conf) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
107 lines
3.0 KiB
Plaintext
107 lines
3.0 KiB
Plaintext
# Tool_OCR - Environment Configuration Template
|
|
# Copy this file to .env.local and fill in your actual values
|
|
|
|
# ===== Database Configuration =====
|
|
MYSQL_HOST=your-mysql-host
|
|
MYSQL_PORT=3306
|
|
MYSQL_USER=your-username
|
|
MYSQL_PASSWORD=your-password
|
|
MYSQL_DATABASE=your-database
|
|
|
|
# ===== Application Configuration =====
|
|
# Server ports
|
|
BACKEND_HOST=0.0.0.0
|
|
BACKEND_PORT=8000
|
|
FRONTEND_HOST=0.0.0.0
|
|
FRONTEND_PORT=5173
|
|
|
|
# Security (generate a random string for production)
|
|
SECRET_KEY=your-secret-key-here-please-change-this-to-random-string
|
|
ALGORITHM=HS256
|
|
ACCESS_TOKEN_EXPIRE_MINUTES=1440
|
|
|
|
# ===== External Authentication Configuration =====
|
|
EXTERNAL_AUTH_API_URL=https://your-auth-api.example.com
|
|
EXTERNAL_AUTH_ENDPOINT=/api/auth/login
|
|
EXTERNAL_AUTH_TIMEOUT=30
|
|
TOKEN_REFRESH_BUFFER=300
|
|
|
|
# ===== Task Management Configuration =====
|
|
DATABASE_TABLE_PREFIX=tool_ocr_
|
|
ENABLE_TASK_HISTORY=true
|
|
TASK_RETENTION_DAYS=30
|
|
MAX_TASKS_PER_USER=1000
|
|
|
|
# ===== OCR Configuration =====
|
|
# Note: PaddleOCR/PaddleX models are stored in ~/.paddleocr/ and ~/.paddlex/ by default
|
|
OCR_LANGUAGES=ch,en,japan,korean
|
|
OCR_CONFIDENCE_THRESHOLD=0.5
|
|
MAX_OCR_WORKERS=4
|
|
|
|
# GPU Acceleration Configuration
|
|
FORCE_CPU_MODE=false
|
|
GPU_MEMORY_FRACTION=0.8
|
|
GPU_DEVICE_ID=0
|
|
|
|
# ===== File Upload Configuration =====
|
|
MAX_UPLOAD_SIZE=52428800
|
|
ALLOWED_EXTENSIONS=png,jpg,jpeg,pdf,bmp,tiff,doc,docx,ppt,pptx
|
|
UPLOAD_DIR=./uploads
|
|
TEMP_DIR=./uploads/temp
|
|
PROCESSED_DIR=./uploads/processed
|
|
IMAGES_DIR=./uploads/images
|
|
|
|
# ===== Export Configuration =====
|
|
STORAGE_DIR=./storage
|
|
MARKDOWN_DIR=./storage/markdown
|
|
JSON_DIR=./storage/json
|
|
EXPORTS_DIR=./storage/exports
|
|
|
|
# ===== PDF Generation Configuration =====
|
|
# Linux: /usr/bin/pandoc, macOS: /opt/homebrew/bin/pandoc
|
|
PANDOC_PATH=/usr/bin/pandoc
|
|
# Linux: /usr/share/fonts, macOS: /System/Library/Fonts
|
|
FONT_DIR=/usr/share/fonts
|
|
PDF_PAGE_SIZE=A4
|
|
PDF_MARGIN_TOP=20
|
|
PDF_MARGIN_BOTTOM=20
|
|
PDF_MARGIN_LEFT=20
|
|
PDF_MARGIN_RIGHT=20
|
|
|
|
# ===== Translation Configuration (DIFY API) =====
|
|
# Enable translation feature
|
|
ENABLE_TRANSLATION=true
|
|
# DIFY API base URL
|
|
DIFY_BASE_URL=https://your-dify-instance.example.com/v1
|
|
# DIFY API key (get from DIFY dashboard)
|
|
DIFY_API_KEY=your-dify-api-key
|
|
# API request timeout in seconds
|
|
DIFY_TIMEOUT=120.0
|
|
# Maximum retry attempts
|
|
DIFY_MAX_RETRIES=3
|
|
# Batch translation limits
|
|
DIFY_MAX_BATCH_CHARS=5000
|
|
DIFY_MAX_BATCH_ITEMS=20
|
|
|
|
# ===== Background Tasks Configuration =====
|
|
TASK_QUEUE_TYPE=memory
|
|
# REDIS_URL=redis://localhost:6379/0
|
|
|
|
# ===== CORS Configuration =====
|
|
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
|
|
|
|
# ===== Logging Configuration =====
|
|
LOG_LEVEL=INFO
|
|
LOG_FILE=./logs/app.log
|
|
|
|
# ===== Development & Testing Configuration =====
|
|
# Debug font path for visualization scripts
|
|
DEBUG_FONT_PATH=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
|
|
# Demo documents directory for testing
|
|
DEMO_DOCS_DIR=./demo_docs
|
|
# E2E test API base URL
|
|
E2E_API_BASE_URL=http://localhost:8000/api/v2
|
|
# E2E test credentials (set in .env.local for security)
|
|
# E2E_TEST_USER_EMAIL=test@example.com
|
|
# E2E_TEST_USER_PASSWORD=testpassword
|