Every engineering deliverable goes out as a PDF. A typo that slips through reaches the client - it costs credibility, sometimes triggers reprints and reissues, and occasionally ends up on a stamped drawing. The BIM group had been trying to solve this for three years. Every off-the-shelf tool failed on engineering documents. I built the one that worked, and it took first place at the 2026 Innovation Awards.


My Role

Sole developer. Self-initiated, built end to end, and sponsored for company-wide rollout by the BIM group.

Why Off-the-Shelf Tools Failed

Drawings aren’t Word documents. Revit, AutoCAD, and Navisworks exports place text sideways, upside down, along curves, and inside viewports. Generic extractors either miss it entirely or choke on the layout.

False positives drown the real errors. Engineering documents are dense with jargon (Nu, Mr, fc'), abbreviations (TYP, CLR, SPEC), and subconsultant names. In a head-to-head test on a real drawing sheet, a commercial PDF tool threw 126 false flags - and failed to catch the one planted typo. A reviewer staring at 126 flagged words will miss the real one.

Dictionaries rot without central curation. Commercial tools store dictionaries per user, per machine. Adding a new subconsultant name is a tedious per-person chore, so nobody does it, and the false-positive pile grows until people abandon the tool.

What I Built

Orientation-aware extraction

  • PDF text and word bounding-box extraction via PyMuPDF, handling rotated, vertical, and curved text
  • Uppercase normalization, punctuation stripping, and numeric filtering before lookup

Ten discipline dictionaries

  • Structural, Mechanical, Civil, Electrical, Bridges, Process, Instrumentation, Landscape, General, plus full English
  • 372,598 indexed words, co-authored by five disciplines during the pilot
  • Layered per-discipline on top of a centralized word list - one person adds a term once and every user has it on the next run

Per-user personal dictionaries

  • Stored locally, with file-locking for safe concurrent access

Zero-friction deployment

  • A single launcher that pulls the latest code and dictionaries from the internal GitLab on every start
  • No Software Center request, no admin rights, no per-machine configuration, no IT ticket

Output

  • Highlighted PDF with translucent rectangles at each error location
  • CSV export with an occurrence-count slider for noise filtering
  • Companion dictionary-curation app for ongoing maintenance

Impact

  • First place, 2026 Innovation Award
  • Adopted by regional drawing production QA teams, used on drawings issued company-wide
  • Five disciplines actively populated the engineering dictionaries during the pilot
  • Three years of stalled internal discussion resolved into a shipped tool

Technical Stack

Python 3.13, Streamlit, PyMuPDF, Pandas, uv-pinned dependencies, pytest test suite covering text cleaning, dictionary loading, PDF class behaviour, and password-protected PDF rejection. Runs locally - no server to maintain, no cloud dependency, no data leaving the network.