返回 Skill 列表
extension
分类: 数据与分析无需 API Key

简历扫描器

简历解析(PDF/DOCX/TXT),6维度100分制评分,JD技能匹配,雷达图+仪表盘HTML报告

person作者: user_053d27d0hubcommunity

Overview

Resume Scanner parses resumes in PDF, DOCX, and TXT formats using PyMuPDF and python-docx, extracts structured information via an LLM-backed analyzer (Qwen2.5:7b via Ollama by default, or any OpenAI-compatible endpoint), scores every resume on a 100-point multi-dimensional rubric, optionally matches candidate skills against a job description, and generates a fully self-contained interactive HTML report with inline charts and color-coded suggestions.

Capability Boundaries

What this tool does:

  • Parse PDF / DOCX / TXT resumes into plain text.
  • Detect sections (education, experience, skills, projects, certifications) using bilingual regex patterns for both Chinese and English resumes.
  • Extract structured JSON: name, email, phone, location, years of experience, current role, education entries, work experience entries (with STAR-format completeness detection), skills (technical / language / soft / tools), projects, certifications, and a one-line summary.
  • Score across 6 dimensions on a 100-point scale:
    1. Format & Structure (15 pts)
    2. Experience Quality (25 pts)
    3. Skills Match (25 pts)
    4. Education Fit (10 pts)
    5. Projects & Extras (15 pts)
    6. Readability (10 pts)
  • Job description matching: compute skills overlap rate against an optional JD text file.
  • Generate a self-contained HTML report containing:
    • Semi-circular score gauge
    • 6-dimension radar chart (matplotlib)
    • Dimension-by-dimension progress bars with scores
    • Prioritized improvement suggestions (high / medium / low)
    • Extracted structured data display (name, contact, education, experience, skills, projects)
    • JD skills comparison table (matched / unmatched)

What this tool does NOT do:

  • It is NOT a resume builder or formatter -- it only reads and scores.
  • It does NOT parse images or scanned PDFs (OCR is not included).
  • It does NOT handle batch/multi-file processing from the CLI.
  • It does NOT send resumes to external services; the LLM backend is local (Ollama) or user-configured.

Trigger Conditions

Use this skill when the user:

  • Uploads or provides a path to a resume file (.pdf, .docx, .txt) and asks for analysis, scoring, feedback, or improvement suggestions.
  • Wants to compare a resume against a job description.
  • Needs a structured report on resume quality with actionable suggestions.
  • Mentions phrases like "rate my resume", "resume score", "analyze this CV", "简历评分", or "简历分析".

Usage

CLI

# Basic analysis
python scanner.py analyze resume.pdf

# Analysis with job description matching
python scanner.py analyze resume.pdf --jd job_description.txt

# Custom output path
python scanner.py analyze resume.docx --output output/report.html

Dependencies

  • PDF parsing: PyMuPDF (pip install PyMuPDF)
  • DOCX parsing: python-docx (pip install python-docx)
  • LLM backend: Ollama with Qwen2.5:7b (or any OpenAI-compatible endpoint)
  • Charts: matplotlib, numpy
  • CLI: rich

Configuration

The LLM backend is configured in ResumeAnalyzer.__init__(). Default:

model = "qwen2.5:7b"
base_url = "http://localhost:11434/v1"

Change these values in resume_scanner/analyzer.py to use a different model or provider.

Output Example

After running python scanner.py analyze resume.pdf, the tool produces output/report.html. The report includes:

  • Header: "Resume Analysis Report" with generation timestamp.
  • Score Overview: Letter grade (A+ through D), total score out of 100, semi-circular gauge chart.
  • Dimension Radar: Spider chart showing all 6 dimension scores.
  • Dimension Breakdown: Horizontal progress bars for each dimension with score/max values and color coding (green >= 80%, yellow >= 60%, orange >= 40%, red < 40%).
  • Improvement Suggestions: Cards ordered by priority (high/medium/low), each with the dimension name, score, and 3 specific actionable fixes.
  • Extracted Information: Name, email, phone, location, years of experience, current role, skills (as tags), education history, projects, and work experience with achievements.
  • JD Comparison (if JD provided): Matched skills list (green) vs. skills not found in JD (gray), with match rate percentage.

FAQ

Q: What if the LLM backend is unavailable? A: The analyzer has a regex-based fallback that extracts email, phone, name, degree keywords, and common tech skills. Scores will be lower and suggestions less specific, but a report will still be generated.

Q: What languages are supported? A: The parser supports bilingual (Chinese + English) section detection. The LLM analyzer prompt is in Chinese. Most patterns work for both languages.

Q: Can I use a cloud LLM instead of Ollama? A: Yes. Change base_url and api_key in resume_scanner/analyzer.py to point to any OpenAI-compatible endpoint (e.g., OpenAI, Groq, DeepSeek).

Q: How accurate is the scoring? A: The scoring uses rule-based heuristics (bullet count, action verb frequency, quantified achievement ratio, STAR completeness, skill-JD overlap). It provides directional guidance, not a definitive evaluation.