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,10 +1,17 @@
#!/bin/bash
# CutThenThink 简化打包脚本
# CutThenThink 纯云端版本打包脚本
# 无需任何本地 ML 库
set -e
echo "==================================="
echo "CutThenThink 打包脚本"
echo "CutThenThink 纯云端版本构建"
echo "==================================="
echo ""
echo "特点:"
echo "- OCR 使用云端 API"
echo "- AI 使用 API (OpenAI/Anthropic)"
echo "- 无需任何本地 ML 库"
echo "==================================="
# 使用系统Python和pip
@@ -12,46 +19,27 @@ PYTHON="python3"
PIP="python3 -m pip"
echo ""
echo "1/4. 安装打包工具..."
echo "[1/4] 安装打包工具..."
$PIP install --user pyinstaller 2>/dev/null || echo " PyInstaller可能已安装"
echo ""
echo "2/4. 安装项目依赖..."
$PIP install --user -r requirements.txt 2>/dev/null || echo " 依赖可能已安装"
echo "[2/4] 安装核心依赖..."
$PIP install --user "PyQt6>=6.7.0" 2>/dev/null || echo " PyQt6可能已安装"
$PIP install --user "SQLAlchemy>=2.0.36" 2>/dev/null || echo " SQLAlchemy可能已安装"
$PIP install --user openai anthropic 2>/dev/null || echo " AI库可能已安装"
$PIP install --user requests pyyaml pillow pyperclip 2>/dev/null || echo " 工具库可能已安装"
echo ""
echo "3/4. 创建应用入口(如果不存在)..."
if [ ! -f "src/main.py" ]; then
cat > src/main.py << 'PYEOF'
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
CutThenThink 应用入口
"""
import sys
import os
# 添加src目录到路径
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, current_dir)
from gui.main_window import main
if __name__ == "__main__":
main()
PYEOF
fi
echo "[3/4] 清理旧的构建..."
rm -rf build dist
echo ""
echo "4/4. 开始打包..."
echo "NOTE: 使用自定义 hooks 排除与 Python 3.13 不兼容的 ML 库"
echo "[4/4] 开始构建..."
$PYTHON -m PyInstaller \
--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 \
@@ -59,36 +47,24 @@ $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
echo ""
echo "==================================="
echo "打包完成!"
echo "构建完成!"
echo "可执行文件: dist/CutThenThink"
echo "==================================="
echo ""
echo "首次运行请配置:"
echo "- AI API Key (OpenAI/Anthropic)"
echo "- 云端 OCR API"
echo ""
# 测试运行提示
echo ""