You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

ai-resume-parser

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ai-resume-parser

AI-powered resume parser with parallel processing for multiple file formats (PDF, DOCX, images, etc.)

1.0.6
pipPyPI
Maintainers
1

ResumeParser Pro 🚀

PyPI version Python Support License: MIT

Production-ready AI-powered resume parser with parallel processing capabilities. Extract structured data from resumes in PDF, DOCX, TXT, images (PNG, JPG), HTML, and ODT formats using state-of-the-art language models.

🌟 Features

  • 🤖 AI-Powered: Uses advanced language models (GPT, Gemini, Claude, etc.) for high-accuracy extraction.
  • ⚡ Parallel Processing: Process multiple resumes simultaneously, significantly speeding up bulk operations.
  • 📊 Structured Output: Returns clean, Pydantic-validated JSON data for easy integration.
  • 🎯 High Accuracy: Extracts over 20 distinct fields, including categorized skills and work duration in months.
  • 📁 Multi-Format Support: Natively handles PDF, DOCX, and TXT, with optional support for images (OCR), HTML, and ODT files.
  • 📈 Production Ready: Features robust error handling, logging, and clear, structured results.
  • 🔌 Easy Integration: A simple and intuitive API gets you started in just a few lines of code.

🚀 Quick Start

Installation

For core functionality (PDF, DOCX, TXT), install the base package:

pip install ai-resume-parser

For full functionality, including support for images, HTML, and ODT files (recommended):

pip install ai-resume-parser[full]

See the "Supported File Formats" section for more specific installation options.

Basic Usage

It only takes a few lines to parse your first resume.

from resumeparser_pro import ResumeParserPro

# Initialize the parser with your chosen AI provider and API key
parser = ResumeParserPro(
    provider="google_genai",
    model_name="gemini-2.0-flash", # Or "gpt-4o-mini", "claude-3-5-sonnet", etc.
    api_key="your-llm-provider-api-key"
)
# Parse a single resume file
# Supports .pdf, .docx, .txt, .png, .jpg, and more
result = parser.parse_resume("path/to/your/resume.pdf")

# Check if parsing was successful and access the data
if result.success:
    print(f"✅ Resume parsed successfully!")
    print(f"Name: {result.resume_data.contact_info.full_name}")
    print(f"Total Experience: {result.resume_data.total_experience_months} months")
    print(f"Industry: {result.resume_data.industry}")

    # You can also get a quick summary
    # print(result.get_summary()) # Assuming you add this convenience method

    # Or export the full data to a dictionary
    # resume_dict = result.model_dump()
else:
    print(f"❌ Parsing failed: {result.error_message}")

Batch Processing

Process multiple resumes in parallel for maximum speed.

# Process multiple resumes at once
file_paths = ["resume1.pdf", "resume2.docx", "scanned_resume.png"]
results = parser.parse_batch(file_paths)
# Filter for only the successfully parsed resumes
successful_resumes = parser.get_successful_resumes(results)
print(f"Successfully parsed {len(successful_resumes)} out of {len(file_paths)} resumes.")

📁 Supported File Formats

ResumeParser Pro supports a wide range of file formats. For formats beyond PDF, DOCX, and TXT, you need to install optional dependencies.

FormatExtensionsRequired Installation Command
Core Formats.pdf, .docx, .txtpip install ai-resume-parser
Images (OCR).png, .jpg, .jpegpip install ai-resume-parser[ocr]
HTML.html, .htmpip install ai-resume-parser[html]
OpenDocument.odtpip install ai-resume-parser[odt]

❗️ Important Note for Image Parsing: To parse images (.png, .jpg), you must have the Google Tesseract OCR engine installed on your system. This is a separate step from the pip installation.

📊 Example Parsed Resume Data

The parser returns a structured ParsedResumeResult object. The core data is in result.resume_data, which follows a detailed Pydantic schema.

{
    'file_path': 'resume.pdf',
    'success': True,
    'resume_data': {
        'contact_info': {
            'full_name': 'Jason Miller',
            'email': 'email@email.com',
            'phone': '+1386862',
            'location': 'Los Angeles, CA 90291, United States',
            'linkedin': 'https://www.linkedin.com/in/jason-miller'
        },
        'professional_summary': 'Experienced Amazon Associate with five years’ tenure...',
        'skills': [
            {'category': 'Technical Skills', 'skills': ['Picking', 'Packing', 'Inventory Management']}
        ],
        'work_experience': [{
            'job_title': 'Amazon Warehouse Associate',
            'company': 'Amazon',
            'start_date': '2021-01',
            'end_date': '2022-07',
            'duration_months': 19,
            'description': 'Performed all warehouse laborer duties...',
            'achievements': ['Consistently maintained picking/packing speeds in the 98th percentile.']
        }],
        'education': [{
            'degree': 'Associates Degree in Logistics and Supply Chain Fundamentals',
            'institution': 'Atlanta Technical College'
        }],
        'total_experience_months': 43,
        'industry': 'Logistics & Supply Chain',
        'seniority_level': 'Mid-level'
    },
    'parsing_time_seconds': 3.71,
    'timestamp': '2025-07-25T15:19:50.614831'
}

🎯 Supported AI Providers

The library is built on LangChain, so it supports a vast ecosystem of LLM providers. Here are some of the most common ones:

ProviderExample ModelsSetup
Googlegemini-2.0-flash, gemini-1.5-proprovider="google_genai"
OpenAIgpt-4o, gpt-4o-mini, gpt-4-turboprovider="openai"
Anthropicclaude-3-5-sonnet-20240620, claude-3-opusprovider="anthropic"
Azure OpenAIgpt-4, gpt-35-turboprovider="azure_openai"
AWS BedrockClaude, Llama, Titan modelsprovider="bedrock"
OllamaLocal models like llama3, codellamaprovider="ollama"

Full list: See the LangChain Chat Model Integrations for a complete list of supported providers and model names.

Provider Usage Examples

# Using OpenAI's GPT-4o-mini
parser = ResumeParserPro(provider="openai", model_name="gpt-4o-mini", api_key="your-openai-key")
# Using a local model with Ollama (no API key needed)
parser = ResumeParserPro(provider="ollama", model_name="llama3:8b", api_key="NA")
# Using Anthropic's Claude 3.5 Sonnet
parser = ResumeParserPro(provider="anthropic", model_name="claude-3-5-sonnet-20240620", api_key="your-anthropic-key")

🛠️ Advanced Configuration

You can customize the parser's behavior during initialization.

parser = ResumeParserPro(
    provider="openai",
    model_name="gpt-4o-mini",
    api_key="your-api-key",
    max_workers=10,      # Increase for faster batch processing
    temperature=0.0,     # Set to 0.0 for maximum consistency
)

🤝 Contributing

Contributions are highly welcome! Please feel free to submit a pull request or open an issue for bugs, feature requests, or suggestions.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🆘 Support

  • 📖 Documentation: Check the code and examples in this repository.
  • 🐛 Issue Tracker: Report bugs or issues here.
  • 💬 Discussions: Ask questions or share ideas in our Discussions tab.

Built with ❤️ for the recruitment and HR community.

Keywords

resume parsing

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.