Skip to content

模块关系

DocuSnap-Backend 系统的五个核心模块通过明确的接口和数据流进行交互,形成一个协调工作的整体。本页面详细介绍这些模块之间的关系和交互方式。

模块关系图

下图展示了五个核心模块之间的关系和交互:

核心模块关系图

从图中可以看出:

  • **任务处理模块**位于系统的中心,协调其他模块的工作
  • **OCR 处理模块**和**LLM 处理模块**紧密合作,共同完成文档和表单处理
  • **安全加密模块**和**缓存和数据持久化模块**为其他模块提供支持服务
  • 所有模块都与**任务处理模块**有交互,形成一个协调工作的整体

主要交互流程

任务处理模块与其他模块的交互

任务处理模块作为系统的核心协调者,与其他所有模块都有交互。

  1. 任务处理模块 → OCR 处理模块:
  2. 调用 OCR 处理模块处理图像
  3. 传递图像数据和处理参数
  4. 接收 OCR 处理结果(文本内容)

  5. 任务处理模块 → LLM 处理模块:

  6. 调用 LLM 处理模块分析文本
  7. 传递 OCR 结果和任务类型
  8. 接收 LLM 处理结果(结构化数据)

  9. 任务处理模块 → 安全加密模块:

  10. 调用安全加密模块解密客户端请求
  11. 调用安全加密模块加密响应数据
  12. 验证请求的完整性和真实性

  13. 任务处理模块 → 缓存和数据持久化模块:

  14. 创建和更新任务记录
  15. 存储任务处理结果
  16. 查询任务状态和结果

OCR 处理模块与其他模块的交互

OCR 处理模块主要与任务处理模块和外部 OCR 服务交互。

  1. OCR 处理模块 ← 任务处理模块:
  2. 接收图像处理请求
  3. 获取图像数据和处理参数
  4. 返回 OCR 处理结果

  5. OCR 处理模块 → 外部 OCR 服务:

  6. 发送图像到 OCR 服务
  7. 接收 OCR 识别结果
  8. 处理服务响应和错误

LLM 处理模块与其他模块的交互

LLM 处理模块主要与任务处理模块和外部 LLM 服务交互。

  1. LLM 处理模块 ← 任务处理模块:
  2. 接收文本分析请求
  3. 获取 OCR 结果和任务类型
  4. 返回 LLM 处理结果

  5. LLM 处理模块 → 外部 LLM 服务:

  6. 发送提示到 LLM 服务
  7. 接收 LLM 响应
  8. 处理服务响应和错误

安全加密模块与其他模块的交互

安全加密模块为系统提供安全服务,主要与任务处理模块交互。

  1. 安全加密模块 ← 任务处理模块:
  2. 接收解密请求
  3. 接收加密请求
  4. 返回解密/加密结果

  5. 安全加密模块 → 任务处理模块:

  6. 提供解密后的请求数据
  7. 提供加密后的响应数据
  8. 报告安全验证结果

缓存和数据持久化模块与其他模块的交互

缓存和数据持久化模块为系统提供数据存储和检索服务,主要与任务处理模块交互。

  1. 缓存和数据持久化模块 ← 任务处理模块:
  2. 接收任务创建请求
  3. 接收任务状态更新请求
  4. 接收任务结果存储请求
  5. 接收任务查询请求

  6. 缓存和数据持久化模块 → 任务处理模块:

  7. 提供任务状态信息
  8. 提供缓存的任务结果
  9. 报告存储操作结果

数据流向

DocuSnap-Backend 系统中的数据流向可以概括为以下几个主要路径:

1. 请求处理路径

客户端 → 安全加密模块(解密) → 任务处理模块 → 缓存和数据持久化模块(查询缓存)

2. 任务执行路径

任务处理模块 → OCR 处理模块 → 外部 OCR 服务 → OCR 处理模块 → 任务处理模块 → LLM 处理模块 → 外部 LLM 服务 → LLM 处理模块 → 任务处理模块

3. 结果存储路径

任务处理模块 → 缓存和数据持久化模块(存储结果)

4. 响应处理路径

任务处理模块 → 安全加密模块(加密) → 客户端

5. 状态查询路径

客户端 → 安全加密模块(解密) → 任务处理模块 → 缓存和数据持久化模块(查询状态) → 任务处理模块 → 安全加密模块(加密) → 客户端

接口定义

模块之间通过明确定义的接口进行交互,以下是主要接口的定义:

任务处理模块对外接口

  1. 处理请求接口:
  2. process_document(images):处理文档请求
  3. process_form(images):处理表单请求
  4. process_form_filling(images, user_data):处理表单填充请求

  5. 状态查询接口:

  6. get_task_status(task_id):查询任务状态
  7. get_task_result(task_id):查询任务结果

OCR 处理模块接口

  1. 图像处理接口:
  2. process_images(images):处理多个图像并返回文本结果
  3. process_single_image(image, semaphore):处理单个图像

LLM 处理模块接口

  1. 文本处理接口:
  2. process_with_llm(ocr_text, task_type, user_data=None):使用 LLM 处理文本
  3. build_prompt(ocr_text, task_type, user_data=None):构建提示

安全加密模块接口

  1. 加密解密接口:
  2. decrypt_request(encrypted_data, encrypted_key, signature):解密请求
  3. encrypt_response(data, aes_key):加密响应

缓存和数据持久化模块接口

  1. 数据存储接口:
  2. create_task_record(task_id, task_type):创建任务记录
  3. update_task_result(task_id, status, result=None):更新任务结果

  4. 数据查询接口:

  5. get_task_status(task_id):获取任务状态
  6. get_task_result(task_id):获取任务结果

模块依赖关系

DocuSnap-Backend 系统的模块依赖关系如下:

  1. 任务处理模块:
  2. 依赖 OCR 处理模块进行图像处理
  3. 依赖 LLM 处理模块进行文本分析
  4. 依赖安全加密模块进行请求解密和响应加密
  5. 依赖缓存和数据持久化模块进行数据存储和检索

  6. OCR 处理模块:

  7. 依赖外部 OCR 服务进行文本识别
  8. 不直接依赖其他内部模块

  9. LLM 处理模块:

  10. 依赖外部 LLM 服务进行文本分析
  11. 不直接依赖其他内部模块

  12. 安全加密模块:

  13. 不依赖其他内部模块

  14. 缓存和数据持久化模块:

  15. 不依赖其他内部模块

这种依赖关系设计减少了模块间的耦合,提高了系统的可维护性和可扩展性。

通信机制

DocuSnap-Backend 系统的模块间通信主要通过函数调用和返回值进行,具体机制如下:

  1. 同步函数调用:
  2. 模块间通过直接的函数调用进行通信
  3. 调用方等待被调用方完成处理并返回结果

  4. 异步任务处理:

  5. 任务处理模块通过任务队列和工作线程实现异步处理
  6. 客户端可以异步查询任务状态和结果

  7. 错误传递:

  8. 模块间通过异常机制传递错误信息
  9. 上层模块捕获并处理下层模块抛出的异常

  10. 数据序列化:

  11. 模块间传递复杂数据结构时,通过 JSON 序列化和反序列化
  12. 确保数据格式的一致性和可靠性

协作模式

DocuSnap-Backend 系统的模块协作体现了以下设计模式和协作模式:

  1. 生产者-消费者模式:
  2. 任务处理模块作为协调者,管理任务的生产和消费
  3. API 端点作为生产者,生成任务
  4. 工作线程作为消费者,处理任务

  5. 管道处理模式:

  6. 文档和表单处理形成一个处理管道:图像 → OCR → LLM → 结构化结果
  7. 每个模块负责管道中的一个处理阶段

  8. 服务提供者模式:

  9. 安全加密模块和缓存和数据持久化模块作为服务提供者
  10. 为其他模块提供通用的安全和数据服务

  11. 外观模式:

  12. 任务处理模块作为外观,为客户端提供统一的接口
  13. 隐藏了内部模块的复杂性和交互细节

通过这些设计和实现,DocuSnap-Backend 系统实现了模块间的高效协作,形成了一个功能完整、结构清晰的整体。