fix: recognize PPTX images and release idle OCR memory
Image-only PPTX attachments failed with no indexable text even when a local OCR model was configured. PPTX parsing now recognizes embedded PNG, JPEG and WebP images through the existing local OCR path, preserves native text and slide locators, and honors the selected parsing workflow. OCR workers previously retained model sessions and WASM memory indefinitely after successful parsing. Release the worker after 60 seconds with no active or queued requests, reuse it for continuous work, and reload on demand. Fast text/index modes still skip OCR. This does not render Office layouts, recognize inherited master images, or change Agent execution permissions. Validated four real PPTX attachments (40 pages), idle memory release and a nine-page reimport after model reload on Windows x64 with PP-OCRv6 Tiny. 49 local OCR requests and zero text-model calls. All 4293 tests passed with 67 skipped; typecheck, lint and the isolated Electron build passed. Release note: 修复已配置本地 OCR 时图片型 PPTX 仍无法导入的问题,识别结果保留幻灯片定位。OCR 空闲 60 秒后自动释放模型运行内存,连续解析复用模型,下次使用时自动重新加载。
This commit is contained in:
@@ -22,13 +22,16 @@ GoodBuddy 需要用同一条可信文档解析链路服务以下场景:
|
||||
- XLSX 工作表 XML 与共享字符串;
|
||||
- PPTX 幻灯片文字。
|
||||
|
||||
聊天附件、知识库和测试解析通过统一的 `DocumentParsingService` 使用已保存的工作流。
|
||||
扫描 PDF 和 PPTX 幻灯片内嵌图片可使用已安装、已校验的本地 OCR 模型识别;
|
||||
PPTX 的当前能力和边界见 [PPTX 图片流程](#75-pptx-图片流程)。
|
||||
|
||||
现有局限:
|
||||
|
||||
- 纯扫描 PDF 没有文本层时无法提取内容;
|
||||
- DOC、XLS、PPT 等旧版二进制 Office 格式不支持;
|
||||
- Office 解析主要提取文字,不能完整保留表格、公式、图表和版面;
|
||||
- 聊天附件和知识库直接调用底层解析函数,缺少可配置的统一工作流;
|
||||
- 没有本地 OCR 模型状态、真实解析测试和按场景策略。
|
||||
- DOCX、XLSX 内嵌图片尚未接入 OCR;
|
||||
- Office 格式转换和远程 OCR 服务尚未接入。
|
||||
|
||||
## 3. 产品原则
|
||||
|
||||
@@ -277,6 +280,32 @@ ZIP 根目录包含模型文件和 `goodbuddy-model.json`。清单格式为 `goo
|
||||
|
||||
受密码保护、损坏或超限的 PDF 不得进入 OCR。
|
||||
|
||||
### 7.5 PPTX 图片流程
|
||||
|
||||
自动解析、完整索引和高保真工作流保留幻灯片原生文字,同时对幻灯片直接引用的
|
||||
内嵌 PNG、JPEG、WebP 图片运行本地 OCR。即使幻灯片已有标题或正文,也不会因此
|
||||
跳过图片中的文字。快速文本、快速索引工作流不运行 OCR;图片型 PPTX 在这些模式下
|
||||
明确提示当前工作流未启用 OCR。
|
||||
|
||||
按演示文稿中的幻灯片顺序返回结果,图片识别结果标注 `幻灯片 N · 图片 M`,
|
||||
保留页码和识别置信度。OCR 页数限制计算含图片的幻灯片数,而不是图片总数;
|
||||
图片顺序处理并复用已加载模型,沿用现有超时、取消和输出限制。
|
||||
|
||||
这不是 Office 渲染或转换:不识别母版、版式中继承的图片,不重建裁剪、旋转或遮挡后的
|
||||
完整画面,不把演讲者备注当作幻灯片正文,也不下载外链图片。其他内嵌图片格式在
|
||||
需要 OCR 时明确报错。自动聊天解析可在 OCR 失败时保留可靠原生文字并附带警告;
|
||||
图片型文件没有可靠原生文字时仍失败,知识库和高保真工作流不以此回退掩盖 OCR 失败。
|
||||
|
||||
### 7.6 OCR 空闲资源回收
|
||||
|
||||
OCR 队列清空且没有正在处理的请求后,保留 Worker 60 秒,以复用连续文档的模型。
|
||||
期间收到新请求立即取消回收计时;请求完成、队列再次空闲后重新计时。空闲到期后
|
||||
销毁 Worker,释放其模型会话和 WASM 运行环境;下一次请求按需重新加载已安装模型。
|
||||
|
||||
回收不会删除模型文件或已经解析的附件文字,不打断正在识别、初始化或排队的任务。
|
||||
取消、超时和服务关闭仍按原有路径立即清理。操作系统显示的进程内存不保证立刻恢复到
|
||||
启动值,不能仅凭一次内存快照判断是否发生泄漏。
|
||||
|
||||
## 8. Office 与转换
|
||||
|
||||
本节只定义 Office 文件的语义解析和格式转换,不提供可视化编辑器、编辑会话、选区、撤销或
|
||||
@@ -361,6 +390,7 @@ DOC、XLS、PPT 通过 `DocumentConversionProvider` 转换:
|
||||
## 12. 验收
|
||||
|
||||
- 同一份扫描 PDF 可从聊天附件和知识库得到一致的逐页文本;
|
||||
- 图片型 PPTX 在自动解析下使用已配置的本地 OCR,并保留幻灯片来源定位;
|
||||
- 文本型 PDF 在 `auto` 模式下不运行 OCR;
|
||||
- 本地 OCR 在六个平台和两种架构上完全离线运行;
|
||||
- 模型文件损坏时拒绝加载并显示可恢复错误;
|
||||
@@ -371,6 +401,7 @@ DOC、XLS、PPT 通过 `DocumentConversionProvider` 转换:
|
||||
- 语音和 OCR 模型可在联网设备导出 ZIP,并在离线设备导入后完成真实推理;
|
||||
- 路径穿越、未知条目、错误模型 ID、篡改文件和超限 ZIP 均被拒绝;
|
||||
- 超页数、超时、取消和关闭不会留下运行任务;
|
||||
- OCR 空闲 60 秒后释放 Worker,连续请求复用模型,回收后的下一次解析可重新加载模型完成;
|
||||
- 测试解析不会创建聊天消息或知识库文档;
|
||||
- 选择本地模型时没有任何文档上传;
|
||||
- 文档中的提示词不会改变系统、模式或工具权限。
|
||||
|
||||
Reference in New Issue
Block a user