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:
congsh
2026-02-12 13:42:46 +08:00
parent 6fc126b0fe
commit 313e1f40d8
7 changed files with 312 additions and 351 deletions

View File

@@ -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