refactor: 移除 Web 环境,专注桌面应用,修复 macOS 卡死问题
Web 环境移除: - 删除 Web 相关文件:src/app.py, heartbeat.py - 用 requirements-desktop.txt 替换 requirements.txt - 更新 README.md:移除 Web 界面、部署方案等章节 - 更新技术栈说明:Streamlit → PyQt6 - 添加 usb_bundle/ 到 .gitignore Desktop 应用改进: - 重构 OCRService:使用独立 Python 线程替代 QThread - 添加主线程预加载 paddleocr 模块,修复 macOS 上卡死问题 - 新增离线 OCR 初始化模块(src/ocr_offline.py) - 新增模型准备脚本(scripts/prepare_models.py) - 新增摄像头诊断工具(scripts/camera_probe.py) 功能定位: - Desktop 应用(src/desktop.py):实时摄像头拍照识别 - CLI 批处理(src/main.py):批量处理目录中的图片 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
59
scripts/prepare_models.py
Executable file
59
scripts/prepare_models.py
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
离线模型准备脚本(建议在“有网机器”执行一次)
|
||||
|
||||
用途:
|
||||
- 将 PaddleOCR 2.10.0(PP-OCRv4 中文)所需模型下载到指定 models/ 目录
|
||||
- 该 models/ 目录可直接随 Windows zip 目录包分发,实现完全离线运行
|
||||
|
||||
设计说明:
|
||||
- 脚本只做“下载/补齐”,不做删除或覆盖,避免误删用户已有模型(高风险操作)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="准备 post-ocr 离线模型(PP-OCRv4 中文)")
|
||||
parser.add_argument(
|
||||
"--models-dir",
|
||||
default="models",
|
||||
help="模型输出目录(默认:models,建议与 exe 同级)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--show-log",
|
||||
action="store_true",
|
||||
help="显示 PaddleOCR 初始化日志(默认关闭)",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
models_dir = Path(args.models_dir).resolve()
|
||||
models_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 关键:把 PaddleOCR 默认 base_dir 指到我们指定的 models/
|
||||
os.environ["PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK"] = "True"
|
||||
os.environ["PADDLE_OCR_BASE_DIR"] = str(models_dir)
|
||||
|
||||
# 延迟导入:确保环境变量在模块加载前生效
|
||||
from paddleocr import PaddleOCR # pylint: disable=import-error
|
||||
|
||||
print(f"将下载/补齐模型到: {models_dir}")
|
||||
print("首次执行需要联网下载(约数百 MB),请耐心等待。")
|
||||
|
||||
# 初始化会自动下载 det/rec/cls 模型到 BASE_DIR/whl/...
|
||||
PaddleOCR(lang="ch", show_log=args.show_log, use_angle_cls=False)
|
||||
|
||||
print("完成。你可以将该 models/ 目录随 zip 目录包一起分发(与 exe 同级)。")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user