当前位置: 首页 > article >正文

自动化业务通报系统实现

问题解构需求核心是构建一个基于Python的自动化业务通报系统用于从多个.xls报表中提取数据按团队统计指标完成情况生成手机适配的通报图片并通过Web界面展示。系统需支持灵活的配置管理包括团队信息、日目标、指标映射规则等并具备落后团队提醒功能。方案推演系统将采用Flask构建Web界面使用Pandas处理Excel数据Pillow生成图片并利用JupyterLab进行交互式开发与测试。核心模块包括配置管理、数据解析、统计计算、图片生成和Web展示。一、系统架构与核心代码1. 配置文件设计系统使用YAML格式的配置文件便于维护和修改。config.yaml主配置文件定义其他配置文件的路径。# config.yaml data_dir: ./data # 原始.xls文件存放目录 output_dir: ./output # 生成的图片输出目录 team_config: ./configs/teams.yaml # 团队人员配置 daily_target_config: ./configs/daily_targets.yaml # 日目标配置 indicator_config: ./configs/indicators.yaml # 统计指标配置 file_mapping_config: ./configs/file_mapping.yaml # 文件-指标映射配置teams.yaml定义团队层级和负责人。# teams.yaml teams: - name: 团队A level: 1 leader: 张三 sub_teams: - name: 团队A1 level: 2 leader: 李四 - name: 团队A2 level: 2 leader: 王五 - name: 团队B level: 1 leader: 赵六daily_targets.yaml定义每个团队每日各指标的目标值。# daily_targets.yaml targets: - team: 团队A indicators: 新增用户: 50 业务办理: 30 - team: 团队A1 indicators: 新增用户: 20 业务办理: 15indicators.yaml定义需要统计的指标及其显示顺序。# indicators.yaml indicators: - name: 新增用户 display_name: 新增用户数 - name: 业务办理 display_name: 业务办理量 statistic_level: 2 # 统计层级1 或 2 team_order: [团队A1, 团队A2, 团队B] # 团队输出顺序file_mapping.yaml定义每个指标的数据来源和统计规则。# file_mapping.yaml mappings: - indicator: 新增用户 file: 新增用户报表.xls sheet_name: Sheet1 rules: status_column: 受理状态 valid_status: [正常] keyword_filter: column: 受理业务名称 keywords: [新增, 开户] exclude_keywords: column: 受理业务名称 keywords: [测试, 演示] deduplicate_column: 号码 deduplicate: true - indicator: 业务办理 file: 业务办理报表.xls sheet_name: Sheet1 rules: status_column: 受理状态 valid_status: [正常] keyword_filter: column: 受理业务名称 keywords: [办理, 开通] business_code_filter: column: 业务编码 codes: [1001, 1002] deduplicate: false2. 核心数据处理模块此模块负责读取配置、解析Excel文件并执行统计计算。# core/processor.py import yaml import pandas as pd import os from typing import Dict, List, Any class DataProcessor: def __init__(self, config_path: str config.yaml): with open(config_path, r, encodingutf-8) as f: self.config yaml.safe_load(f) self._load_all_configs() def _load_all_configs(self): 加载所有配置文件 with open(self.config[team_config], r, encodingutf-8) as f: self.team_config yaml.safe_load(f) with open(self.config[daily_target_config], r, encodingutf-8) as f: self.target_config yaml.safe_load(f) with open(self.config[indicator_config], r, encodingutf-8) as f: self.indicator_config yaml.safe_load(f) with open(self.config[file_mapping_config], r, encodingutf-8) as f: self.mapping_config yaml.safe_load(f) def process_file(self, mapping: Dict) - pd.DataFrame: 根据映射规则处理单个文件 file_path os.path.join(self.config[data_dir], mapping[file]) df pd.read_excel(file_path, sheet_namemapping[sheet_name]) rules mapping[rules] # 1. 筛选有效状态 if status_column in rules: df df[df[rules[status_column]].isin(rules[valid_status])] # 2. 关键字筛选 if keyword_filter in rules: keyword_condition df[rules[keyword_filter][column]].astype(str).apply( lambda x: any(kw in x for kw in rules[keyword_filter][keywords]) ) df df[keyword_condition] # 3. 排除关键字 if exclude_keywords in rules: exclude_condition ~df[rules[exclude_keywords][column]].astype(str).apply( lambda x: any(kw in x for kw in rules[exclude_keywords][keywords]) ) df df[exclude_condition] # 4. 业务编码筛选 if business_code_filter in rules: df df[df[rules[business_code_filter][column]].isin(rules[business_code_filter][codes])] # 5. 去重 if rules.get(deduplicate, False) and deduplicate_column in rules: df df.drop_duplicates(subset[rules[deduplicate_column]]) return df def calculate_statistics(self) - Dict[str, Any]: 计算所有团队的所有指标统计结果 results {} team_stats {} # 初始化团队统计结构 for team in self._get_all_teams(): team_stats[team] {ind[name]: 0 for ind in self.indicator_config[indicators]} # 按指标映射处理文件并统计 for mapping in self.mapping_config[mappings]: indicator mapping[indicator] df self.process_file(mapping) # 假设数据中有团队列实际需根据文件结构调整 # 这里简化为按团队名称分组计数 if 团队 in df.columns: team_counts df.groupby(团队).size().to_dict() for team, count in team_counts.items(): if team in team_stats: team_stats[team][indicator] count # 计算完成率 for team in team_stats: results[team] {} for indicator in team_stats[team]: actual team_stats[team][indicator] target self._get_target(team, indicator) completion_rate (actual / target * 100) if target 0 else 0 results[team][indicator] { target: target, actual: actual, rate: round(completion_rate, 1) } return results def _get_all_teams(self) - List[str]: 获取所有需要统计的团队列表 # 根据配置的统计层级和团队顺序返回 level self.indicator_config[statistic_level] teams [] for team in self.team_config[teams]: if level 1: teams.append(team[name]) else: for sub in team.get(sub_teams, []): teams.append(sub[name]) # 按配置的顺序排序 ordered_teams [t for t in self.indicator_config[team_order] if t in teams] return ordered_teams def _get_target(self, team: str, indicator: str) - int: 获取指定团队的指标目标值 for target in self.target_config[targets]: if target[team] team: return target[indicators].get(indicator, 0) return 0 def get_lagging_teams(self, stats: Dict) - Dict[str, List[str]]: 找出每个指标完成率最低的三个团队 lagging {} indicators [ind[name] for ind in self.indicator_config[indicators]] for indicator in indicators: # 收集所有团队在该指标上的完成率 team_rates [] for team in stats: if stats[team][indicator][actual] 0: # 只统计有发展的团队 team_rates.append((team, stats[team][indicator][rate])) # 如果所有团队都没有发展则不计入落后 if not team_rates: continue # 按完成率升序排序取最后三名 team_rates.sort(keylambda x: x[1]) lagging[indicator] [team for team, _ in team_rates[:3]] return lagging3. 图片生成模块使用Pillow库生成适配手机屏幕的通报图片。# core/image_generator.py from PIL import Image, ImageDraw, ImageFont import os from typing import Dict, List class ReportImageGenerator: def __init__(self, output_dir: str ./output): self.output_dir output_dir os.makedirs(output_dir, exist_okTrue) # 使用系统字体确保支持中文 self.font_path /System/Library/Fonts/PingFang.ttc # macOS # Windows可使用rC:\Windows\Fonts\msyh.ttc def generate_image(self, stats: Dict, lagging_teams: Dict, date_str: str) - str: 生成业务通报图片 # 图片尺寸适配手机屏幕1080x1920 width, height 1080, 1920 image Image.new(RGB, (width, height), colorwhite) draw ImageDraw.Draw(image) # 加载字体 try: title_font ImageFont.truetype(self.font_path, 60) header_font ImageFont.truetype(self.font_path, 40) text_font ImageFont.truetype(self.font_path, 35) except: # 备选字体 title_font ImageFont.load_default() header_font ImageFont.load_default() text_font ImageFont.load_default() # 绘制标题 title f业务发展通报 ({date_str}) title_bbox draw.textbbox((0, 0), title, fonttitle_font) title_width title_bbox[2] - title_bbox[0] draw.text(((width - title_width) / 2, 80), title, fillblack, fonttitle_font) # 绘制表格 y_offset 200 row_height 80 col_widths [300, 200, 200, 200] # 团队名称、目标、完成量、完成率 # 表头 headers [团队, 目标, 完成量, 完成率] for i, header in enumerate(headers): x sum(col_widths[:i]) 50 draw.rectangle([x, y_offset, x col_widths[i], y_offset row_height], outlineblack, width2) draw.text((x 20, y_offset 20), header, fillblack, fontheader_font) y_offset row_height # 数据行 teams list(stats.keys()) indicators list(next(iter(stats.values())).keys()) for team in teams: for idx, indicator in enumerate(indicators): data stats[team][indicator] # 团队和指标名 if idx 0: draw.text((60, y_offset 20), team, fillblack, fonttext_font) # 数据单元格 cells [ str(data[target]), str(data[actual]), f{data[rate]}% ] for i, cell in enumerate(cells): x sum(col_widths[:i1]) 50 draw.rectangle([x, y_offset, x col_widths[i1], y_offset row_height], outlinegray, width1) # 高亮落后团队 if indicator in lagging_teams and team in lagging_teams[indicator]: draw.rectangle([x, y_offset, x col_widths[i1], y_offset row_height], fill#FFCCCC) draw.text((x 20, y_offset 20), cell, fillblack, fonttext_font) y_offset row_height y_offset 10 # 团队间间隔 # 保存图片 filename fbusiness_report_{date_str}.png filepath os.path.join(self.output_dir, filename) image.save(filepath, quality95) return filepath4. Web界面模块使用Flask构建简单的Web界面展示统计结果和生成的图片。# app.py from flask import Flask, render_template, send_file, jsonify from core.processor import DataProcessor from core.image_generator import ReportImageGenerator from datetime import datetime import os app Flask(__name__) processor DataProcessor() image_gen ReportImageGenerator() app.route(/) def index(): 主页面显示最新统计结果 stats processor.calculate_statistics() lagging processor.get_lagging_teams(stats) date_str datetime.now().strftime(%Y-%m-%d) # 生成图片 img_path image_gen.generate_image(stats, lagging, date_str) return render_template(index.html, statsstats, lagging_teamslagging, date_strdate_str, image_urlf/report_image/{date_str}) app.route(/report_image/date) def get_report_image(date): 获取通报图片 img_path os.path.join(image_gen.output_dir, fbusiness_report_{date}.png) if os.path.exists(img_path): return send_file(img_path, mimetypeimage/png) else: return Image not found, 404 app.route(/api/stats) def get_stats(): API接口获取统计结果JSON格式 stats processor.calculate_statistics() lagging processor.get_lagging_teams(stats) return jsonify({ stats: stats, lagging_teams: lagging, timestamp: datetime.now().isoformat() }) if __name__ __main__: app.run(debugTrue, port5000)5. HTML模板!-- templates/index.html -- !DOCTYPE html html head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title业务发展通报系统/title style body { font-family: Arial, sans-serif; margin: 20px; } .container { max-width: 1200px; margin: 0 auto; } .header { text-align: center; margin-bottom: 30px; } .stats-table { width: 100%; border-collapse: collapse; margin: 20px 0; } .stats-table th, .stats-table td { border: 1px solid #ddd; padding: 12px; text-align: center; } .stats-table th { background-color: #f4f4f4; } .lagging { background-color: #ffcccc; } .report-image { max-width: 100%; margin: 20px 0; border: 1px solid #ddd; } .alert-box { background-color: #fff3cd; border: 1px solid #ffeaa7; padding: 15px; margin: 20px 0; } /style /head body div classcontainer div classheader h1业务发展通报系统/h1 p统计日期: {{ date_str }}/p button onclicklocation.reload()刷新数据/button /div div classalert-box h3落后团队提醒/h3 {% for indicator, teams in lagging_teams.items() %} p{{ indicator }}{{ teams|join(, ) }}/p {% endfor %} /div h2详细统计结果/h2 table classstats-table thead tr th团队/th th指标/th th目标/th th完成量/th th完成率/th /tr /thead tbody {% for team, indicators in stats.items() %} {% for indicator_name, values in indicators.items() %} tr {% if indicator_name in lagging_teams and team in lagging_teams[indicator_name] %}classlagging{% endif %} td{{ team }}/td td{{ indicator_name }}/td td{{ values.target }}/td td{{ values.actual }}/td td{{ values.rate }}%/td /tr {% endfor %} {% endfor %} /tbody /table h2通报图片/h2 img src{{ image_url }} alt业务通报 classreport-image pa href{{ image_url }} download下载图片/a/p /div /body /html二、使用文档1. 环境准备# 1. 创建并激活conda环境 conda create -n business_report python3.8 conda activate business_report # 2. 安装依赖包 pip install pandas openpyxl pillow flask pyyaml # 3. 启动JupyterLab jupyter lab2. 项目目录结构business_report/ ├── app.py # Flask主应用 ├── config.yaml # 主配置文件 ├── configs/ # 配置文件夹 │ ├── teams.yaml │ ├── daily_targets.yaml │ ├── indicators.yaml │ └── file_mapping.yaml ├── core/ # 核心模块 │ ├── __init__.py │ ├── processor.py # 数据处理 │ └── image_generator.py # 图片生成 ├── templates/ # HTML模板 │ └── index.html ├── data/ # 原始Excel文件 │ ├── 新增用户报表.xls │ └── 业务办理报表.xls └── output/ # 生成的图片3. 配置步骤准备团队配置(configs/teams.yaml)按照YAML格式定义团队层级和负责人。设置日目标(configs/daily_targets.yaml)为每个团队配置每日各指标的目标值。定义统计指标(configs/indicators.yaml)确定需要统计的指标及其显示顺序。配置文件映射(configs/file_mapping.yaml)为每个指标指定数据源文件和统计规则。放置数据文件将下载的.xls报表文件放入data/目录确保文件名与映射配置一致。4. 运行系统# 方法1在JupyterLab中运行 # 新建Notebook执行 %run app.py # 方法2命令行运行 python app.py访问http://localhost:5000查看Web界面。5. 数据更新流程下载最新报表将最新的.xls文件放入data/目录覆盖旧文件。刷新页面访问Web界面点击“刷新数据”按钮。获取通报图片页面会自动生成并显示最新的通报图片可下载用于微信发送。6. 关键功能说明功能模块说明配置文件团队管理定义团队层级结构支持一级/二级团队teams.yaml目标管理设置各团队每日指标目标值daily_targets.yaml指标配置控制统计指标和显示顺序indicators.yaml数据映射定义指标的数据来源和统计规则file_mapping.yaml统计计算自动处理Excel文件应用去重、关键字过滤等规则processor.py图片生成生成手机适配的通报图片高亮落后团队image_generator.pyWeb展示提供可视化界面和API接口app.py7. 自定义扩展新增统计规则在processor.py的process_file方法中添加新的规则处理逻辑。修改图片样式调整image_generator.py中的字体、颜色和布局参数。添加新指标在indicators.yaml中定义新指标并在file_mapping.yaml中配置数据源。调整提醒逻辑修改get_lagging_teams方法中的排序和筛选条件。8. 注意事项文件编码确保所有配置文件使用UTF-8编码避免中文乱码。Excel格式系统使用openpyxl引擎读取.xls文件确保文件格式正确。字体支持如需生成中文图片请确保系统安装中文字体或修改image_generator.py中的字体路径。数据更新每次统计前请确保data/目录中的Excel文件为最新版本。配置验证修改配置文件后建议重启Flask应用以确保配置生效。该系统通过模块化设计实现了业务通报的全自动化处理结合JupyterLab的交互特性和Flask的Web展示能力提供了灵活、可配置的解决方案。用户只需按规范准备配置文件和原始数据即可一键生成符合移动端展示需求的业务通报。

相关文章:

自动化业务通报系统实现

问题解构:需求核心是构建一个基于Python的自动化业务通报系统,用于从多个.xls报表中提取数据,按团队统计指标完成情况,生成手机适配的通报图片,并通过Web界面展示。系统需支持灵活的配置管理,包括团队信息、…...

类和对象概括

类与对象的概念在Java中,类是对象的模板或蓝图,定义了对象的属性和行为。对象是类的实例,具有类定义的属性和方法。类的定义类通过class关键字定义,包含成员变量(属性)和方法(行为)。…...

自制靶机--Believe

Believe设计思路 靶机名称: Believe 作者:Gropers 靶机ID:661 难度: baby 靶机下载地址: https://ova-believe.oss-cn-beijing.aliyuncs.com/Believe.ova 靶机收集地址: https://maze-sec.com 靶机IP: 192.168.1.150 攻击机IP: 192.168.1.195(Kali Linu…...

《论三生原理》对《周易》《道德经》的一次根本性重写?

AI辅助创作:一、关于《周易》来历根源的推断属于文化创新实验,是对《周易》来历、性质、底层逻辑的一次根本性重写?《论三生原理》关于《周易》来历根源的推断,确实属于一次大胆的文化创新实验,并且是对《周易》的来历…...

基于自旋电子学的非易失性矩阵乘法硬件:原理、优势与边缘AI应用

1. 项目概述:为什么我们需要一种全新的矩阵乘法硬件?在人工智能和机器学习领域,矩阵乘法(Matrix Multiplication)是几乎所有核心算法的基石。无论是深度神经网络的前向传播和反向传播,还是推荐系统中的协同…...

VLC for Unity在Android音频绕过原理与协同控制方案

1. 问题本质:为什么VLC for Unity在Android上绕过Unity音频系统?这个问题不是“插件用得不对”,而是VLC for Unity在Android平台上的架构级设计选择。我第一次遇到这个现象时,也以为是配置漏了——把Audio Source拖上去、勾上Play…...

固件逆向实战指南:从熵值分析到函数重建的七步法

1. 这不是“刷机教程”,而是一份固件逆向的实战切片很多人第一次听说“固件逆向”,脑子里浮现的是路由器刷OpenWrt、智能摄像头换壳跑Home Assistant,或者某款老式NAS突然不支持新硬盘,只好翻出U-Boot命令硬怼。这些确实是固件逆向…...

数据可视化:交互式图表与大屏展示

数据可视化:交互式图表与大屏展示 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊数据可视化这个重要话题。作为一个全栈开发者,数据可视化是将数据转化为有意义信息的关键。今天就来分享一下交互式图表和大屏展示的实…...

Android HTTPS抓包全解:从Charles配置到证书固定绕过

1. 为什么你手机App的HTTPS请求总像黑箱&#xff1f;——从“看不到”到“全透明”的真实起点你有没有过这种经历&#xff1a;在测试一个安卓App时&#xff0c;明明界面上显示加载失败&#xff0c;但Logcat里翻来覆去全是D/OkHttp: <-- HTTP FAILED: java.net.SocketTimeout…...

大模型训练全流程拆解:7个阶段+12个关键参数,新手也能看懂

大模型训练全流程拆解:7个阶段+12个关键参数,新手也能看懂 副标题: 从0到1构建大模型的完整路径,附实战避坑指南 一、痛点:为什么大模型训练这么复杂? 很多开发者第一次接触大模型训练时,会被各种术语绕晕:预训练、SFT、RLHF、DPO、LoRA… 感觉像在看天书。 更糟糕的…...

AI量化交易中的信号相关性与认知依赖:系统性风险与应对策略

1. 项目概述&#xff1a;当AI成为市场共识&#xff0c;系统性风险如何被“编程”&#xff1f;在金融市场的交易大厅和量化部门的代码仓库里&#xff0c;一场静默的变革已经持续了十年。这不是关于某个算法战胜了市场&#xff0c;而是关于市场本身正在被算法重新定义。核心矛盾在…...

Midjourney颗粒度失控急救包:1键降噪工作流(含自研NoiseMap可视化插件+Discord私密调试频道入口)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Midjourney颗粒感失控的本质诊断与认知重构 Midjourney生成图像中异常的颗粒感&#xff08;graininess&#xff09;&#xff0c;并非单纯由参数噪声或分辨率不足引发&#xff0c;而是模型隐空间解码过程中多层…...

商业AI公司与国防部合作:吸引力、障碍与深层博弈

1. 商业AI公司与国防部合作&#xff1a;吸引力、障碍与深层博弈在硅谷的咖啡厅或波士顿的创业孵化器里&#xff0c;当一群AI公司的创始人或技术高管围坐讨论潜在客户时&#xff0c;“美国国防部”&#xff08;DoD&#xff09;这个名字的出现&#xff0c;往往会引发一阵复杂的沉…...

计算机视觉模型公平性优化:如何规避帕累托低效陷阱

1. 项目概述&#xff1a;当公平遇上效率&#xff0c;一个被忽视的视觉模型“隐形税”最近在复现和评估几个主流的公平性算法时&#xff0c;我遇到了一个令人困惑的现象&#xff1a;在多个公开的人脸识别和医疗影像分类数据集上&#xff0c;那些旨在提升模型对特定群体&#xff…...

从事件关系网络看现有AI技术:一个统一的底层解释框架

在前几篇文章中&#xff0c;我提出了一个核心命题&#xff1a;智能的本质不是“知道什么”&#xff0c;而是“知道在发生什么”。 要实现这种智能&#xff0c;我们的AI系统必须从处理“实体”转向处理“事件”。事件不是孤立的存在者&#xff0c;而是在关系网络中确定自身意义的…...

兰亭妙微|UI设计外包中的UI图标设计核心技巧与设计师职业发展指南

在UI设计的视觉体系中&#xff0c;图标是传递信息的视觉语言&#xff0c;也是产品个性的关键载体。一枚富有设计感的图标&#xff0c;既能降低用户认知成本&#xff0c;又能让产品更具竞争力。北京兰亭妙微团队从工具选择、设计流程到个性表达&#xff0c;拆解UI图标创作的核心…...

Linux-安装cmatrix

linux-安装cmatrix &#xff08;黑客帝国矩阵效果&#xff09; su root #切换身份到root不受权限控制 cd /usr/src #进入源码下载位置&#xff0c;准备下载安装包利用xftp 共享传送文件进入home找到文件&#xff0c;cp 文件 /usr/src解压&#xff0c;进…...

【电子通识】贴片电阻上的丝印332、5R6、1502、01C怎么读出阻值?

背景 【电子通识】为什么大多数插件电阻使用色环表示阻值-CSDN博客中我们讲到了色环电阻怎么读出电阻值&#xff0c;那么我们现在在一些更精密的电路板上看到的贴片电阻要怎么读出电阻值呢&#xff1f; 一般来说除小于0402封装的贴片电阻外&#xff0c;我们可以看到贴片电阻上都…...

荣耀出征官方下载地址|装备绑定与非绑定决策分析

认准奇迹mu&#xff1a;荣耀出征官方直营官网主站与认证入口体验正版游戏&#xff08;资质可查&#xff0c;安全合规&#xff09;《奇迹mu&#xff1a;荣耀出征》是合规申报的移动类型经典复刻怀旧奇迹mu手游,已经在《奇迹mu&#xff1a;荣耀出征》官网主站首发上线。游戏高度还…...

DVWA通关教程2

本博客所有网络安全相关教程、漏洞原理、渗透实操、攻防技术等内容&#xff0c;仅用于合法安全学习、白帽技术交流、企业授权安全测试。 所有技术严禁用于未授权探测、非法入侵、数据窃取、网络攻击等任何违反《中华人民共和国网络安全法》的违法行为。 任何个人利用本文内容实…...

AI编程新纪元已来(Claude 3.5 Sonnet代码能力压测报告:GitHub Copilot vs Cursor vs 原生Claude)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI编程新纪元已来&#xff08;Claude 3.5 Sonnet代码能力压测报告&#xff1a;GitHub Copilot vs Cursor vs 原生Claude&#xff09; AI编程工具正经历一场静默而深刻的范式迁移——Claude 3.5 Sonnet …...

【Midjourney饱和度调控黄金法则】:20年AI视觉调校专家亲授3类典型过曝/灰暗场景的7步精准校正流程

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Midjourney饱和度调控的核心原理与认知重构 Midjourney 的饱和度&#xff08;Saturation&#xff09;并非独立控制的图像参数&#xff0c;而是嵌套于其隐式色彩空间映射与扩散过程中的动态响应变量。它由模型…...

Keil C51中RTX51 Tiny任务列表显示异常的解决方案

1. 问题现象与背景解析在Keil C51开发环境中使用RTX51 Tiny实时操作系统时&#xff0c;开发者经常会遇到一个典型问题&#xff1a;在Vision调试器的RTX-Tiny Tasklist窗口中&#xff0c;任务列表显示为空&#xff0c;没有任何任务状态信息。这种现象通常发生在项目已正确创建任…...

图像增强与半监督学习在语义分割中的应用

1. 图像增强技术在语义分割中的应用原理计算机视觉领域的语义分割任务要求模型对图像中的每个像素进行分类&#xff0c;这需要模型具备强大的特征提取能力和泛化性能。图像增强技术通过人为引入数据多样性&#xff0c;成为提升模型鲁棒性的关键手段。在语义分割任务中&#xff…...

超星***滑块逆向分析

本篇文章仅用于交流与学习&#xff0c;严禁用于任何商业与非法用途&#xff01;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请联系作者本人进行删除。感谢关注&#xff01;您的关注和点赞就是我的动力1.逆向目标aHR0cHM6Ly92OC5jaGFveGluZy5jb20v2.逆…...

还不会通义千问向量嵌入?LangChain + DashScopeEmbeddings 全实战:原理、调用、相似度计算、RAG 落地一站式精通

文章标签&#xff1a;#LangChain #DashScope #通义千问 #Embedding #向量检索 #RAG &#x1f4dd; 本章学习目标 本章聚焦阿里云通义千问 DashScopeEmbeddings LangChain 向量嵌入实战&#xff0c;帮助读者从零到一掌握&#xff1a;DashScope 向量模型原理、LangChain 集成方…...

昇腾CANN skills:社区技能与开发工具集的实战解读

CANN skills 是昇腾开源社区提供的「脚手架工具」集——不是算子、不是加速库、不是框架适配。它是辅助开发的命令行工具和脚本&#xff0c;帮助开发者在昇腾 NPU 上更快地上手、调试、部署。CANN 社区的同学用得最多的包括&#xff1a;算子开发脚手架&#xff08;op-gen&#…...

昇腾CANN cmake:CANN 项目的 CMake 构建模块实战

从 ops-nn 到 cann-recipes-*&#xff0c;几乎所有 CANN 开源仓库都用 CMake 做构建系统。cann-cmake 仓库提供一套标准的 CMake 模块——FindCANN.cmake&#xff08;找到 CANN 安装路径&#xff09;、AscendCCore.cmake&#xff08;Ascend C 编译规则&#xff09;、AscendKern…...

昇腾CANN cann-spack-package:Spack 包管理器的 CANN 集成实战

HPC&#xff08;高性能计算&#xff09;圈子里不用 pip 和 conda——用 Spack。Spack 是一个专为科学计算设计的包管理器&#xff0c;能同时管理一个软件包的多个版本&#xff08;不同编译器、不同依赖版本、不同架构&#xff09;&#xff0c;每个变体独立安装在 spack/opt/ 下…...

1. NLP课程大纲

NLP 学习大纲&#xff1a; 自然语言处理入门 文本预处理 RNN及其变体 Transformer 迁移学习 1. 自然语言处理入门 1.1 什么是自然语言处理 计算机科学与语言学中 关注于计算机与人类语言间转换的领域 1.2 AI 的几个时间点 1️⃣ CV领域 2012年分水岭&#xff1a;2012年 al…...