From 2a6be3e2ac5ed6a4562b3fad0e19779064e8796b Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Sun, 26 Oct 2025 18:30:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E7=BB=84=E4=BB=B6=E4=B8=AD=E6=B7=BB=E5=8A=A0OCR?= =?UTF-8?q?=E8=AD=A6=E5=91=8A=E6=8F=90=E9=86=92=EF=BC=8C=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=AF=E7=94=A8OCR=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E5=8F=96PDF=E6=88=96=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E6=96=87=E6=9C=AC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 4 +++ docs/advanced/document-processing.md | 9 +++++ web/src/components/FileUploadModal.vue | 47 ++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 4ef782c5..a6430da3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -217,6 +217,8 @@ services: container_name: mineru profiles: - all + env_file: + - .env ports: - 30000:30000 environment: @@ -253,6 +255,8 @@ services: container_name: mineru-api profiles: - all + env_file: + - .env ports: - 30001:30001 environment: diff --git a/docs/advanced/document-processing.md b/docs/advanced/document-processing.md index 1a0601c6..21463e78 100644 --- a/docs/advanced/document-processing.md +++ b/docs/advanced/document-processing.md @@ -21,6 +21,15 @@ docker compose up -d api ### 2. 高精度 OCR (MinerU) +需要配置: + +```bash +MINERU_VL_SERVER=http://localhost:30000 +MINERU_API_URI=http://localhost:30001 +``` + +然后启动相关服务 + ```bash # 需要 GPU,启动 MinerU 服务 docker compose up -d mineru-vllm-server mineru-api diff --git a/web/src/components/FileUploadModal.vue b/web/src/components/FileUploadModal.vue index e2fee78f..0df7efa2 100644 --- a/web/src/components/FileUploadModal.vue +++ b/web/src/components/FileUploadModal.vue @@ -97,6 +97,11 @@ + +
+ ⚠️ 检测到PDF或图片文件,请启用OCR功能以提取文本内容 +
+
{ return type === 'lightrag'; }); +// 计算属性:是否启用了OCR +const isOcrEnabled = computed(() => { + return chunkParams.value.enable_ocr !== 'disable'; +}); + +// 计算属性:是否有PDF或图片文件 +const hasPdfOrImageFiles = computed(() => { + if (fileList.value.length === 0) { + return false; + } + + const pdfExtensions = ['.pdf']; + const imageExtensions = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.tif', '.gif', '.webp']; + const ocrExtensions = [...pdfExtensions, ...imageExtensions]; + + return fileList.value.some(file => { + if (file.status !== 'done') { + return false; + } + + const filePath = file.response?.file_path || file.name; + if (!filePath) { + return false; + } + + const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase(); + return ocrExtensions.includes(ext); + }); +}); + // 计算属性:OCR选项 const enableOcrOptions = computed(() => [ { @@ -677,4 +713,15 @@ const chunkData = async () => { .chunk-config-content .params-info { margin-bottom: 16px; } + +// OCR警告提醒样式 +.ocr-warning-alert { + margin: 12px 0; + padding: 8px 12px; + background: #fff7e6; + border: 1px solid #ffd666; + border-radius: 4px; + color: #d46b08; + font-size: 13px; +}