1. Rows read from the PDFs
These are the rows exactly as extracted from two sample text-based PDFs (an order register per region). Note the mixed date formats, $ amounts, odd capitals, and the combined Ship To field.
Sample files you can open: orders_north_2026.pdf · orders_south_2026.pdf
2. Cleaning rules
- Trim and tidy: extra spaces removed, text shown in consistent capitals (
PINECREST HARDWAREbecomesPinecrest Hardware). - Dates: all become
YYYY-MM-DD. Slash dates are read month/day. Anything unreadable is flagged, never guessed. - Amounts:
$and commas removed, two decimals.TBDis flagged. - Duplicates: a row is a duplicate when order no., date, customer, ship-to, status and amount all match after tidying. First one is kept. Near-matches (same order no., different amount) are kept.
- Split Ship To: into Street, City, State, ZIP. If it does not fit
street, city, ST 12345it is left whole and flagged. - Sort: Customer A to Z, then date, then order no.
Try the Ship To splitter
3. Results
Nothing to show yet. Run the cleaning first.
How the real job would work
- Which tool converts the PDFs?
- A Python script using pdfplumber, which reads tables from text-based PDFs. Cleaning, de-duplication and splitting run in Python, and the result is written to a formatted .xlsx and .csv.
- How are results validated?
- Raw rows minus removed duplicates must equal final rows (see the Validation tab). Every removed row is listed with the row it matched, every unparseable row is flagged instead of guessed, and spot checks compare values back to the PDF page.
- Scanned PDFs?
- This sample covers text-based PDFs only. Scanned or image PDFs need OCR, which lowers accuracy and would be scoped separately.