# Document Parser 故障排除指南 本指南提供了Document Parser服务常见问题的详细解决方案,特别是关于虚拟环境和依赖管理的问题。 ## 📋 目录 1. [FlashInfer编译失败](#flashinfer编译失败) 2. [虚拟环境问题](#虚拟环境问题) 3. [依赖安装问题](#依赖安装问题) 4. [网络和下载问题](#网络和下载问题) 5. [系统环境问题](#系统环境问题) 6. [常用诊断命令](#常用诊断命令) 7. [获取帮助](#获取帮助) ## 🚀 FlashInfer编译失败 ### 问题: FlashInfer CUDA内核编译失败 **症状:** - MinerU启动时出现 `fatal error: math.h: 没有那个文件或目录` 错误 - 错误发生在CUDA图捕获阶段 - FlashInfer ninja构建失败 **原因:** 系统缺少C标准库开发头文件,导致FlashInfer无法编译CUDA内核。这通常发生在Ubuntu 24.04等较新系统上。 **诊断步骤:** ```bash # 检查系统头文件是否存在 ls -la /usr/include/math.h ls -la /usr/include/c++/13/cmath # 检查构建工具版本 gcc --version ninja --version nvcc --version ``` **解决方案:** **步骤1: 安装缺失的开发包** ```bash # 安装C标准库开发包 sudo apt install -y libc6-dev libm-dev # 安装C++标准库开发包 sudo apt install -y libstdc++-13-dev # 安装其他可能需要的包 sudo apt install -y build-essential ninja-build cmake ``` **步骤2: 设置CUDA环境变量** ```bash # 设置CUDA相关环境变量 export CUDA_HOME=/usr/local/cuda export PATH=$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH # 将这些环境变量添加到 ~/.bashrc 或 ~/.zshrc echo 'export CUDA_HOME=/usr/local/cuda' >> ~/.bashrc echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc ``` **步骤3: 清理缓存并重新安装** ```bash # 清理FlashInfer缓存 rm -rf ~/.cache/flashinfer # 重新安装MinerU(确保包含正确的sglang版本) pip uninstall mineru sglang -y pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple ``` **验证修复:** ```bash # 检查头文件是否存在 ls -la /usr/include/math.h ls -la /usr/include/c++/13/cmath # 检查CUDA头文件 ls -la /usr/local/cuda/include/cuda_runtime.h # 重新启动服务测试 document-parser server ``` **如果问题仍然存在:** ```bash # 尝试使用系统ninja而不是虚拟环境中的ninja which ninja # 如果显示虚拟环境路径,使用系统ninja sudo apt install -y ninja-build export PATH=/usr/bin:$PATH # 或者尝试禁用CUDA图功能(性能会下降) # 在启动MinerU时添加 --disable-cuda-graph 参数 ``` ## 🏠 虚拟环境问题 ### 问题1: 虚拟环境创建失败 **症状:** - `document-parser uv-init` 失败 - 错误信息包含 "权限拒绝" 或 "Permission denied" - 无法在当前目录创建 `venv` 文件夹 **诊断步骤:** ```bash # 检查当前目录权限 ls -la # Linux/macOS dir # Windows # 检查磁盘空间 df -h . # Linux/macOS dir # Windows # 检查是否存在同名文件 ls -la venv # Linux/macOS dir venv # Windows ``` **解决方案:** **Linux/macOS:** ```bash # 修改目录权限 chmod 755 . # 修改目录所有者 chown $USER . # 删除现有的venv文件(如果存在) rm -rf ./venv # 重新初始化 document-parser uv-init ``` **Windows:** ```cmd # 以管理员身份运行命令提示符 # 删除现有的venv目录 rmdir /s .\venv # 重新初始化 document-parser uv-init ``` ### 问题2: 虚拟环境激活失败 **症状:** - 激活命令执行后没有效果 - 命令提示符没有显示 `(venv)` 前缀 - Python路径仍指向系统Python **解决方案:** **Linux/macOS (Bash/Zsh):** ```bash # 标准激活方式 source ./venv/bin/activate # 检查是否激活成功 which python python --version ``` **Linux/macOS (Fish Shell):** ```bash # Fish shell激活方式 source ./venv/bin/activate.fish ``` **Windows (CMD):** ```cmd # 激活虚拟环境 .\venv\Scripts\activate # 检查是否激活成功 where python python --version ``` **Windows (PowerShell):** ```powershell # 如果遇到执行策略限制 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # 激活虚拟环境 .\venv\Scripts\Activate.ps1 # 检查是否激活成功 Get-Command python python --version ``` ### 问题3: 虚拟环境路径问题 **症状:** - 找不到Python可执行文件 - 路径指向错误的位置 - 跨平台兼容性问题 **解决方案:** ```bash # 检查虚拟环境结构 ls -la ./venv/bin/ # Linux/macOS dir .\venv\Scripts\ # Windows # 手动验证Python路径 ./venv/bin/python --version # Linux/macOS .\venv\Scripts\python --version # Windows # 如果路径错误,重新创建虚拟环境 rm -rf ./venv # Linux/macOS rmdir /s .\venv # Windows document-parser uv-init ``` ## 📦 依赖安装问题 ### 问题1: UV工具未安装或不可用 **症状:** - `uv: command not found` - UV版本过旧 - UV安装路径问题 **解决方案:** **官方安装脚本 (推荐):** ```bash # Linux/macOS curl -LsSf https://astral.sh/uv/install.sh | sh # 重启终端或重新加载shell配置 source ~/.bashrc # 或 ~/.zshrc ``` **包管理器安装:** ```bash # macOS brew install uv # 通过pip安装 pip install uv # Windows (winget) winget install astral-sh.uv ``` **验证安装:** ```bash uv --version which uv # Linux/macOS where uv # Windows ``` ### 问题2: MinerU或MarkItDown安装失败 **症状:** - 包下载超时 - 编译错误 - 依赖冲突 **诊断步骤:** ```bash # 检查网络连接 ping pypi.org # 检查Python版本 python --version # 检查虚拟环境中的pip ./venv/bin/pip --version # Linux/macOS .\venv\Scripts\pip --version # Windows ``` **解决方案:** **使用国内镜像源:** ```bash # 清华大学镜像源 uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ mineru[core] uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ markitdown # 阿里云镜像源 uv pip install -i https://mirrors.aliyun.com/pypi/simple/ mineru[core] ``` **分步安装:** ```bash # 1. 升级pip uv pip install --upgrade pip # 2. 安装基础依赖 uv pip install wheel setuptools # 3. 分别安装包 uv pip install mineru[core] uv pip install markitdown ``` **增加超时时间:** ```bash uv pip install --timeout 300 mineru[core] ``` **清理缓存后重试:** ```bash uv cache clean document-parser uv-init ``` ## 🌐 网络和下载问题 ### 问题1: 网络连接超时 **症状:** - 下载包时超时 - 连接PyPI失败 - DNS解析问题 **解决方案:** **检查网络连接:** ```bash # 测试基本连接 ping pypi.org ping pypi.tuna.tsinghua.edu.cn # 测试HTTPS连接 curl -I https://pypi.org/simple/ ``` **配置代理 (如果需要):** ```bash # 设置HTTP代理 export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080 # Windows set HTTP_PROXY=http://proxy.company.com:8080 set HTTPS_PROXY=http://proxy.company.com:8080 ``` **使用镜像源:** ```bash # 配置uv使用镜像源 uv pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ mineru[core] ``` ### 问题2: 防火墙或安全软件阻止 **解决方案:** - 临时关闭防火墙进行测试 - 将Python和uv添加到防火墙白名单 - 检查企业网络策略 - 联系网络管理员获取帮助 ## ⚙️ 系统环境问题 ### 问题1: Python版本不兼容 **症状:** - Python版本低于3.8 - 缺少必要的Python模块 - 系统Python与虚拟环境冲突 **检查Python版本:** ```bash python --version python3 --version ``` **解决方案:** **Linux (Ubuntu/Debian):** ```bash # 安装Python 3.11 sudo apt update sudo apt install python3.11 python3.11-venv python3.11-pip # 使用特定版本创建虚拟环境 python3.11 -m venv ./venv ``` **macOS:** ```bash # 使用Homebrew安装 brew install python@3.11 # 或使用pyenv管理多版本 brew install pyenv pyenv install 3.11.0 pyenv local 3.11.0 ``` **Windows:** - 从 [python.org](https://python.org) 下载并安装Python 3.11+ - 确保勾选 "Add Python to PATH" - 重启命令提示符 ### 问题2: CUDA环境配置 (可选) **检查CUDA:** ```bash nvidia-smi nvcc --version ``` **安装CUDA (如果需要GPU加速):** - 安装NVIDIA驱动程序 - 下载并安装CUDA Toolkit (推荐11.8或12.x) - 验证安装: `nvidia-smi` 和 `nvcc --version` **注意:** CPU模式也可正常工作,GPU仅用于加速。 ## 🔍 常用诊断命令 ### 环境检查命令 ```bash # 完整环境检查 document-parser check # 详细故障排除指南 document-parser troubleshoot # 重新初始化环境 document-parser uv-init ``` ### 手动验证命令 ```bash # 检查工具版本 uv --version python --version # 检查虚拟环境 ./venv/bin/python --version # Linux/macOS .\venv\Scripts\python --version # Windows # 检查已安装的包 ./venv/bin/pip list # Linux/macOS .\venv\Scripts\pip list # Windows # 测试MinerU ./venv/bin/mineru --help # Linux/macOS .\venv\Scripts\mineru --help # Windows # 测试MarkItDown ./venv/bin/python -m markitdown --help # Linux/macOS .\venv\Scripts\python -m markitdown --help # Windows ``` ### 日志查看 ```bash # 查看当天日志 (Linux/macOS) tail -f logs/log.$(date +%Y-%m-%d) # 查看最新日志 ls -la logs/ tail -f logs/log.* # Windows dir logs\ type logs\log.%date:~0,10% ``` ### 清理和重置 ```bash # 清理UV缓存 uv cache clean # 完全重置虚拟环境 rm -rf ./venv # Linux/macOS rmdir /s .\venv # Windows document-parser uv-init # 清理日志文件 rm -rf logs/* # Linux/macOS del /q logs\* # Windows ``` ## 🆘 获取帮助 ### 自助诊断步骤 1. **运行诊断命令:** ```bash document-parser check document-parser troubleshoot ``` 2. **收集系统信息:** - 操作系统版本 - Python版本 - 当前工作目录 - 完整的错误消息 3. **检查日志文件:** ```bash ls -la logs/ tail -100 logs/log.* ``` 4. **尝试在新目录中测试:** ```bash mkdir test-document-parser cd test-document-parser document-parser uv-init ``` ### 常见解决方案总结 | 问题类型 | 快速解决方案 | |---------|-------------| | 权限问题 | `chmod 755 .` (Linux/macOS) 或以管理员身份运行 (Windows) | | 网络问题 | 使用镜像源: `-i https://pypi.tuna.tsinghua.edu.cn/simple/` | | 虚拟环境损坏 | `rm -rf ./venv && document-parser uv-init` | | UV未安装 | `curl -LsSf https://astral.sh/uv/install.sh \| sh` | | Python版本过旧 | 安装Python 3.8+ | | 磁盘空间不足 | 清理磁盘,确保至少500MB可用空间 | ### 最后的建议 如果所有方法都无法解决问题: 1. **完全重新开始:** ```bash # 创建新的工作目录 mkdir fresh-document-parser cd fresh-document-parser # 重新初始化 document-parser uv-init ``` 2. **检查系统限制:** - 企业网络策略 - 防病毒软件设置 - 磁盘配额限制 - 用户权限限制 3. **寻求帮助时提供:** - 完整的错误消息 - 系统信息 (`uname -a` 或 `systeminfo`) - Python版本 (`python --version`) - 执行的完整命令序列 - 相关日志文件内容 --- **记住:** 大多数问题都可以通过重新运行 `document-parser uv-init` 来解决。这个命令会自动检测和修复常见的环境问题。