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 系统实现了模块间的高效协作,形成了一个功能完整、结构清晰的整体。