Recruitment operations
How to Parse PDF Resumes into Structured Candidate Data
By Andre · · 14 min read
How to Parse PDF Resumes into Structured Candidate Data

Parsing a PDF resume means turning a document built for human eyes into fields a database can use: name, email, phone, job history, skills, languages, location. For a text-based PDF, the parser reads the embedded text, splits it into sections and tags each piece of information. For a scanned PDF, it first runs optical character recognition (OCR) to turn page images into text. The rest of this guide covers how each step works, what breaks it, how to check the output and how to make parsed data useful for a small hiring team.
TL;DR
- Text-based PDFs parse cleanly from their embedded text. Scanned or image-only PDFs need OCR first, and OCR can misread characters.
- Multi-column designs, text boxes, tables and headers are the most common causes of scrambled output.
- Test any parser on 20 to 30 of your own real resumes, then keep a person checking names, contact details and dates.
- Parsing only pays off when the result lands in a searchable database with duplicate detection, not a spreadsheet you fix by hand.
- If resumes arrive in a shared inbox, parse them where they arrive instead of downloading and uploading files one by one.
Table of Contents
- What PDF resume parsing does
- Text-based vs. scanned PDFs: the first thing to check
- How a parser turns text into fields
- Handling scanned and image-based resumes
- Layouts and formatting that break parsing
- How to check parsing accuracy
- From parsed data to a searchable database
- Parsing resumes that arrive by email
- Multilingual resumes
- What to ask before choosing a parser
- Perspective: parse where the CVs already are
- Try it on your own inbox
- FAQ
- Sources
What PDF resume parsing does
A resume is free-form. Two candidates with the same career can produce documents that share nothing in layout, wording or order. A parser’s job is to map that variety onto a fixed set of fields.
The usual output covers:
- Contact details: full name, email, phone, city or country.
- Work history: employers, job titles, start and end dates.
- Education and certifications.
- Skills and languages.
- Extras that help recruiters: salary expectations, availability, role context.
The point is not the extraction itself. It is what you can do afterward: filter by skill, find everyone in a given city who speaks German, spot that the person who applied today also applied in March.
Text-based vs. scanned PDFs: the first thing to check
Not all PDFs are the same file type underneath. This one distinction explains most parsing failures.
| Type | What it contains | How it is parsed | Typical risk |
|---|---|---|---|
| Text-based (born-digital) | Encoded text exported from Word, Google Docs or a design tool | Text is read directly | Layout confuses reading order |
| Scanned or image-only | A picture of a page | OCR converts the image to text first | Misread characters, missing words |
| Hybrid | Text layer on top of a scan | Depends on the quality of the hidden text | Hidden text may be wrong |
The distinction is described in a developer guide to PDF data extraction: a searchable PDF can be read from its embedded text, while an image-only PDF needs OCR to convert page images into text before any candidate fields can be extracted.
A 10-second test
Open the PDF and try to select a single word with your cursor. If it highlights, there is a text layer. If you can only drag a box over the whole page, it is an image. You can also press Ctrl+F (Cmd+F on a Mac) and search for the candidate’s surname. No hit means the file will need OCR.
How a parser turns text into fields
The pipeline has the same stages whether it is a commercial product or something a developer builds in-house.
- Extract the text. Libraries read the text layer of the PDF, and one system design write-up describes using Apache Tika and PDFBox for this step.
- Reconstruct reading order. Text comes out in the order it is stored in the file, which is not always the order a person reads it.
- Segment into sections. Headings such as Experience, Education and Skills mark where each block begins and ends.
- Identify entities. A named entity recognition model, or a large language model working to a fixed JSON schema, labels names, companies, dates and skills. Both approaches are described in a tutorial on AI resume parsing, which also recommends defining the target schema strictly so every resume produces the same fields.
- Normalize. Dates are standardized, job titles grouped, skills mapped to a shared vocabulary.
- Store and index. Fields go into a database so they can be searched.
Step 5 is underrated. A candidate who writes “Sr. Acct. Mgr.” and one who writes “Senior Account Manager” should be findable with the same search. Our guide to normalizing job titles for small HR teams covers a practical way to do it before reaching for heavy machine learning.
Handling scanned and image-based resumes
OCR reads the shapes of letters and converts them into characters, and as one recruitment consultancy notes, it can sometimes get them wrong. Typical mistakes are an “l” read as a “1”, an “@” lost from an email address or a phone number with a digit swapped. These are exactly the fields you cannot afford to get wrong, because a bad email means a lost candidate.
What helps:
- Ask for a text-readable PDF or Word file. The same consultancy advises requesting this instead of photos or scans. A line in your job ad or auto-reply costs nothing.
- Prefer higher-resolution scans. A phone photo taken at an angle in poor light is the worst case.
- Flag OCR-sourced profiles. If your system lets you, mark which profiles came through OCR so a person verifies contact details before outreach.
- Do not assume a hybrid file is fine. Some scanners embed an automatic text layer that is full of errors. If the parsed output looks odd, check the source.
Layouts and formatting that break parsing
The most common sources of errors are consistent. A recruitment consultancy’s overview of CV parsing lists ambiguous dates, non-standard job titles, abbreviations, multi-column or designed layouts, text boxes, tables, headers and footers, and scanned files.

Layout is a bigger problem than it seems. Academic research from 2025 puts the share of resumes using non-linear, multi-column formats at about 20%, and notes that these break the standard top-to-bottom reading flow. The researchers propose splitting a resume into layout blocks and reordering them to recover the intended reading sequence, which gives a sense of how hard the problem is even for dedicated systems.
In practice, here is what goes wrong:
| Formatting choice | What the parser often does |
|---|---|
| Two-column layout with a sidebar | Mixes sidebar skills into job descriptions |
| Skills shown as icons or bars | Drops them entirely, since they are not text |
| Text boxes and floating shapes | Reads them out of order or skips them |
| Contact details in the header | Header content may be ignored or repeated on every page |
| Tables for work history | Reads across rows instead of down columns |
| Dates like “03/04” with no year context | Cannot tell month/year from day/month |
| Creative job titles (“Growth Ninja”) | Cannot map to a standard role |
You cannot control how every applicant formats a resume. You can control what you ask for, and how you process what arrives.
How to check parsing accuracy
Vendor claims about accuracy are measured on their own samples. Yours will differ, because your applicants, industries and languages differ. The consultancy cited above advises testing a parser on your own varied CVs and keeping a person in the loop for sensitive or important candidate data before relying on automated output.
A simple test that takes an afternoon:
- Collect 25 real resumes from your inbox. Include the awkward ones: two-column designs, scans, resumes in other languages, very long careers.
- Parse them all and open each result next to the original.
- Score the fields that matter to you. For most teams that is name, email, phone, current title, years of experience, skills and location. Mark each field correct, partly correct or wrong.
- Look for patterns, not one-off errors. If every two-column resume loses its skills, that is a rule you can act on.
- Decide which fields need a human check. Contact details are the usual candidates.
We wrote a shorter version of this routine, 30-second parseability checks for small teams, for the days when you cannot run a full test.
Correcting what the parser gets wrong
A good workflow makes corrections cheap. You should be able to open a profile, fix a field and have the fix reflected in search. An audit trail that records who changed what is useful here, especially when several recruiters share one database.
From parsed data to a searchable database
Extraction alone leaves you with a pile of structured files. The value comes from storing them where they can be queried. One system design write-up describes keeping parsed resumes as structured candidate data in PostgreSQL and indexing them for search and candidate-job matching. Small teams do not need to build that, but the principle holds: every field you extract should be something you can filter on.
What a useful candidate database lets you do:
- Search by skill, role, language, location or years of experience.
- See every document and email linked to one person.
- Detect duplicates, so a candidate who applies twice, or through two recruiters, is one profile.
- Export to CSV when a client or a colleague needs a shortlist.
- Control who on the team can see what.
The write-up also points out that skills work best when mapped to a hierarchy, so a search for a broad skill also finds candidates who list a specific tool within it. If you want the practical version of this for an inbox full of CVs, read how to turn the CVs in your recruitment inbox into a searchable candidate database.
Parsing resumes that arrive by email
For many small teams the real bottleneck is not the parser. It is the step before it: someone opens each email, saves the attachment, uploads it somewhere and retypes the sender’s details. Parsing a PDF well does not help if the PDF only reaches the parser after twenty minutes of manual handling.
Two approaches work:
- Rules in your mail client. Folders and filters keep resumes together. Our walkthrough of three Outlook rules to capture resumes also explains when rules stop being enough.
- Parsing directly from the inbox. The software watches the mailbox, detects CV attachments and creates the profile for you. See how to parse resumes from email without retyping them.
If your team is weighing a full applicant tracking system against a lighter tool, this comparison of an ATS and a resume parser sets out what each does. For a broader overview, the small business guide to resume parsing is a good next read.
Multilingual resumes
If you recruit across borders, a parser has to cope with resumes in several languages, and sometimes with more than one language in a single document. Section headings such as “Berufserfahrung” or “Expérience” need to be recognized as work history. A candidate whose resume is in a language nobody on your team reads can be missed in a plain keyword search. We cover this in resume language detection for small HR teams.
What to ask before choosing a parser
- Does it handle both text-based and scanned PDFs, and Word files too?
- Can it connect to the mailbox where resumes already arrive?
- Does it flag duplicates?
- Can you correct a field and see the correction in search?
- Can you try it on your own resumes before paying?
- Where is candidate data stored, who can access it, and are workspaces separated between clients or teams?
- Are plan limits and prices published, or hidden behind a sales call?
The last two matter more than they appear. Resumes hold personal data, and a tool that mixes clients’ candidates or makes you book a call just to see pricing adds friction you will feel later.
Perspective: parse where the CVs already are
We built RecrutFlo for teams whose recruitment process is really a shared inbox. Most of the people we talk to do not have a parsing problem in isolation. They have a handling problem: the CV arrives, someone downloads it, someone renames it, someone types the details into a sheet, and a week later nobody remembers whether this person already applied.
Our view is that the parser should come to the inbox, not the other way around. RecrutFlo connects to Microsoft 365, Outlook and IMAP mailboxes (Gmail is coming soon), finds CV attachments in PDF, DOC and DOCX, and builds a searchable profile. We think automation should take over the repetitive typing while the recruiter keeps control of decisions, so profiles stay open to review and correction.
We also think small teams should not need an implementation project or an onboarding call to get started. You connect a mailbox, test the workflow on the free plan and judge the results on your own resumes. Candidate data stays in an isolated workspace, designed around EU data protection principles.
Marco
Try it on your own inbox
If resumes reach you by email, the quickest way to see parsing in action is to run it on resumes you already have. RecrutFlo has a free plan for testing the workflow. Paid plans are Starter at 19 € per month, Professional at 49 € per month and Business at 149 € per month, as published on the pricing page when we last checked. If you need more capacity in a given month, extra processing runs are sold as one-off add-ons: 100 for 9 €, 500 for 29 € or 1,000 for 49 €.

You can see the steps first on the how it works page, or start from the RecrutFlo homepage.
FAQ
Can software read a PDF resume?
Yes, as long as the file has a text layer or goes through OCR first. A PDF exported from Word or Google Docs is read directly. A scan or photo is converted to text by OCR, which can introduce character errors, so contact details deserve a quick check.
Why does my parser scramble two-column resumes?
Text in a PDF is stored in file order, not reading order. In a two-column design the parser can read straight across both columns and mix a sidebar with job descriptions. Research on resume layout treats this as a core challenge, since roughly one resume in five uses a non-linear layout.
Do I need OCR for every resume?
No. Only image-only or scanned PDFs need it. Use the cursor test: if you can select and search text in the PDF, it is text-based and OCR is not required. Asking candidates to send a text-readable PDF or Word file avoids most OCR cases.
How accurate does a parser need to be?
There is no single right number, because accuracy depends on your resumes. Test on 20 to 30 of your own, score the fields you rely on and decide where a person should confirm the result. Contact details and dates are the usual places to keep a human check.
What happens to duplicate candidates?
Without duplicate detection, the same person can exist as several profiles with different contact details and notes. A system that matches on email, phone and name merges or flags them, so your history with that candidate stays in one place.
Sources
- Extract data from PDF files: A developer guide
- CV Parsing Explained: How Resume Parsing Works
- Academic paper on resume layout reconstruction (arXiv, 2025)
- System Design: Resume Parsing and Matching System
- AI Resume Parser: Extract Structured Data From PDFs