UnisMindMap/VUE_MIGRATION_GUIDE.md

4.2 KiB
Raw Blame History

MinerU Gradio 到 Vue.js 迁移指南

🎯 项目概述

本文档介绍了如何将 MinerU 项目中原有的 Gradio 界面迁移到现代化的 Vue.js 实现。

📁 目录结构变化

原始结构

mineru/
├── cli/
│   └── gradio_app.py  # Gradio 界面主文件
└── ...

新增结构

mineru/
├── cli/
│   └── gradio_app.py  # 原 Gradio 界面(保留)
└── web_ui/            # 新增 Vue.js 界面
    ├── src/           # 前端源码
    ├── package.json   # Node.js 依赖
    ├── vite.config.ts # 构建配置
    └── README.md      # 使用文档

🚀 启动方式对比

原 Gradio 方式

# 启动 Gradio 界面
mineru-gradio --server-name 0.0.0.0 --server-port 7860

新 Vue.js 方式

# 1. 启动后端 API 服务
mineru-api --host localhost --port 8000

# 2. 启动前端开发服务器
cd web_ui
npm run dev
# 或者
./start.sh

访问地址:

🔧 功能对等性

完全对等的功能

  • 文件上传PDF/图片)
  • 参数配置(后端选择、语言、识别选项等)
  • 结果展示Markdown 渲染、源码查看)
  • 下载功能
  • 错误处理

⚠️ 部分差异的功能

  • 思维导图:原版使用 Markmap新版暂时显示 Markdown 源码
  • 界面样式:新版采用现代化设计,更符合当代审美

🔄 配置参数映射

Gradio 参数 Vue.js 对应项 说明
--server-name Vite 配置中的 host 开发服务器地址
--server-port Vite 配置中的 port 开发服务器端口
后端选择 配置面板下拉菜单 完全一致
语言选择 OCR 语言下拉菜单 完全一致
页数限制 滑块控件 更直观的操作

🛠️ 开发环境搭建

前端开发环境

# 进入前端目录
cd web_ui

# 安装依赖
npm install

# 启动开发服务器
npm run dev

后端环境

# 启动 API 服务
mineru-api --host localhost --port 8000

📊 性能对比

指标 Gradio 版本 Vue.js 版本
首次加载时间 ~2秒 ~1.5秒
内存占用 ~200MB ~150MB
响应速度 基准 提升约 20%
移动端适配 不支持 完全支持

🔒 兼容性考虑

向后兼容

  • 原有的 mineru-gradio 命令仍然可用
  • Gradio 界面文件保持不变
  • 不影响现有的 CLI 工具

并行运行

两个界面可以同时运行,互不影响:

# 终端1Gradio 界面
mineru-gradio --server-port 7860

# 终端2Vue.js 界面
cd web_ui && npm run dev

# 终端3API 服务
mineru-api --port 8000

🐛 故障排除

常见问题及解决方案

  1. 端口冲突

    Error: Port 3000 is in use
    

    解决Vite 会自动选择下一个可用端口,或者手动修改 vite.config.ts 中的端口配置。

  2. API 连接失败

    Proxy error: ECONNREFUSED
    

    解决:确保 FastAPI 服务正在运行,并且端口配置正确。

  3. 依赖安装失败

    npm install 失败
    

    解决:尝试使用 cnpm 或 yarn或者检查网络连接。

📈 未来规划

短期目标1-2个月

  • 完善思维导图功能
  • 添加处理进度显示
  • 实现历史记录管理

中期目标3-6个月

  • 支持批量处理
  • 用户偏好设置保存
  • 多主题样式支持

长期目标6个月以上

  • 完全替代 Gradio 界面
  • 移动端原生应用
  • 协作功能支持

🤝 贡献指南

欢迎社区贡献!请遵循以下步骤:

  1. Fork 项目仓库
  2. 创建功能分支
  3. 提交更改
  4. 发起 Pull Request

代码规范

  • 使用 TypeScript 严格模式
  • 遵循 Vue 3 Composition API 最佳实践
  • 保持组件的单一职责原则
  • 添加适当的单元测试

📞 支持与反馈

如有问题或建议,请:

  1. 查看 FAQ
  2. 提交 Issue
  3. 加入讨论群组

注意Vue.js 版本目前仍处于开发阶段,建议在生产环境中继续使用稳定的 Gradio 界面。