Testing Google Docs resume PDFs against an open-source parser: ligatures, page breaks and a missing name
Description and use
An automated test verifies which resume fields are correctly parsed from Google Docs PDFs and identifies issues with ligatures, page breaks, and missing names.
Problem
Determine which resume fields are correctly parsed from Google Docs PDFs and which are mis‑parsed by an open‑source parser.
Outcome
The test revealed that ligatures, page breaks, and missing names caused parsing errors. Adjustments to the parser and normalization logic improved accuracy, but some fields remained out of scope.
Workflow
- Download each template as PDF and DOCX via Google Docs export URL.
- Run OpenResume’s parser in Node, re‑implementing PDF loading to avoid browser dependencies.
- Normalize extracted text (NFC, dash replacement, whitespace collapse, case folding).
- Compare each field, list entry, and bullet against an expected JSON file with strict ordering and length checks.
- Run pdfminer.six to obtain raw text for a second opinion on layout and content.
- Generate a report including SHA‑256 of the PDF, parsing results, and out‑of‑scope items.
- Store all test artifacts in a GitHub repository for reproducibility.
Evidence
The test never generates its own PDFs. A script downloads each template as PDF and .docx through Google Docs' public export URL.
OpenResume runs its parser in the browser. Its read-pdf.ts loads pdf.js through a browser worker entry, and that doesn't run in Node.
Each sample resume has an expected-resume.json shaped like OpenResume's own Resume type: name, email, phone, location, link and summary, then every job, school and project, then skills.
- Record date: 2026-10-20T18:41:37.219Z