Skip to main content

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.

Format Extensions Required Installation Command
Core Formats .pdf, .docx, .txt pip install ai-resume-parser
Images (OCR) .png, .jpg, .jpeg pip install ai-resume-parser[ocr]
HTML .html, .htm pip install ai-resume-parser[html]
OpenDocument .odt pip 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:

Provider Example Models Setup
Google gemini-2.0-flash, gemini-1.5-pro provider="google_genai"
OpenAI gpt-4o, gpt-4o-mini, gpt-4-turbo provider="openai"
Anthropic claude-3-5-sonnet-20240620, claude-3-opus provider="anthropic"
Azure OpenAI gpt-4, gpt-35-turbo provider="azure_openai"
AWS Bedrock Claude, Llama, Titan models provider="bedrock"
Ollama Local models like llama3, codellama provider="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.

Release files for ai-resume-parser 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-resume-parser 1.0.6
File Size Uploaded
ai_resume_parser-1.0.6.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-resume-parser 1.0.6
File Interpreter ABI Platform
ai_resume_parser-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 30.6 kB

Release files / ai_resume_parser-1.0.6.tar.gz

Download URL ai_resume_parser-1.0.6.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
868467a4478567d28201bdf194f5acbf4f91a3d92d8c16c0be39489a05270965
BLAKE2b-256 checksum
How to use checksums
3d8eab6760e1aebeeb14249b960b6d659264383d5e1978813dcf1c66141c873f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / ai_resume_parser-1.0.6-py3-none-any.whl

Download URL ai_resume_parser-1.0.6-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d85f6e2787072664a1599dc1466ea45fcd96331bc253beb376170d4210c2b782
BLAKE2b-256 checksum
How to use checksums
9ac7b00b86fcee84aa9471bdb4a7b49147fbe7583b0b40293e380f34249389d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page