refactor: 重构为纯云端版本,移除所有本地ML库依赖
重大更改: 1. requirements.txt - 移除 paddleocr/paddlepaddle,使用纯 API 版本 2. src/core/ocr.py - 完全重写 - 移除 PaddleOCREngine 和 ensure_paddleocr() - 移除 numpy 依赖(不再需要) - 实现完整的 CloudOCREngine - 支持百度/腾讯/阿里云 OCR API - 添加自定义 API 支持 3. src/config/settings.py - 简化 OCR 配置 - OCRMode 枚举仅保留 CLOUD - OCRConfig 添加 provider 字段 4. src/core/__init__.py - 移除 PaddleOCREngine 导出 5. src/gui/main_window.py - 移除 ensure_paddleocr 导入 6. build.bat/build.sh - 简化构建参数 - 移除所有 ML 库的 --exclude-module - 移除 pyi_hooks 依赖 - 添加 openai/anthropic hidden-import 测试: - ✓ 所有核心模块导入成功 - ✓ 没有 PaddleOCR 相关错误 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
80
build.bat
80
build.bat
@@ -1,58 +1,52 @@
|
||||
@echo off
|
||||
REM ================================
|
||||
REM CutThenThink Windows Build Script
|
||||
REM CutThenThink Windows Build Script - Cloud Only Version
|
||||
REM ================================
|
||||
REM 纯云端版本 - 无需本地 ML 库
|
||||
|
||||
REM Change to project directory
|
||||
cd /d "%~dp0"
|
||||
|
||||
echo ========================================
|
||||
echo CutThenThink 纯云端版本构建
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 特点:
|
||||
echo - OCR 使用云端 API
|
||||
echo - AI 使用 API (OpenAI/Anthropic)
|
||||
echo - 无需任何本地 ML 库
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM Check Python
|
||||
echo Checking Python...
|
||||
echo [1/4] 检查 Python...
|
||||
python --version 2>nul
|
||||
if errorlevel 1 (
|
||||
echo Python not found. Please install Python 3.8+
|
||||
echo 错误: 未找到 Python
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Get Python version
|
||||
for /f "tokens=2" %%i in ('python --version 2^>^&1') do set PYVER=%%i
|
||||
echo Detected Python %PYVER%
|
||||
|
||||
echo.
|
||||
echo 1/5. Installing PyInstaller...
|
||||
echo [2/4] 安装核心依赖...
|
||||
python -m pip install --user pyinstaller 2>nul
|
||||
|
||||
echo.
|
||||
echo 2/5. Installing dependencies (compatible with Python 3.13)...
|
||||
REM Use SQLAlchemy 2.0.36+ for Python 3.13 compatibility
|
||||
python -m pip install --user "sqlalchemy>=2.0.36" 2>nul
|
||||
python -m pip install --user "PyQt6>=6.7.0" 2>nul
|
||||
python -m pip install --user pyyaml 2>nul
|
||||
python -m pip install --user requests 2>nul
|
||||
python -m pip install --user pillow 2>nul
|
||||
python -m pip install --user pyperclip 2>nul
|
||||
|
||||
REM Install build dependencies
|
||||
python -m pip install --user setuptools 2>nul
|
||||
python -m pip install --user "SQLAlchemy>=2.0.36" 2>nul
|
||||
python -m pip install --user openai anthropic 2>nul
|
||||
python -m pip install --user requests pyyaml pillow pyperclip 2>nul
|
||||
|
||||
echo.
|
||||
echo 3/5. Cleaning previous build...
|
||||
echo [3/4] 清理旧的构建...
|
||||
if exist build rmdir /s /q build
|
||||
if exist dist rmdir /s /q dist
|
||||
|
||||
echo.
|
||||
echo 4/5. Building executable...
|
||||
echo NOTE: Using custom hooks to exclude heavy ML libraries that cause Python 3.13 issues
|
||||
echo These will be installed dynamically at runtime if needed
|
||||
echo [4/4] 开始构建...
|
||||
python -m PyInstaller ^
|
||||
--noconfirm ^
|
||||
--name "CutThenThink" ^
|
||||
--windowed ^
|
||||
--onefile ^
|
||||
--add-data "src:src" ^
|
||||
--runtime-hook=pyi_hooks/pyi_rth_ignore_torch.py ^
|
||||
--additional-hooks-dir=pyi_hooks ^
|
||||
--hidden-import=PyQt6.QtCore ^
|
||||
--hidden-import=PyQt6.QtGui ^
|
||||
--hidden-import=PyQt6.QtWidgets ^
|
||||
@@ -60,35 +54,18 @@ python -m PyInstaller ^
|
||||
--hidden-import=sqlalchemy.orm ^
|
||||
--hidden-import=PIL ^
|
||||
--hidden-import=PIL.Image ^
|
||||
--hidden-import=PIL.ImageEnhance ^
|
||||
--hidden-import=PIL.ImageFilter ^
|
||||
--hidden-import=numpy ^
|
||||
--hidden-import=pyperclip ^
|
||||
--hidden-import=tkinter ^
|
||||
--hidden-import=tkinter.ttk ^
|
||||
--hidden-import=tkinter.scrolledtext ^
|
||||
--hidden-import=tkinter.messagebox ^
|
||||
--hidden-import=yaml ^
|
||||
--hidden-import=requests ^
|
||||
--hidden-import=openai ^
|
||||
--hidden-import=anthropic ^
|
||||
--collect-all pyqt6 ^
|
||||
--exclude-module=torch ^
|
||||
--exclude-module=transformers ^
|
||||
--exclude-module=tensorflow ^
|
||||
--exclude-module=onnx ^
|
||||
--exclude-module=onnxruntime ^
|
||||
--exclude-module=sentencepiece ^
|
||||
--exclude-module=tokenizers ^
|
||||
--exclude-module=diffusers ^
|
||||
--exclude-module=accelerate ^
|
||||
--exclude-module=datasets ^
|
||||
--exclude-module=huggingface_hub ^
|
||||
--exclude-module=safetensors ^
|
||||
src/main.py
|
||||
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ================================
|
||||
echo Build Failed!
|
||||
echo 构建失败!
|
||||
echo ================================
|
||||
pause
|
||||
exit /b 1
|
||||
@@ -96,11 +73,12 @@ if errorlevel 1 (
|
||||
|
||||
echo.
|
||||
echo ================================
|
||||
echo Build Complete!
|
||||
echo Executable: dist\CutThenThink.exe
|
||||
echo File size: ~30-50 MB
|
||||
echo 构建成功!
|
||||
echo ================================
|
||||
echo 可执行文件: dist\CutThenThink.exe
|
||||
echo.
|
||||
echo On first run, app will auto-download and install PaddleOCR.
|
||||
echo 首次运行请配置:
|
||||
echo - AI API Key (OpenAI/Anthropic)
|
||||
echo - 云端 OCR API
|
||||
echo.
|
||||
pause
|
||||
|
||||
Reference in New Issue
Block a user