Back to customer stories

Customer Story

Facilities Planning Practice

25,000개 엔터티 DXF 파일에서 36개 객실 카페테리아 일정을 energent.ai로 추출한 시설 계획 팀의 사례

도면에는 25,000개의 엔터티가 있었고, 일정은 한쪽 구석에 흩어진 텍스트에 불과했습니다. 에이전트가 표를 찾아내고, 맨 위의 누락된 3개 객실을 잡아냈으며, 노란색 헤더 행이 있는 검증된 Excel 파일을 제게 넘겨줬습니다.
건축가 & 프로젝트 리드 at Facilities Planning Practice
Industry
건축 & 시설 계획
Use case
CAD 객실 일정 추출
Facilities Planning Practice

고객 프로필

이 팀은 공공 및 기업 고객을 위한 기관급 급식 프로젝트 — 카페테리아, 식당, 상업용 주방 — 를 수행하는 소규모 건축 및 시설 계획 실무팀입니다. 대표와 프로젝트 매니저는 AutoCAD 설계 작업과 그 이후의 인계 업무를 나눠 맡습니다. 즉, 면적 집계, 객실 일정표, 사양 문서를 Excel이나 Word로 정리해 고객 검토, 원가 산정, 인허가 제출에 활용해야 합니다.

이 사례의 프로젝트는 208명 규모의 식음 시설로, 20개가 넘는 서로 다른 기능 구역이 있었습니다. 예를 들면 조리 및 냉·온 주방 생산 구역, 생선·채소·과일·베이킹 준비 구역, 건식 및 냉장 저장실, 냉동실, 직원 탈의실, 샤워실, 라커룸, 사무실, 분전실, 환기실 등이었습니다. 객실 일정의 정확성은 인계 단계에서 매우 중요합니다. 면적 수치의 오류는 공사 견적, 코드 준수 검토, 인테리어 마감 공사 입찰로 그대로 이어집니다. 면적 열의 소수점 하나가 잘못되면, 아무도 알아채기 전에 비용 계획 전체에 연쇄적으로 영향을 줄 수 있습니다.

문제

당면 과제는 종이 위에서는 단순했습니다. 시설 도면 DXF의 오른쪽 아래 구석에 포함된 객실 일정을 Excel 파일로 내보내 고객에게 전달하는 일이었습니다. 하지만 실제 소스 파일은 여러 문제가 겹쳐 있었습니다.

DXF에는 25,123개의 엔터티가 들어 있었고, LINE, INSERT, ARC, LWPOLYLINE, HATCH, TEXT, MTEXT, DIMENSION 객체가 섞여 있었습니다. 객실 일정은 구조화된 데이터베이스 객체나 전용 일정 레이어가 아니라, 도면 캔버스 전반에 흩어진 텍스트 형상으로만 존재했습니다. 객실 번호 열에는 신뢰할 만한 열 머리글이 없었습니다. 번호는 일정 본문에는 있었지만, 추출된 텍스트 영역에서 대응되는 헤더 라벨이 없어, 단순한 라벨링이 아니라 좌표 기반 추론으로 복원해야 했습니다.

수작업 방식은 느리고 오류가 많았습니다. 25,000개 엔터티 파일을 AutoCAD에서 열어 36행 표를 Excel로 복사·붙여넣기 하는 데는 상당한 시간이 들었고, 전사 오류 위험도 컸습니다. 숫자를 잘못 읽거나, 행을 놓치거나, 소수점 구분자를 빠뜨릴 수 있었습니다. 원본 도면의 면적 값은 형식도 일관되지 않았습니다. 어떤 셀은 "17,5m²"로, 어떤 셀은 "17,50m²"로 표시되어 있었기 때문에, 아무리 신중하게 수작업으로 내보내도 SUM 수식이 조용히 건너뛰는 비숫자 텍스트가 열에 남게 됩니다.

3개 객실(101–103)은 일정 영역의 상단 가장자리에 있어, 공간 필터를 적용하면 잘려 나가기 쉬웠습니다. 104번에서 시작하는 일정처럼 미묘하게 불완전한 인계본은, 고객이나 원가 산정 담당자가 그 공백을 알아차릴 때까지 발견되지 않을 수도 있었습니다.

왜 지금인가

시설 인계 일정은 설계 단계 말미에 매우 촉박해집니다. 카페테리아 프로젝트가 개념 설계에서 실시설계로 넘어가면, 발주처와 종합 시공사 모두 객실 일정, 면적 집계, 마감 사양을 신속하게 필요로 합니다. 누군가가 36행 CAD 표를 수작업으로 전사하는 데 하루만 더 걸려도, 마감 기한이 정해진 견적 산정과 인허가 일정에 병목 압력이 생깁니다.

소규모 실무에서는 이런 추출 작업을 떠맡을 전담 BIM 코디네이터나 CAD 테크니션도 없습니다. 도면을 그린 건축가나 프로젝트 매니저가 곧바로 일정을 내보내는 경우가 많습니다. 전사에 쓰는 시간은 설계나 고객 커뮤니케이션에 쓰지 못하는 시간입니다. 단일 도면이라도 추출을 자동화하면 프로젝트당 오버헤드가 줄어들고, 비슷한 문서 요구사항을 가진 식음 프로젝트 포트폴리오 전반에서 그 효과가 누적됩니다.

왜 energent.ai인가

이 팀이 필요로 한 것은 DXF 파일을 직접 받아들이고, 텍스트 엔터티의 배치를 공간적으로 해석하며, 깔끔한 Excel 출력을 만들어 주는 도구였습니다. 맞춤 스크립트나 BIM 플러그인 라이선스, 프로젝트마다 다시 짜야 하는 스프레드시트 매크로는 필요하지 않았습니다.

대안들은 예상 가능한 한계가 있었습니다. AutoCAD의 기본 데이터 추출 마법사는 일정 데이터가 구조화된 블록 속성에 있을 때는 잘 작동하지만, 일반 텍스트 형상으로 그려진 표는 처리하지 못합니다. 스프레드시트 기반 OCR 도구는 AutoCAD의 PDF 내보내기를 처리할 수는 있지만, 추가 내보내기 단계가 필요하고 도면 형상이 텍스트와 겹치면 정확도가 떨어집니다. CAD 테크니션에게 표를 수작업으로 전사시키는 것이 기본 경로였지만, 원칙적으로는 결정적이고 검증 가능해야 할 작업에 비용과 리드타임만 더했습니다.

energent.ai는 원본 DXF를 그대로 받아 전처리 없이 불러왔고, 좌표 기반 추론을 사용해 25,000개 엔터티 도면의 나머지 부분에서 오른쪽 아래 일정 영역을 분리했습니다. Python 기반 추출 로직을 DXF 형상에 직접 적용해 공간 위치를 바탕으로 표를 행 단위로 복원하고, 데이터 구조를 통해 누락된 "Number" 헤더를 추론했으며, 형식이 갖춰진 Excel 워크북을 단일 세션 안에 생성했습니다. 이후 독립적인 감사 서브에이전트가 처음부터 다시 일정을 추출해 최종 전달 전에 결과를 검증했습니다.

워크플로

Step 1 — 파일 수집. 건축가는 DXF 파일을 energent.ai에 직접 업로드했습니다. 에이전트는 즉시 파일을 검증했습니다. AutoCAD R2018 형식(내부 버전 AC1032), 두 개의 레이아웃("Model"과 워터마크 레이아웃), 그리고 LINE, TEXT, MTEXT, INSERT, HATCH, ARC, LWPOLYLINE, DIMENSION 형상 유형에 걸친 25,123개의 modelspace 엔터티가 감지되었습니다.

Step 2 — 도면 맥락 평가. 초점을 좁히기 전에 에이전트는 전체 도면을 훑어보았습니다. 208명 규모의 식음 시설이라는 건물 유형을 식별하고, 주방 생산, 저장, 직원 구역 전반에 걸친 20개 이상의 명명된 기능 구역을 목록화했으며, 객실 일정이 구조화된 블록이나 표 객체가 아니라 오른쪽 아래 구석의 텍스트 형상으로 포함되어 있음을 확인했습니다.

Step 3 — 영역 분리 및 텍스트 추출. 에이전트는 X/Y 좌표와 함께 모든 텍스트 엔터티를 추출한 뒤, 일정이 들어 있는 오른쪽 아래 클러스터만 필터링했습니다. 그런 다음 공간 위치를 바탕으로 표를 행 단위로 복원했습니다. CAD 레이어 이름이나 객체 유형에 의존하지 않고, 상대 좌표를 기준으로 객실 번호, 객실명, 면적 값을 맞춰 나갔습니다.

Step 4 — 헤더 복원. 에이전트는 도면 텍스트에서 "Room"과 "Area, m²"의 열 머리글을 찾아냈습니다. 객실 번호 열에는 명시적인 헤더 텍스트가 없었기 때문에, 에이전트는 해당 열의 내용과 위치를 바탕으로 Excel 헤더를 "Number"로 적용했습니다. 이후 감사 결과, 일정 구조를 고려할 때 이것이 적절함이 확인되었습니다.

Step 5 — 완전성 점검 및 두 번째 검증. 초기 추출 영역 필터는 일정 상단의 101–103번 객실을 잘라냈습니다. 에이전트는 이 공백을 감지하고 세로 추출 경계를 넓힌 뒤, 사용자 개입 없이 워크북을 다시 생성했습니다. 최종 파일에는 101번부터 136번까지, 총 36개 행이 모두 포함되었습니다.

Step 6 — Excel 내보내기. 에이전트는 "Room Table"이라는 시트명, 세 열 전체에 걸친 노란색 강조 헤더 행, 그리고 도면 순서대로 정렬된 36개 데이터 행이 포함된 워크북을 생성했습니다. 면적 값은 원본의 "17,5m²"와 "17,50m²"를 그대로 유지했기 때문에, 건축가는 에이전트가 원본 형식을 조용히 덮어쓰지 않고도 후속 계산을 위해 이를 어떻게 정규화할지 직접 결정할 수 있었습니다.

Step 7 — 독립 감사. 서브에이전트가 주 에이전트의 로직에 의존하지 않고 원본 DXF에서 일정을 독립적으로 다시 추출한 뒤, 모든 행을 Excel 파일과 대조했습니다. 판정: PASS. 누락 행 없음, 추가 행 없음, 중복 없음, 36개 항목 전체에서 순서 문제 없음.

카페테리아 객실 일정 워크스루

결과

팀에 남은 마지막 작업은 area value normalization이었습니다. source drawing의 혼합된 formatting 때문에, 값이 숫자로 변환되기 전까지는 Excel에서 area column을 직접 합산할 수 없습니다. Energent.ai는 이를 명시적으로 표시하고, 후속 단계로 normalized numeric column을 추가할 수 있다고 제안했습니다. 이는 architect가 decimal separator conventions와 unit handling을 계속 통제할 수 있는 깔끔한 handoff point입니다.

증거

"도면에는 25,000개의 entity가 있었고, schedule은 한쪽 구석에 흩어진 text일 뿐이라서 깔끔하게 export할 layer가 없었습니다. 에이전트가 표를 찾아냈고, 맨 위의 누락된 3개 객실도 잡아냈으며, 노란색 헤더 행이 있는 검증된 Excel을 저에게 넘겨줬습니다. 저를 확신시킨 건 audit 결과였습니다. 에이전트가 맞아 보인다고 주장한 게 아니라, DXF와 대조해 모든 room number와 area를 독립적으로 다시 확인한 second pass였죠."

— 식당 시설 인수인계의 Architect 및 프로젝트 리드

납품된 workbook에는 "Room Table"이라는 이름의 sheet에 전체 36개 객실 schedule이 들어 있으며, 열은 "Number", "Room", "Area, m²"로 구성되고 room 101부터 room 136까지 도면 순서대로 정렬되어 있습니다. 독립 감사 확인 결과 — PASS, 누락/추가/중복/순서 오류 행 없음 — 는 session record의 일부로 보관되어 있으며 프로젝트 문서화에 사용할 수 있습니다.

신뢰 참고

Excel 출력의 area 값은 숫자가 아니라 text string입니다. source DXF가 일관되지 않은 formatting을 사용했기 때문에, 에이전트는 이를 조용히 정규화하지 않고 그대로 보존했습니다. "Area, m²" 열을 SUM formula나 area-total 계산에 사용하기 전에, 팀은 값을 숫자로 변환하고 decimal separator conventions가 프로젝트 locale(쉼표 vs. 마침표)와 일치하는지 확인해야 합니다. "Number" 열 헤더는 도면의 명시적 label에서 추출한 것이 아니라 열 구조를 바탕으로 추론된 것입니다. 이 파일에는 적절하지만, 고객이나 permit set에 대한 관할 authority에 제출하기 전에 프로젝트의 room-schedule standard와 다시 대조해 보는 것이 좋습니다.

Back to customer storiesBook a Demo