From 7c16c954e6a9228ae9b40004d2511d152ab87514 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?=
Date: Wed, 27 Aug 2025 11:16:30 +0800
Subject: [PATCH] os error
---
MINERU_INTEGRATION.md | 116 ------------------
MINERU_INTEGRATION_REVIEW.md | 4 +-
README.md | 2 +-
apps/common/handle/impl/mineru/base_parser.py | 5 +-
.../impl/mineru/gbase_adapter/adapter.py | 2 -
.../impl/mineru/maxkb_adapter/adapter.py | 9 +-
6 files changed, 10 insertions(+), 128 deletions(-)
delete mode 100644 MINERU_INTEGRATION.md
diff --git a/MINERU_INTEGRATION.md b/MINERU_INTEGRATION.md
deleted file mode 100644
index ba6d6f6c..00000000
--- a/MINERU_INTEGRATION.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# MinerU 文档解析集成指南
-
-## 概述
-
-本文档说明了如何在 MaxKB 中使用 MinerU 高质量文档解析功能。MinerU 是一个强大的文档解析工具,特别适合处理包含复杂表格、图片、公式等内容的 PDF 和 PPT 文档。
-
-## 最新更新
-
-- ✅ MinerU 代码已完整集成到 MaxKB 项目中
-- ✅ 支持选择大语言模型和视觉模型进行文档解析
-- ✅ 前端界面支持模型选择器
-- ✅ 后端支持传递模型参数到 MinerU 解析器
-
-## 功能特点
-
-- **高质量解析**:支持复杂文档结构的精确解析
-- **多格式支持**:支持 PDF、PPT、PPTX 文件格式
-- **智能处理**:自动识别并处理表格、图片、公式等复杂内容
-- **分页处理**:支持按页独立处理,提高处理效率
-- **上下文保持**:保持文档的上下文关系,提高检索质量
-
-## 使用方法
-
-### 1. 配置模型
-
-MinerU 解析需要配置两种模型:
-
-- **大语言模型 (LLM)**:用于内容理解和增强
-- **视觉模型 (Vision Model)**:用于图片识别和处理
-
-在 MaxKB 管理后台的模型管理页面(http://localhost:3000/admin/model)添加所需的模型。
-
-### 2. 上传文档
-
-1. 进入知识库管理页面
-2. 点击"上传文档"按钮
-3. 在文档类型选择中,选择"MinerU"选项
-4. 选择合适的大语言模型和视觉模型
-5. 上传 PDF 或 PPT 文档
-6. 系统会自动使用选定的模型进行智能解析
-
-### 3. 文档处理流程
-
-当选择 MinerU 解析时,系统会:
-
-1. **文件检测**:自动识别文件格式(PDF/PPT)
-2. **智能解析**:使用 MinerU 引擎进行深度解析
-3. **内容提取**:提取文本、表格、图片等内容
-4. **分段处理**:根据设置的规则进行智能分段
-5. **向量化存储**:将处理后的内容进行向量化存储
-
-## 技术实现
-
-### 后端集成
-
-MinerU 解析器已集成到 MaxKB 的文档处理流程中:
-
-- **MinerU 核心代码**:`/apps/common/handle/impl/mineru/`
-- **处理器适配器**:`/apps/common/handle/impl/mineru/maxkb_adapter.py`
-- **分段处理器**:`/common/handle/impl/text/mineru_split_handle.py`
-- **优先级**:MinerU 处理器具有最高优先级,优先处理支持的文档格式
-- **模型集成**:支持动态选择和配置 LLM 和 Vision 模型
-- **异步处理**:使用异步方式调用 MinerU API,提高处理效率
-
-### 前端支持
-
-前端已完整支持 MinerU 功能:
-
-- **上传组件**:支持选择 MinerU 作为解析方式
-- **模型选择器**:可选择大语言模型和视觉模型
-- **文件过滤**:自动过滤仅显示支持的文件格式(PDF、PPT、PPTX)
-- **进度显示**:实时显示文档处理进度
-- **状态管理**:使用 Pinia store 管理模型选择状态
-
-## 支持的文件格式
-
-- **PDF 文档**:`.pdf`
-- **PowerPoint 演示文稿**:`.ppt`, `.pptx`
-
-## 注意事项
-
-1. **文件大小限制**:遵循知识库设置的文件大小限制
-2. **处理时间**:复杂文档可能需要较长处理时间
-3. **资源消耗**:MinerU 解析需要较多计算资源,建议合理安排处理任务
-
-## 故障排查
-
-### 常见问题
-
-1. **MinerU 未初始化**
- - 检查 gptbase-parser 路径是否正确
- - 确认依赖已正确安装
-
-2. **文档解析失败**
- - 检查文档格式是否支持
- - 查看日志获取详细错误信息
-
-3. **处理超时**
- - 考虑分批处理大型文档
- - 调整超时设置
-
-## 日志位置
-
-MinerU 相关日志会记录在 MaxKB 的标准日志中,使用 `mineru-parser` 前缀标识。
-
-## 未来优化
-
-- [ ] 支持更多文档格式
-- [ ] 优化图片处理流程
-- [ ] 添加解析质量评分
-- [ ] 支持自定义解析参数
-- [ ] 增加批量处理能力
-
-## 联系支持
-
-如遇到问题,请查看系统日志或联系技术支持团队。
\ No newline at end of file
diff --git a/MINERU_INTEGRATION_REVIEW.md b/MINERU_INTEGRATION_REVIEW.md
index 8d8b8965..bb386182 100644
--- a/MINERU_INTEGRATION_REVIEW.md
+++ b/MINERU_INTEGRATION_REVIEW.md
@@ -1,5 +1,3 @@
-# MinerU 集成复盘报告
-
## 一、已完成的集成工作
### 1. 核心功能集成 ✅
@@ -209,4 +207,4 @@ MinerU 集成的核心功能已经完成,可以进行基础的文档解析。
3. 进行完整的测试
4. 优化性能和错误处理
-建议先在测试环境中验证完整流程,确保稳定后再部署到生产环境。
\ No newline at end of file
+建议先在测试环境中验证完整流程,确保稳定后再部署到生产环境。
diff --git a/README.md b/README.md
index d2ae0562..988f5e01 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Open-source platform for building enterprise-grade agents
强大易用的企业级智能体平台

diff --git a/apps/common/handle/impl/mineru/base_parser.py b/apps/common/handle/impl/mineru/base_parser.py
index d70e3c9a..cc899061 100644
--- a/apps/common/handle/impl/mineru/base_parser.py
+++ b/apps/common/handle/impl/mineru/base_parser.py
@@ -274,14 +274,15 @@ class BaseMinerUExtractor:
# 如果有 binary_data,说明图片被压缩了,需要先保存到临时文件
if binary_data:
import tempfile
- with tempfile.NamedTemporaryFile(suffix=os.path.splitext(filename)[1], delete=False) as tmp:
+ import os as _os # Import os locally to avoid scope issues
+ with tempfile.NamedTemporaryFile(suffix=_os.path.splitext(filename)[1], delete=False) as tmp:
tmp.write(binary_data)
tmp_path = tmp.name
result = await self.adapter.upload_file(tmp_path, upload_options)
# 清理临时文件
try:
- os.unlink(tmp_path)
+ _os.unlink(tmp_path)
except:
pass
elif filepath:
diff --git a/apps/common/handle/impl/mineru/gbase_adapter/adapter.py b/apps/common/handle/impl/mineru/gbase_adapter/adapter.py
index 0f74c37f..43cec005 100644
--- a/apps/common/handle/impl/mineru/gbase_adapter/adapter.py
+++ b/apps/common/handle/impl/mineru/gbase_adapter/adapter.py
@@ -50,8 +50,6 @@ class GPTBaseAdapter(PlatformAdapter):
logger.info(f"Gbase: Test mode - returning original path: {file_path}")
return file_path
- import os
-
# 判断文件类型
file_ext = os.path.splitext(file_path)[1].lower()
diff --git a/apps/common/handle/impl/mineru/maxkb_adapter/adapter.py b/apps/common/handle/impl/mineru/maxkb_adapter/adapter.py
index 3080d26b..40e52fa7 100644
--- a/apps/common/handle/impl/mineru/maxkb_adapter/adapter.py
+++ b/apps/common/handle/impl/mineru/maxkb_adapter/adapter.py
@@ -262,10 +262,11 @@ class MinerUAdapter:
import tempfile
import asyncio
import threading
+ import os as _os # Import os locally to ensure it's available
try:
# 创建临时文件
- with tempfile.NamedTemporaryFile(suffix=os.path.splitext(file_name)[1],
+ with tempfile.NamedTemporaryFile(suffix=_os.path.splitext(file_name)[1],
delete=False) as tmp_file:
tmp_file.write(file_content)
tmp_file_path = tmp_file.name
@@ -376,7 +377,7 @@ class MinerUAdapter:
for img_path in section['images']:
try:
# 检查图片文件是否存在
- if os.path.exists(img_path):
+ if _os.path.exists(img_path):
with open(img_path, 'rb') as f:
img_content = f.read()
saved_path = save_image_func(img_content)
@@ -393,8 +394,8 @@ class MinerUAdapter:
finally:
# 清理临时文件
- if os.path.exists(tmp_file_path):
- os.unlink(tmp_file_path)
+ if _os.path.exists(tmp_file_path):
+ _os.unlink(tmp_file_path)
except Exception as e:
logger.error(f"MinerU处理文档失败: {str(e)}")