在农业病虫害管理场景中真正困难的并不是“上传一张图片并返回一个名称”而是怎样把图像识别、监测预警、防治建议、知识服务和后台管理串成一套可持续运行的业务系统。本文以一个农作物害虫智能检测项目为例拆解 Spring Boot、Vue 与深度学习模型的组合方式。系统面向农户、农技人员、区域农业管理人员和平台管理员覆盖 15 类常见害虫识别并把单次识别结果继续用于区域监测和防治决策。本文侧重系统设计与工程实现思路不展开模型训练数据和论文原文。后续文章将继续拆解数据库、接口、异步识别与可视化模块。一、为什么不能只做一个“识别接口”一个能演示的识别接口通常只包含三步上传图片调用模型返回类别和置信度。但生产系统还需要解决以下问题谁上传了图片来自哪块农田识别任务是否排队、失败或超时相同区域的害虫密度是否超过阈值天气变化会不会加剧虫害不同作物、生长期和危害程度应该采用什么防治方案农技人员如何修正错误结果管理人员如何查看区域趋势和预警记录。因此这个项目没有把 AI 模型直接暴露给前端而是把它放在完整业务链路中的“智能引擎层”。二、总体技术架构系统采用前后端分离设计可以划分为五层层级主要职责推荐技术访问层PC 管理端、移动端、小程序Vue 3、TypeScript、Element Plus应用层用户、识别、预警、防治、知识库等业务服务Spring Boot、RESTful APIAI 引擎层图片预处理、模型推理、结果后处理Python 推理服务或独立模型服务数据层业务数据、图片地址、识别结果、知识库MySQL、对象存储、Redis基础设施层日志、监控、消息、部署与安全Nginx、Docker、消息队列应用层进一步拆为七类服务图像采集服务智能识别服务监测预警服务防治决策服务数据管理服务专家服务系统管理服务。这样拆分的好处是模型可以独立升级业务规则也可以单独调整不会因为重新训练模型而影响用户、权限和后台管理功能。三、核心业务流程一次完整识别流程可以设计为用户上传图片 ↓ Spring Boot 校验文件与用户权限 ↓ 保存原图并创建识别任务 ↓ 异步调用深度学习推理服务 ↓ 写入害虫类别、置信度和候选结果 ↓ 关联作物、地块、时间和天气数据 ↓ 执行预警规则并生成防治建议 ↓ 前端展示结果必要时由农技人员复核这里建议采用异步任务而不是让浏览器一直等待模型推理。创建任务后立即返回taskId前端轮询任务状态或者通过 WebSocket 接收完成通知。任务状态至少包括publicenumRecognitionStatus{PENDING,PROCESSING,SUCCESS,FAILED,MANUAL_REVIEW}当置信度低于业务阈值时不应直接给出确定结论而应把任务转入MANUAL_REVIEW交由农技人员复核。四、数据库如何建模核心数据可以拆成六组sys_user用户、角色和区域信息recognition_task识别任务、图片地址和处理状态recognition_result害虫类别、置信度和模型版本pest_knowledge害虫特征、危害作物和防治知识warning_record预警等级、触发规则和覆盖区域prevention_record实际采取的防治措施及效果反馈。识别任务表的简化结构如下CREATETABLErecognition_task(idBIGINTPRIMARYKEY,user_idBIGINTNOTNULL,farmland_idBIGINT,image_urlVARCHAR(500)NOTNULL,statusVARCHAR(32)NOTNULL,model_versionVARCHAR(64),error_messageVARCHAR(500),created_atDATETIMENOTNULL,finished_atDATETIME,INDEXidx_user_created(user_id,created_at),INDEXidx_status_created(status,created_at));识别结果不要只保存最终类别还应保存模型版本和原始置信度。模型升级后才能准确比较不同版本的效果并对历史图片进行重新识别。五、预警与防治决策预警规则不能只依赖一次识别结果。更可靠的做法是综合单位时间内同一区域的识别次数害虫密度或阳性样本比例温度、湿度、降雨等天气因素作物类型和生长阶段历史虫害发生趋势。可以先实现可配置的规则引擎publicWarningLevelcalculateWarning(BigDecimaldensity,WeatherSnapshotweather,CropStagecropStage){if(density.compareTo(highThreshold)0weather.isSuitableForPestSpread()){returnWarningLevel.RED;}if(density.compareTo(mediumThreshold)0){returnWarningLevel.ORANGE;}returnWarningLevel.NORMAL;}防治建议则根据“害虫种类 危害程度 作物 生长期 气候条件”组合生成。建议内容应明确标注来源、适用条件和更新时间避免把过期方案长期展示给用户。六、Vue 管理端的页面设计PC 管理端可用 Vue 3、TypeScript 和 Element Plus 实现主要页面包括识别任务列表与详情害虫知识库维护区域监测地图预警记录和处理闭环防治方案维护用户、角色和权限管理数据大屏与趋势分析。数据大屏可以使用 ECharts 展示害虫类别分布、区域趋势、识别成功率和预警处理率。图表只负责展示聚合计算应放在后端避免一次向浏览器传输大量明细数据。七、工程落地时最容易忽略的四件事1. 图片安全对上传文件校验 MIME 类型、后缀、大小和真实文件头图片使用随机文件名并与 Web 应用目录隔离。2. 模型版本管理每条结果都记录模型版本、推理时间和阈值。新模型上线时采用灰度切换便于快速回退。3. 失败重试与幂等模型服务暂时不可用时任务可以有限次数重试。使用任务 ID 保证幂等避免同一图片生成多条重复结果。4. 低置信度人工复核AI 输出不是最终事实。系统需要允许专家修正并把复核结果沉淀为后续模型优化的数据。八、目前的局限与改进方向该类系统通常面临两个实际限制一是新害虫和相似类别覆盖不足二是外部天气接口异常会影响联动预警。后续可以从三方面改进建立持续补充和标注样本的闭环为天气数据增加本地缓存与降级策略引入模型监控持续观察置信度分布和人工纠错率。总结Spring Boot Vue 深度学习的价值不只是把三个技术名词放在一起而是用 Spring Boot 管理稳定的业务流程用 Vue 提供清晰的交互体验再让模型成为可升级、可监控、可复核的智能能力。如果你正在做 Java 课程设计、毕业设计或农业数字化项目可以先按照本文的五层架构搭起主流程再逐步完善模型、预警规则和数据大屏。后续我会继续拆解这套系统的接口设计、数据库关系和异步任务实现。
SpringBoot+Vue+深度学习:农作物害虫智能检测系统架构与核心模块设计
在农业病虫害管理场景中真正困难的并不是“上传一张图片并返回一个名称”而是怎样把图像识别、监测预警、防治建议、知识服务和后台管理串成一套可持续运行的业务系统。本文以一个农作物害虫智能检测项目为例拆解 Spring Boot、Vue 与深度学习模型的组合方式。系统面向农户、农技人员、区域农业管理人员和平台管理员覆盖 15 类常见害虫识别并把单次识别结果继续用于区域监测和防治决策。本文侧重系统设计与工程实现思路不展开模型训练数据和论文原文。后续文章将继续拆解数据库、接口、异步识别与可视化模块。一、为什么不能只做一个“识别接口”一个能演示的识别接口通常只包含三步上传图片调用模型返回类别和置信度。但生产系统还需要解决以下问题谁上传了图片来自哪块农田识别任务是否排队、失败或超时相同区域的害虫密度是否超过阈值天气变化会不会加剧虫害不同作物、生长期和危害程度应该采用什么防治方案农技人员如何修正错误结果管理人员如何查看区域趋势和预警记录。因此这个项目没有把 AI 模型直接暴露给前端而是把它放在完整业务链路中的“智能引擎层”。二、总体技术架构系统采用前后端分离设计可以划分为五层层级主要职责推荐技术访问层PC 管理端、移动端、小程序Vue 3、TypeScript、Element Plus应用层用户、识别、预警、防治、知识库等业务服务Spring Boot、RESTful APIAI 引擎层图片预处理、模型推理、结果后处理Python 推理服务或独立模型服务数据层业务数据、图片地址、识别结果、知识库MySQL、对象存储、Redis基础设施层日志、监控、消息、部署与安全Nginx、Docker、消息队列应用层进一步拆为七类服务图像采集服务智能识别服务监测预警服务防治决策服务数据管理服务专家服务系统管理服务。这样拆分的好处是模型可以独立升级业务规则也可以单独调整不会因为重新训练模型而影响用户、权限和后台管理功能。三、核心业务流程一次完整识别流程可以设计为用户上传图片 ↓ Spring Boot 校验文件与用户权限 ↓ 保存原图并创建识别任务 ↓ 异步调用深度学习推理服务 ↓ 写入害虫类别、置信度和候选结果 ↓ 关联作物、地块、时间和天气数据 ↓ 执行预警规则并生成防治建议 ↓ 前端展示结果必要时由农技人员复核这里建议采用异步任务而不是让浏览器一直等待模型推理。创建任务后立即返回taskId前端轮询任务状态或者通过 WebSocket 接收完成通知。任务状态至少包括publicenumRecognitionStatus{PENDING,PROCESSING,SUCCESS,FAILED,MANUAL_REVIEW}当置信度低于业务阈值时不应直接给出确定结论而应把任务转入MANUAL_REVIEW交由农技人员复核。四、数据库如何建模核心数据可以拆成六组sys_user用户、角色和区域信息recognition_task识别任务、图片地址和处理状态recognition_result害虫类别、置信度和模型版本pest_knowledge害虫特征、危害作物和防治知识warning_record预警等级、触发规则和覆盖区域prevention_record实际采取的防治措施及效果反馈。识别任务表的简化结构如下CREATETABLErecognition_task(idBIGINTPRIMARYKEY,user_idBIGINTNOTNULL,farmland_idBIGINT,image_urlVARCHAR(500)NOTNULL,statusVARCHAR(32)NOTNULL,model_versionVARCHAR(64),error_messageVARCHAR(500),created_atDATETIMENOTNULL,finished_atDATETIME,INDEXidx_user_created(user_id,created_at),INDEXidx_status_created(status,created_at));识别结果不要只保存最终类别还应保存模型版本和原始置信度。模型升级后才能准确比较不同版本的效果并对历史图片进行重新识别。五、预警与防治决策预警规则不能只依赖一次识别结果。更可靠的做法是综合单位时间内同一区域的识别次数害虫密度或阳性样本比例温度、湿度、降雨等天气因素作物类型和生长阶段历史虫害发生趋势。可以先实现可配置的规则引擎publicWarningLevelcalculateWarning(BigDecimaldensity,WeatherSnapshotweather,CropStagecropStage){if(density.compareTo(highThreshold)0weather.isSuitableForPestSpread()){returnWarningLevel.RED;}if(density.compareTo(mediumThreshold)0){returnWarningLevel.ORANGE;}returnWarningLevel.NORMAL;}防治建议则根据“害虫种类 危害程度 作物 生长期 气候条件”组合生成。建议内容应明确标注来源、适用条件和更新时间避免把过期方案长期展示给用户。六、Vue 管理端的页面设计PC 管理端可用 Vue 3、TypeScript 和 Element Plus 实现主要页面包括识别任务列表与详情害虫知识库维护区域监测地图预警记录和处理闭环防治方案维护用户、角色和权限管理数据大屏与趋势分析。数据大屏可以使用 ECharts 展示害虫类别分布、区域趋势、识别成功率和预警处理率。图表只负责展示聚合计算应放在后端避免一次向浏览器传输大量明细数据。七、工程落地时最容易忽略的四件事1. 图片安全对上传文件校验 MIME 类型、后缀、大小和真实文件头图片使用随机文件名并与 Web 应用目录隔离。2. 模型版本管理每条结果都记录模型版本、推理时间和阈值。新模型上线时采用灰度切换便于快速回退。3. 失败重试与幂等模型服务暂时不可用时任务可以有限次数重试。使用任务 ID 保证幂等避免同一图片生成多条重复结果。4. 低置信度人工复核AI 输出不是最终事实。系统需要允许专家修正并把复核结果沉淀为后续模型优化的数据。八、目前的局限与改进方向该类系统通常面临两个实际限制一是新害虫和相似类别覆盖不足二是外部天气接口异常会影响联动预警。后续可以从三方面改进建立持续补充和标注样本的闭环为天气数据增加本地缓存与降级策略引入模型监控持续观察置信度分布和人工纠错率。总结Spring Boot Vue 深度学习的价值不只是把三个技术名词放在一起而是用 Spring Boot 管理稳定的业务流程用 Vue 提供清晰的交互体验再让模型成为可升级、可监控、可复核的智能能力。如果你正在做 Java 课程设计、毕业设计或农业数字化项目可以先按照本文的五层架构搭起主流程再逐步完善模型、预警规则和数据大屏。后续我会继续拆解这套系统的接口设计、数据库关系和异步任务实现。