2. 系统总体架构设计:端侧拍照上传 → 云端OCR引擎 → 结构化字段提取 → 规则引擎校验 → 阈值联动告警 → 运维Dashboard

本章聚焦于《签收证明OCR识别与异常告警阈值联动调优工程案例》的整体技术链路。系统采用端-云-管-控四层架构,将物理签收单据的影像数据,经过OCR识别、字段提取、规则校验与阈值联动,最终在运维Dashboard上呈现可观测的告警与性能指标。以下为系统总体架构的SVG流程图,清晰展示六大核心环节的串联关系。

架构设计原则: 高内聚低耦合、异步非阻塞、可水平扩展、告警阈值可动态调优。
系统总体架构流程图:端侧 → 云端 → 规则 → 告警 → 运维 端侧拍照上传 Android/iOS/Web 云端OCR引擎 通用+专用模型 结构化字段提取 JSON Schema 规则引擎校验 Drools / 自研 阈值联动告警 动态阈值 + 分级 运维Dashboard Grafana / 自研 架构关键说明 ① 端侧仅做拍照与压缩上传,不参与识别逻辑,降低端侧功耗与版本迭代成本 ② 规则引擎校验结果反馈至阈值联动模块,实现告警阈值的动态调优闭环

2.1 核心模块职责与数据流

系统共包含6个核心模块,每个模块承担独立的职责,并通过标准化的数据接口进行交互。下表详细列出各模块的输入、输出、关键技术选型与性能目标。

模块名称 输入 输出 关键技术 性能目标
端侧拍照上传 物理签收单据 JPEG/PNG 压缩图片 Camera2 API、图像压缩、分片上传 单张上传 < 3s
云端OCR引擎 图片字节流 OCR原始文本 + 置信度 PaddleOCR / Tesseract / 自研模型 单张识别 < 2s
结构化字段提取 OCR原始文本 JSON 结构化字段 正则 + NER + 规则模板 字段准确率 > 95%
规则引擎校验 结构化字段 校验通过/失败 + 异常码 Drools / EasyRules / 自研DSL 单条校验 < 50ms
阈值联动告警 校验结果 + 历史指标 告警事件 + 阈值调整建议 动态阈值算法、分级告警策略 告警延迟 < 5s
运维Dashboard 告警事件 + 性能指标 可视化面板 + 报表 Grafana / Prometheus / 自研 页面加载 < 2s
架构避坑提示: 端侧上传模块务必实现断点续传与图片自动压缩(建议压缩至 720p 以内),避免弱网环境下上传超时或云端OOM。云端OCR引擎建议采用异步任务队列(如 RabbitMQ / Kafka)削峰填谷,防止突发流量打垮识别服务。

2.2 数据流与异常处理路径

系统数据流采用串行+并行混合模式:端侧→云端→提取→校验为串行链路;校验结果同时进入告警模块与Dashboard展示模块,形成并行分支。当任意环节发生异常时,系统需具备完善的降级与重试机制。

数据流与异常处理路径 端侧拍照 OCR识别 字段提取 规则校验 Dashboard OCR异常重试 字段提取失败 规则校验告警 异常处理策略 OCR异常:自动重试3次,间隔1s/2s/4s;字段提取失败:降级为人工标注队列;规则校验告警:触发阈值联动模块

2.3 技术选型对比与决策依据

在架构设计阶段,我们对核心模块的关键技术进行了多方案对比,最终选型基于性能、成本、可维护性、社区生态四个维度。下表展示OCR引擎与规则引擎的选型对比。

模块 候选方案 优势 劣势 最终选型
OCR引擎 PaddleOCR 中文识别率高、轻量、支持端侧部署 复杂表格识别较弱 PaddleOCR + 自研表格模型
Tesseract 5.x 开源成熟、多语言支持 中文识别精度低于PaddleOCR
云服务(百度/阿里) 开箱即用、准确率高 成本高、数据安全风险
规则引擎 Drools 功能强大、支持复杂规则 学习曲线陡、内存占用高 自研轻量DSL引擎
EasyRules 轻量、Java生态友好 不支持规则动态热加载
自研DSL引擎 定制化强、热加载、低延迟 需要自行维护解析器
架构决策警告: 规则引擎不建议直接使用Drools处理高并发OCR校验场景(QPS > 1000),其内存占用与规则编译开销会显著增加GC压力。本案例采用自研DSL引擎 + 预编译规则缓存方案,单条校验耗时稳定在5ms以内。

2.4 架构部署拓扑与关键指标

系统采用Kubernetes容器化部署,各模块独立微服务化,通过Service Mesh进行服务间通信。以下为部署拓扑的关键配置与性能指标基线。

  • 端侧服务: Nginx + Lua 做上传网关,支持水平扩展,单节点承载 500 QPS。
  • OCR引擎服务: GPU节点(NVIDIA T4),每个Pod部署1个模型实例,支持批处理(batch=4),单节点吞吐 20 QPS。
  • 字段提取服务: CPU节点,无状态,单节点吞吐 200 QPS。
  • 规则引擎服务: CPU节点,预编译规则缓存,单节点吞吐 1000 QPS。
  • 告警服务: 基于Prometheus + AlertManager,阈值动态更新周期 30s。
  • Dashboard: Grafana + 自研API,数据源为Prometheus + Elasticsearch。