--- name: recruitment-processor version: 1.0.0 description: 自动处理多份招聘markdown文档,识别文档中的图片内容(包括在线图片链接),提取关键信息(职位、薪资、截止时间等),根据用户条件筛选,生成结构化总结报告 dependency: python: - requests>=2.28.0 --- # 招聘信息处理Skill ## 任务目标 - 本Skill用于:批量处理包含招聘信息的markdown文档,自动识别图片内容(包括本地图片和在线图片链接),提取关键信息,根据条件筛选并生成结构化报告 - 能力包含:文件路径识别与扫描、自适应分批处理、图片链接识别、图片下载、图片识别与OCR、文本理解、信息提取、条件匹配、进度跟踪、完整性验证、报告生成 - 触发条件:用户提供招聘markdown文档(单个文件或文件夹)及筛选条件 ## 前置准备 - 依赖说明:图片下载功能依赖requests库,版本>=2.28.0 ## 操作步骤 ### 标准流程 #### 阶段一:文件扫描与规划 1. **输入路径识别** - 判断用户提供的路径是: - 单个文件:直接添加到处理列表 - 文件夹:扫描文件夹内所有markdown文件 - 记录文件类型和路径 2. **文件扫描(针对文件夹)** - 如果是文件夹,扫描该目录下的所有markdown文件 - 支持的文件扩展名:`.md`, `.markdown` - 递归扫描子目录(可选,根据用户需求决定) - 记录所有文件的完整路径 - **必须扫描所有文件,不得遗漏** 3. **数量评估与分批决策** - 统计需要处理的文档总数 - **自适应分批规则**: - 文档数量 ≤ 10:一次性处理所有文档 - 文档数量 > 10:分批处理,每批处理10个文档 - 计算需要分多少批 - 记录批次规划:总批次、每批文件列表 4. **进度跟踪初始化** - 记录以下信息: - 总文件数 - 已处理数(初始为0) - 待处理数(初始为总文件数) - 当前批次(初始为0) - 成功处理数(初始为0) - 失败处理数(初始为0) #### 阶段二:分批处理文档 5. **批次循环处理** 对于每个批次(按顺序执行): **5.1 批次初始化** - 当前批次编号 += 1 - 确定本批次处理的文件列表(按编号顺序取10个或剩余文件) - 报告本批次进度:"正在处理第X批,共Y批,文件数Z个" **5.2 逐个文档处理** 对于本批次中的每个招聘文档,**必须完整处理,不得跳过**: **5.2.1 图片链接识别与提取** - 扫描文档中所有图片引用,识别两种格式: - 本地图片:` ![alt](local_path.png) ` - 在线图片:` ![alt](https://example.com/image.jpg) ` - 提取所有图片的URL或路径 - 记录图片在文档中的位置和上下文 **5.2.2 在线图片下载** 对于每个在线图片链接: - 调用 `python /workspace/projects/recruitment-processor/scripts/download_image.py --image-url --output-dir ./downloaded_images` - 捕获下载结果,获取本地保存路径 - 如下载失败,记录错误但继续处理其他图片 - 记录图片来源(在线下载/本地文件) **5.2.3 图片识别与内容提取** - 对于所有可访问的图片(下载成功的在线图片和本地图片) - 使用图像识别能力提取每张图片中的文字信息 - **必须逐一识别所有图片,不得遗漏任何一张** - 记录图片内容与上下文的对应关系 - 标注每张图片的信息来源 **5.2.4 文本理解与整合** - 阅读文档文本内容 - 将图片识别的文字信息与文本内容进行整合理解 - **确保文本和图片信息都被充分利用** - 形成对该招聘文档的完整认知 **5.2.5 关键信息提取** 提取以下信息(如文档中未明确提及某项信息,标注"未提及"): - 职位名称 - 公司名称 - 薪资待遇(明确范围或具体数值) - 截止时间 - 发布时间 - 企业性质(国企/民企/外企/事业单位等) - 工作地点 - 学历要求 - 工作经验要求 - 岗位职责 - 任职要求 - 图片数量及来源统计 **5.2.6 错误处理** - 如果某个文件处理失败: - 记录失败原因 - 失败处理数 += 1 - **不影响其他文件的处理,继续处理批次中的剩余文件** - 如果文件处理成功: - 成功处理数 += 1 - 将提取的信息暂存 **5.3 批次进度更新** - 已处理数 += 本批次文件数 - 待处理数 = 总文件数 - 已处理数 - 报告批次进度:"第X批完成,已处理A个文件,待处理B个文件" #### 阶段三:条件筛选与汇总 6. **条件筛选** - 读取用户提供的筛选条件(参考筛选条件模板格式) - 对所有成功提取的招聘信息进行条件匹配 - 严格判断是否符合所有筛选条件 - 保留所有符合条件的信息,剔除不符合的 - **每个文档都必须经过筛选判断,不得跳过** 7. **完整性验证** - 验证处理结果: - 已处理数 + 待处理数 = 总文件数 - 每个文件都有处理结果(成功或失败) - 如果发现遗漏: - 立即补充处理遗漏的文件 - 更新进度跟踪信息 - **必须确保所有文件都经过审查,不得有任何遗漏** 8. **生成总结文档** 对筛选后的所有招聘信息生成结构化总结报告,包含: **8.1 报告概览** - 处理的文档总数 - 批次处理情况:总批次数、每批文件数 - 成功处理的文档数量 - 失败的文档数量及失败原因列表 - 提取的图片总数(在线图片/本地图片) - 筛选符合条件的数量 - 处理时间 **8.2 招聘信息列表** 对每个符合条件的招聘信息,按以下格式呈现: ``` ## [职位名称] - [公司名称] **基本信息** - 薪资待遇:[具体数值或范围] - 企业性质:[国企/民企/外企等] - 工作地点:[城市/地区] **时间信息** - 截止时间:[具体日期] - 发布时间:[具体日期] **要求信息** - 学历要求:[学历层次] - 工作经验:[年限要求] **岗位详情** - 岗位职责:[摘要] - 任职要求:[摘要] **图片信息** - 图片总数:[数量]张(在线图片X张,本地图片Y张) - 图片来源标注:[哪些关键信息来源于图片] --- ``` **8.3 失败文件列表** - 列出所有处理失败的文件 - 说明每个文件的失败原因 - 提供可能的解决方案 **8.4 处理进度报告** - 批次处理时间线 - 每批处理的文件列表 - 进度跟踪信息 **8.5 注意事项** - 标注信息来源于图片或文本 - 标注缺失的关键信息 - 说明图片下载和识别的情况 9. **输出结果** - 将总结文档输出为markdown格式 - 文件名格式:招聘信息总结_YYYYMMDD_HHMMSS.md ## 资源索引 - 必要脚本:见 [scripts/download_image.py](scripts/download_image.py)(用途:从URL下载在线图片,参数:--image-url --output-dir <目录>) - 筛选条件模板:见 [references/筛选条件模板.md](references/筛选条件模板.md)(用途:定义筛选条件的标准格式) - 信息提取指南:见 [references/信息提取指南.md](references/信息提取指南.md)(用途:指导如何准确提取关键信息) ## 注意事项 ### 完整性要求(最高优先级) - **必须完整读取所有提供的文档,严禁跳过任何文档** - **必须逐一识别文档中的所有图片,不得遗漏任何一张** - **必须处理所有图片链接,包括本地图片和在线图片** - **必须确保所有文件都经过审查,不得有任何遗漏** - 处理完成后必须进行完整性验证 ### 自适应分批处理 - 根据文档数量自动选择处理策略: - 少量文档(≤10):一次性处理 - 大量文档(>10):分批处理,每批10个 - 分批处理时严格按顺序执行,不跳过任何批次 - 每批处理完成后报告进度 - 如果某批处理失败,不影响后续批次的处理 - 所有批次完成后统一进行筛选和汇总 ### 进度跟踪 - 实时跟踪处理进度 - 记录每个文件的处理状态 - 每批次完成后更新进度信息 - 便于监控整体处理情况和排查问题 ### 错误处理 - 单个文件处理失败不影响其他文件 - 记录所有失败的文件和失败原因 - 在总结文档中单独列出失败文件 - 提供错误原因和可能的解决方案 ### 图片链接处理 - 识别markdown中的图片语法: ![alt](url) - 区分本地图片路径和在线URL - 在线图片必须先下载到本地再进行识别 - 下载失败的图片要记录错误但不影响整体处理 ### 图片识别准确性 - 仔细核对图片提取的文字与上下文的一致性,必要时多次识别确保准确性 ### 条件筛选严格性 - 用户提出的每个条件都必须严格满足,部分不符合即视为不符合 ### 信息缺失处理 - 对于文档中未明确提及的信息,必须标注"未提及",不要主观推断 ### 时间格式统一 - 所有时间信息统一为YYYY-MM-DD格式 ### 薪资格式规范 - 薪资信息应包含数值范围和单位(如:15-25K/月,年薪30-40万) ## 使用示例 ### 示例1:处理单个文件 - **功能说明**:用户提供单个markdown文件 - **执行方式**:一次性处理 - **关键要点**: - 直接读取文件内容 - 完整处理所有图片 - 提取关键信息 - 进行条件筛选 - **筛选条件**: ``` 薪资范围:15-25K/月 企业性质:国企 ``` ### 示例2:处理少量文件(≤10个) - **功能说明**:用户提供包含5个markdown文件的文件夹 - **执行方式**:一次性处理 - **关键要点**: - 扫描文件夹内所有markdown文件 - 文档数量≤10,一次性处理 - 逐个处理每个文件 - 统一进行筛选和汇总 - **筛选条件**: ``` 工作地点:北京 学历要求:本科及以上 ``` ### 示例3:处理大量文件(>10个)- 分批处理 - **功能说明**:用户提供包含25个markdown文件的文件夹 - **执行方式**:分批处理(3批:10+10+5) - **关键要点**: - 扫描文件夹,识别25个文件 - 文档数量>10,自动分批 - 第1批:处理文件1-10 - 第2批:处理文件11-20 - 第3批:处理文件21-25 - 每批处理完成后报告进度 - 所有批次完成后统一筛选 - **确保所有文件都经过审查** - **筛选条件**: ``` 薪资范围:15-25K/月 企业性质:国企 ``` ### 示例4:处理包含在线图片的文档 - **功能说明**:文档中包含在线图片链接,需要先下载再识别 - **执行方式**:智能体调用脚本下载图片 + 智能体识别 - **关键要点**: - 识别markdown中的图片URL - 调用download_image.py下载图片 - 识别下载后的图片内容 - 记录图片来源为"在线下载" - **筛选条件**: ``` 薪资范围:15-25K/月 企业性质:国企 ``` ### 示例5:多条件组合筛选 - **功能说明**:筛选北京地区的、本科学历、1-3年经验的技术岗位 - **执行方式**:智能体处理 - **关键要点**: - 地点信息可能在正文或图片中 - 工作经验要求可能模糊表述(如"应届生可"、"有相关经验者优先"),需要准确判断 - 学历要求可能有多个层次,选取最低要求作为筛选依据 - 逐一识别所有图片,确保不遗漏关键信息 - 严格按分批逻辑处理所有文件 - **筛选条件**: ``` 工作地点:北京 学历要求:本科及以上 工作经验:1-3年 职位类型:技术岗位 ``` ### 示例6:处理混合图片来源的文档 - **功能说明**:文档中同时包含本地图片和在线图片链接 - **执行方式**:智能体调用脚本下载在线图片 + 智能体识别所有图片 - **关键要点**: - 区分本地图片和在线图片 - 下载所有在线图片 - 逐一识别所有图片(本地+下载) - 在总结中标注图片来源 - **确保所有图片都被识别** - **筛选条件**: ``` 无特殊条件,仅提取信息 ``` ## 分批处理流程示例 ### 场景:处理30个文件的文件夹 **阶段一:文件扫描与规划** - 扫描文件夹,发现30个markdown文件 - 文档数量 > 10,决定分批处理 - 计算批次:30个文件,每批10个,共3批 - 初始化进度:总文件数=30,已处理=0,待处理=30 **阶段二:分批处理** **第1批处理** - 当前批次=1,处理文件1-10 - 扫描文件1-10,识别图片,提取信息 - 处理结果:成功10个,失败0个 - 更新进度:已处理=10,待处理=20 - 报告:"第1批完成,已处理10个文件,待处理20个文件" **第2批处理** - 当前批次=2,处理文件11-20 - 扫描文件11-20,识别图片,提取信息 - 处理结果:成功9个,失败1个(文件15损坏) - 更新进度:已处理=20,待处理=10 - 报告:"第2批完成,已处理20个文件,待处理10个文件" **第3批处理** - 当前批次=3,处理文件21-30 - 扫描文件21-30,识别图片,提取信息 - 处理结果:成功10个,失败0个 - 更新进度:已处理=30,待处理=0 - 报告:"第3批完成,已处理30个文件,待处理0个文件" **阶段三:条件筛选与汇总** - 对29个成功处理的招聘信息进行条件筛选 - 完整性验证:已处理30个=总文件数30个,验证通过 - 生成总结文档,包含: - 处理概览:总30个,成功29个,失败1个 - 符合条件的招聘信息列表 - 失败文件列表(文件15:文件损坏) - 批次处理进度报告 ## 图片下载脚本使用说明 ### 调用方式 ```bash python /workspace/projects/recruitment-processor/scripts/download_image.py --image-url <图片URL> --output-dir <输出目录> ``` ### 参数说明 - `--image-url`:必填,图片的URL地址 - `--output-dir`:可选,图片保存目录,默认为`./downloaded_images` ### 返回结果 - 成功:输出`SUCCESS:<本地路径>` - 失败:输出`ERROR:<错误信息>`到标准错误流 ### 使用场景 当文档中包含在线图片链接(如`https://example.com/image.jpg`)时,先调用此脚本下载图片,然后对下载后的本地文件进行图像识别。 ### 示例 ```bash # 下载图片到默认目录 python /workspace/projects/recruitment-processor/scripts/download_image.py --image-url https://example.com/salary.jpg # 下载图片到指定目录 python /workspace/projects/recruitment-processor/scripts/download_image.py --image-url https://example.com/salary.jpg --output-dir ./temp_images ```