Skip to content

Newoahil/ishowJob

Repository files navigation

ishowJob

基于llm与OCR技术开发的简历生成器,可通过多个招聘岗位页面进行ocr识别,以聚合内容进行信息重定向, 截图招聘岗位描述,自动识别、解析、匹配你的画像,一键生成专业 PDF 简历。

platform python gui

English version: README.md

工作流程

截图(岗位描述) → OCR识别 → LLM解析JD → 匹配用户画像 → 审阅修改 → PDF输出

批量模式:多份 JD 截图自动聚合共性要求,生成统一简历模板。

截图文件夹 → 岗位类型确认 → 批量OCR → LLM聚合 → 画像匹配 → 审阅 → PDF

功能概览

  • 双端支持 — CLI 命令行 + PySide6 图形界面,各取所需
  • 单张/批量混用 — 支持单张截图、整文件夹批量,一键切换
  • 多 LLM 后端 — DeepSeek / OpenAI / Qwen / Kimi / Claude / 自定义 OpenAI 兼容端点
  • 用户画像持久化 — 填写一次,反复复用;支持跨岗位技能迁移 (other_experiences)
  • 聚合模板缓存 — 批量模式下,仅增量解析新截图,复用已有聚合结果
  • 生成前审阅 — LLM 输出可预览、修改后再导出 PDF
  • 中文专业排版 — Jinja2 模板 + WeasyPrint 渲染,字体、行距、对齐一应俱全

快速开始

1. 环境准备

python -m venv .venv
.venv\Scripts\activate     # Windows
# source .venv/bin/activate   # macOS / Linux
pip install -r requirements.txt

2. Windows 额外步骤:GTK3 运行时

WeasyPrint 在 Windows 上依赖 GTK3 原生库:

winget install tschoonj.GTKForWindows

程序运行时自动检测 C:\Program Files\GTK3-Runtime Win64\bin,无需手动配置 PATH。

Linux / macOS 通过系统包管理器安装 pango 即可。

3. 配置 API Key

复制示例配置并填入 API Key:

copy config.example.yaml config.yaml      # Windows
# cp config.example.yaml config.yaml       # macOS / Linux

编辑 config.yaml

llm:
  provider: deepseek          # deepseek | openai | qwen | kimi | anthropic | custom
  api_key: "sk-xxxxxxxx"      # 替换为真实 Key
  api_base: "https://api.deepseek.com/v1"
  model: "deepseek-chat"
  temperature: 0.7
  max_tokens: 4096

ocr:
  lang: "ch_sim"              # 中文识别
  gpu: false                  # 设为 true 启用 GPU(需 CUDA)

output:
  dir: "output"

profile:
  dir: "profiles"

job_types:
  dir: "job_types"

更换模型只需修改 provider,程序自动匹配预设的 api_base / model(见 presets 节)。选用 custom 时填入兼容 OpenAI 协议的私有端点。

CLI 命令行使用

单张截图

python cli.py

按提示输入截图路径,程序依次完成 OCR → 解析 JD → 画像匹配 → 审阅 → 生成 PDF。

批量截图

将多张岗位截图放入同一文件夹,运行:

python cli.py

输入文件夹路径,程序自动:

  1. 识别所有图片
  2. 批量 OCR + LLM 解析 JD
  3. 聚合共性要求生成模板
  4. 检查 / 增量更新缓存
  5. 匹配用户画像,输出 PDF

二次处理已有岗位类型时,仅解析新增截图并重新聚合,大幅节省 API 调用。

GUI 图形界面使用

python main.py

启动后为 4 标签页 窗口:

① 配置 — 连接测试与 API 设置

  • 填写 API Key,点击 测试连接 验证可用性
  • 切换 LLM 提供商(DeepSeek / OpenAI / Qwen / Kimi / Claude)
  • 连接失败时显示详细错误追踪(DNS、超时、异常堆栈)

② 画像 — 用户信息管理

  • 填写基本信息:姓名、目标岗位、联系方式
  • 逐条添加专业技能(带标签分类)与经历描述
  • 支持 other_experiences 跨岗位技能迁移
  • 画像自动持久化到 profiles/,下次启动自动加载

③ 岗位处理 — 核心工作区

  • 拖拽截图到窗口或点击选择文件
  • 自动 OCR 识别 → 显示识别原文 → LLM 解析出结构化 JD
  • 单张截图:自动设为模板,直接 生成简历
  • 多张截图:批量解析后 聚合分析,提取共性要求
  • 支持随时删除/重新排序截图

④ 预览输出 — 审阅与导出

  • 预览 LLM 生成的完整简历内容(Markdown 渲染)
  • 在线编辑、微调后确认
  • 一键导出 中文专业 PDF(Jinja2 + WeasyPrint)

操作流程示意

┌──────────┐    ┌──────────┐    ┌──────────────┐    ┌──────────┐
│ ① 配置    │ →  │ ② 画像    │ →  │ ③ 岗位处理     │ →  │ ④ 预览输出 │
│ API测试   │    │ 填写资料  │    │ 截图→OCR→解析  │    │ 审阅→PDF  │
└──────────┘    └──────────┘    └──────────────┘    └──────────┘

项目结构

ishowJob/
├── main.py                      # GUI 启动入口
├── cli.py                       # CLI 启动入口
├── config.example.yaml          # 配置模板(复制为 config.yaml 使用)
├── requirements.txt             # Python 依赖
├── core/
│   ├── ocr.py                   # EasyOCR 封装
│   ├── profile.py               # 用户画像管理与序列化
│   ├── jd_parser.py             # LLM 岗位描述解析
│   ├── matcher.py               # LLM 画像匹配与简历生成
│   ├── batch_analyzer.py        # 批量 JD 聚合与缓存
│   └── resume_generator.py      # Jinja2 渲染 + WeasyPrint PDF
├── providers/
│   ├── base.py                  # LLM Provider 抽象基类
│   ├── openai_compat.py         # OpenAI 兼容协议适配
│   ├── anthropic.py             # Anthropic 专用适配
│   └── __init__.py              # Provider 工厂(自动路由)
├── gui/
│   ├── app.py                   # GUI 协调器(桥接核心逻辑)
│   ├── main_window.py           # 主窗口框架(4 标签页)
│   ├── workers.py               # 后台线程管理(OCR/LLM/PDF)
│   ├── i18n.py                  # 国际化字典
│   ├── tabs/
│   │   ├── config_tab.py        # ① 配置标签页
│   │   ├── profile_tab.py       # ② 画像标签页
│   │   ├── processing_tab.py    # ③ 岗位处理标签页
│   │   └── preview_tab.py       # ④ 预览输出标签页
│   └── widgets/
│       ├── drop_zone.py         # 拖拽截图组件
│       ├── jd_table.py          # JD 解析结果表格
│       ├── profile_editor.py    # 画像编辑表单
│       └── tag_editor.py        # 关键词标签编辑器
├── templates/
│   ├── resume.html              # 简历 HTML 模板
│   └── resume.css               # 简历排版样式
└── screenshots/                 # 截图素材(已 gitignore)

常见问题

Q: 首次运行卡住了?
EasyOCR 首次使用会自动下载模型文件(约 500MB),请耐心等待。后续启动直接加载本地缓存。

Q: 中文路径截图无法识别?
已内置 OpenCV 路径编码绕过,支持中文文件名和路径。

Q: PDF 生成报 GTK 相关错误?
Windows 用户请确保安装了 GTK3 Runtime(见快速开始第 2 步)。Linux/macOS 使用系统包管理器安装 pango

Q: 推荐用哪个 LLM?
DeepSeek API 性价比最高,适合批量处理。对输出质量要求更高的场景可切换至 Claude 或 GPT-4o。

Q: 配置文件找不到?
config.yaml 不会在仓库中(含 API Key),需从 config.example.yaml 复制并填入自己的 Key。

About

基于llm与OCR技术开发的简历生成器,可通过多个招聘岗位页面进行ocr识别,以聚合内容进行信息重定向

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors