Inspiration
Comparing reinforcement details across structural plans and shop drawings can be slow and difficult to trace. We built Concorde to help reviewers investigate possible matches while keeping project documents local.
What it does
Concorde extracts candidate reinforcement details from native PDF text and scanned drawings, proposes possible matches, and links results to their source pages. Reviewers can inspect candidates, confirm or correct an element’s identity, and recalculate comparisons from saved extractions without rerunning OCR. Results can be exported as JSON and per-sheet PDF reports.
For uncertain pairs, reviewers can optionally ask a local vision model to suggest visual clues and questions to check. Its output is advisory: the reviewer verifies the original drawings and makes the decision. Unreadable or unmatched items remain uncertain; they are not automatically labelled as missing or added elements.
How we built it
Concorde uses PyMuPDF to read and render PDFs, and EasyOCR with PyTorch to process scanned pages. A separate matching stage considers element identity and drawing context before comparing reinforcement values. FastAPI and Uvicorn provide the local API; the review interface uses JavaScript, HTML, and CSS. ReportLab generates PDF reports.
An optional vision-language assistant runs locally through Ollama. It can examine a selected pair of drawing contexts and return a suggested identity, supporting clues, and questions for the reviewer. It does not change comparison statuses or determine structural compliance.
Challenges we ran into
Drawing labels, sheet references, and OCR results can be incomplete or inconsistent. Matching only on reinforcement values can pair the wrong elements, so Concorde considers identity and drawing context separately from value comparison. Uncertain cases remain open for human review.
Large scanned PDFs also make coverage and source traceability difficult to verify. Tiled processing and links to source pages help reviewers inspect the evidence, but page coverage and valid output structures do not prove extraction accuracy.
Accomplishments that we're proud of
We built a local workflow for PDF import, text extraction and OCR, candidate matching, human review, and JSON/PDF export. Reviewers can correct uncertain associations and recalculate comparisons from saved extraction results without rerunning OCR. Human decisions remain separate from automated suggestions and linked to the source pages.
What we learned
Native PDF text and scanned pages need different processing. OCR results are more useful when their locations are preserved so reviewers can trace them back to the drawings.
Matching works better when identity and drawing context are considered before reinforcement values. A local vision model can offer additional clues, but its output is not ground truth. Measuring extraction and matching accuracy requires independent, engineer-reviewed reference data.
What's next for Concorde (The Optimizers)
We plan to evaluate Concorde on an unseen project using engineer-reviewed reference labels and a protocol set before evaluation. We will measure extraction and matching errors separately. We also plan to validate the revision-comparison and annotated-PDF tools in the target PDF viewer and rehearse the timed demonstration.
Built With
- css
- easyocr
- fastapi
- html
- javascript
- jupyter
- onnx-runtime
- pymupdf
- python
- pytorch
- rapidocr
Log in or sign up for Devpost to join the conversation.