Files
ExperionCrawler/dxf-graph/plant-10100-pdf-extraction-report.md
windpacer 7330711499 chore: 프로젝트 파일 구조 정리 - 루트 파일 폴더별 이동, 테스트/구버전 삭제
루트 파일 정리:
- DXF/P&ID 관련 → dxf-graph/
- fastTable 관련 → fastTable/
- plan/ → plans/ 통합 (최신 버전 유지)
- 테스트 출력 파일, 구버전 프로젝트 삭제
- 불필요한 루트 문서 삭제
2026-05-10 17:39:58 +09:00

11 KiB

P&ID PDF 파일 설비 연결 정보 추출 분석 보고서

파일: src/Web/uploads/pid/plant-10100-only.pdf 분석일: 2026-05-06 목적: PDF 파일에서 설비 노드 및 연결 관계 추출 가능성 분석 (DXF 비교용)


1. PDF 파일 구조 분석

1.1 기본 정보

  • PDF 버전: PDF 1.7
  • 페이지 수: 1페이지
  • 페이지 크기: 1191 x 842 (A3 가로)
  • 텍스트 추출 길이: 9,751자

1.2 텍스트 추출 품질

  • 추출 방식: PyMuPDF (fitz.get_text())
  • 텍스트 블록: 순차적 텍스트 추출 가능
  • 레이어 정보: 없음 (PDF는 레이어 개념이 DXF와 다름)
  • 기하 정보: 제한적 (텍스트 좌표만 추출 가능)

1.3 DXF와의 핵심 차이

항목 DXF PDF
레이어 정보 25개 레이어 없음
엔티티 타입 LINE, CIRCLE, ARC 등 텍스트만
좌표 정보 정밀 좌표 ⚠️ 텍스트 블록 좌표만
설비 명칭 없음 있음
설비 사양 없음 있음
연결 라인 351개 LINE 추출 불가

2. PDF 텍스트 기반 설비 정보 추출 결과

2.1 설비 태그 + 명칭 추출 (총 39개 매칭)

태그 명칭 사양 포함
P-10101 FEED PUMP CAPA, SIZE, MATERIAL, PRESSURE, RPM
P-10114 TOP PUMP CAPA, SIZE, MATERIAL, PRESSURE, RPM
P-10116 BOTTOM PUMP CAPA, SIZE, MATERIAL, PRESSURE, RPM
P-10118 SIDE PUMP CAPA, SIZE, MATERIAL, PRESSURE, RPM
VP-10117 VACUUM PUMP CAPA, SIZE, MATERIAL, PRESSURE, RPM
DP-10101 DIAPHRAGM PUMP CAPA, SIZE, MATERIAL, PRESSURE, SPM
T-10101 FEED BUFFER TANK SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
T-10100 RECYCLE TANK SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
C-10111 COLUMN SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
E-10112 TOP CONDENSER SIZE, DP/OP, DT/OT, MATERIAL
E-10115 A/B REBOILER SIZE, DP/OP, DT/OT, MATERIAL
E-10119 BOTTOM COOLER SIZE, DP/OP, DT/OT, MATERIAL
E-10103 PREHEATER SIZE, DP/OP, DT/OT, MATERIAL
D-10113 REFLUX DRUM SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
F-10102A/B FILTER HOUSING SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
SP-10601 SEPERATER SIZE, VOLUME, DP/OP, DT/OT, MATERIAL
T-3210 WASTE WATER TANK SIZE, VOLUME, DP/OP, DT/OT, MATERIAL

2.2 DXF 대비 추가 정보

PDF에만 있는 정보:

정보 타입 PDF 예시
설비 영문 명칭 "FEED PUMP", "COLUMN", "REBOILER"
용량 (CAPA) "60L/min", "345m3/h"
크기 (SIZE) "Ø2,500 x 3,600H", "25A/20A"
부피 (VOLUME) "20.6M3", "0.002M3"
압력 (PRESSURE/DP/OP) "0.25MPa", "0.3MPa"
온도 (DT/OT) "80°C / AMB", "220°C / 147°C"
재질 (MATERIAL) "STS316", "STS304"
회전수 (RPM) "3,520", "3,550"
단열 (INSULATION) "H50", "H100"
한글 메모 "기존설비", "수정사항"

3. DXF vs PDF 비교 분석

3.1 항목별 비교

항목 DXF PDF 승자
설비 태그 추출 HIGH HIGH 동점
설비 명칭 추출 없음 있음 PDF
설비 사양 추출 없음 있음 PDF
계기 태그 추출 HIGH HIGH 동점
밸브 번호 추출 HIGH HIGH 동점
파이프 라인 번호 HIGH HIGH 동점
레이어별 분리 25개 레이어 없음 DXF
파이프 연결 추적 좌표 기반 불가 DXF
흐름 방향 없음 없음
한글 메모 없음 있음 PDF
수정 이력 있음 있음 동점

3.2 PDF의 장점

  1. 설비 명칭 직접 포함: "FEED PUMP", "COLUMN" 등 영문 명칭이 태그와 함께 표시
  2. 상세 사양 정보: 용량, 크기, 압력, 온도, 재질 등 공학적 사양 포함
  3. 한글 메모: "기존설비", "수정사항" 등 운영 정보 포함
  4. 텍스트 추출 단순성: PyMuPDF 한 줄로 전체 텍스트 추출 가능

3.3 DXF의 장점

  1. 레이어 정보: 공정 라인/계기/밸브를 레이어별로 명확히 분리
  2. 기하 정보: 파이프 연결 추적을 위한 정밀 좌표
  3. 엔티티 타입: LINE, CIRCLE, ARC로 심볼 구조 파악 가능
  4. 연결 관계: 좌표 기반 파이프 경로 추적 가능

4. 결론

4.1 최종 판단

PDF가 설비 정보 추출에 더 유리합니다.

이유:

  1. DXF에는 없던 설비 명칭과 사양이 PDF에 직접 포함됨
  2. 외부 매핑 테이블 없이 설비 태그 → 명칭 매칭 가능
  3. 텍스트 추출이 더 단순하고 신뢰도 높음

4.2 권장 접근법

PDF + DXF 하이브리드가 최적:

  • PDF: 설비 태그, 명칭, 사양 추출 (노드 정보)
  • DXF: 파이프 연결 추적, 레이어별 분리 (엣지 정보)

4.3 샘플과 비교

샘플 항목 PDF 추출 결과
P-101A (펌프) P-10101: FEED PUMP
E-101 (프리히터) E-10103: PREHEATER
C-101 (분리탑) C-10111: COLUMN
V-101 (탱크) T-10101: FEED BUFFER TANK
연결 관계 여전히 불가 (DXF 필요)

5. 흐름 방향(FLOW DIRECTION) 추출 분석

5.1 DXF에서 흐름 방향 추출 가능

T-201 탱크 심볼 분석 결과, DXF에서 흐름 방향 추출이 가능함이 확인되었습니다.

분석 방법:

  1. 탱크 심볼 경계선 찾기 (TEXT 레이어)
  2. 대각선 선분 감지 (화살표 부분)
  3. 대각선 방향 분석 (X축 증가 = 우측 흐름)

T-201 예시:

(1670.7, 1756.8) -> (1672.2, 155.3)  ← 대각선 (오른쪽 하향)
(1672.2, 1755.3) -> (1670.7, 1753.8)  ← 대각선 (왼쪽 하향)

→ X축이 증가하는 방향이 흐름 방향 (좌측 → 우측)

5.2 추출 알고리즘

  1. 설비 심볼 경계선 찾기: TEXT 레이어의 수평/수직 선으로 심볼 경계 확인
  2. 화살표 부분 감지: 대각선 선분 찾기 (dx > 0.5 AND dy > 0.5)
  3. 방향 판별: 대각선 선분의 X축 증가 방향이 흐름 방향
  4. 연결 파이프 매칭: 심볼에서 나가는 PROCESS LINE 레이어의 파이프와 연결

5.3 한계점

  • 탱크/컬럼 등 큰 설비만 화살표 심볼 사용
  • 작은 밸브/계기는 화살표가 없음
  • 파이프 라인 자체의 화살표는 별도 분석 필요

5.4 업데이트된 비교표

항목 DXF PDF 승자
설비 태그 추출 HIGH HIGH 동점
설비 명칭 추출 없음 있음 PDF
설비 사양 추출 없음 있음 PDF
계기 태그 추출 HIGH HIGH 동점
밸브 번호 추출 HIGH HIGH 동점
파이프 라인 번호 HIGH HIGH 동점
레이어별 분리 25개 레이어 없음 DXF
파이프 연결 추적 좌표 기반 불가 DXF
흐름 방향 가능 불가 DXF
한글 메모 없음 있음 PDF
수정 이력 있음 있음 동점

6. PNG 파일 형식 비교 분석

6.1 PNG의 근본적 한계

PNG는 래스터(픽셀) 이미지로, DXF/PDF와 근본적으로 다릅니다:

항목 DXF PDF PNG
텍스트 추출 직접 읽기 직접 읽기 OCR 필요
기하 정보 좌표 기반 제한적 없음
레이어 정보 25개 없음 없음
설비 명칭 없음 있음 OCR 필요
설비 사양 없음 있음 OCR 필요
흐름 방향 좌표 분석 불가 CV 필요
파이프 연결 좌표 추적 불가 CV 필요

6.2 PNG 사용 시 필요한 추가 작업

  1. OCR (Optical Character Recognition): Tesseract 등으로 텍스트 인식
    • 정확도: 70~90% (폰트, 해상도, 배경에 따라 다름)
    • PDF/DXF 직접 추출: 99%+ 정확도
  2. Computer Vision: 설비 심볼 인식
    • YOLO/CNN 모델 학습 필요
    • 화살표 방향 감지: 이미지 처리 필요
  3. 파이프 연결 추적: 에지 검출 + 선 추적 알고리즘
    • 매우 복잡하고 신뢰도 낮음

6.3 PNG의 유일한 장점

  • 시각적 확인: 인간이 도면을 직접 볼 때 유용
  • CV 모델 학습 데이터: 설비 심볼 인식 모델 학습용 이미지로 사용 가능

6.4 최종 결론

PNG는 정보 추출에最不리한 형식입니다.

추출 용이성 순위:

  1. DXF - 기하 정보 + 좌표 + 레이어 (연결 관계 추출 최적)
  2. PDF - 텍스트 + 명칭 + 사양 (설비 정보 추출 최적)
  3. PNG - 픽셀만 (OCR + CV 필요,最不리)

권장: DXF + PDF 하이브리드 접근 (PNG는 제외)


7. DXF 블록(Block) 기반 DXF 비교 분석

7.1 현재 DXF 상태

현재 plant-10100-only.dxf블록이 없습니다:

  • 블록 정의: 시스템 블록만 (*Model_Space, *Paper_Space)
  • INSERT 엔티티: 0개
  • 모든 밸브/계기/펌프 심볼이 개별 LINE/CIRCLE/ARC로 직접绘制됨

7.2 블록 기반 DXF가 있다면?

만약 밸브, 트랜스미터, 플로우미터 등이 **블록(Block Reference/INSERT)**으로 작성되어 있다면 다음과 같은 이점이 있습니다:

항목 현재 DXF (블록 없음) 블록 기반 DXF
심볼 인식 LINE/CIRCLE 조합 분석 필요 INSERT.dxf.name으로 직접 식별
심볼 타입 판별 기하 패턴 매칭 필요 블록명으로 직접 판별
추출 코드 복잡도 HIGH (기하 분석 필요) LOW (INSERT 반복만)
신뢰도 MEDIUM (패턴 매칭 오차) HIGH (명확한 식별)
위치 추출 좌표 분석 필요 INSERT.dxf.insert로 직접

7.3 블록 기반 DXF 예시

# 블록 기반 DXF라면 이렇게 간단하게 추출 가능
for entity in ms:
    if entity.dxftype() == 'INSERT':
        block_name = entity.dxf.name  # 'FCV_VALVE', 'FLOW_METER' 등
        position = entity.dxf.insert   # (x, y) 좌표
        print(f"{block_name} at {position}")

예시 블록명:

  • FCV_VALVE → 유량 제어 밸브
  • FLOW_METER → 플로우 미터
  • PRESSURE_TRANSMITTER → 압력 트랜스미터
  • TEMPERATURE_INDICATOR → 온도 지시기

7.4 블록 기반 DXF의 추가 이점

  1. 속성(Attribute) 지원: 블록에 텍스트 속성을 포함할 수 있음
    • 예: FCV 블록에 "10101" 속성 포함 → 태그 자동 추출
  2. 표준화된 심볼: ISA 5.1 표준 심볼 블록 라이브러리 사용 가능
  3. 메타데이터 포함: 블록에 설비 사양을 속성으로 저장 가능

7.5 현실적 한계

  • 도면 작성자 의존: 블록 사용은 도면 작성자의 선택
  • 현재 DXF는 블록 없음: 개별 엔티티 분석 필요
  • 변환 불가: 기존 DXF를 블록 기반으로 자동 변환 어려움

7.6 결론

블록 기반 DXF가 있다면 정보 추출이 훨씬 쉬워집니다.

하지만 현재 DXF는 블록이 없으므로:

  • 기하 패턴 분석 (LINE/CIRCLE 조합) 필요
  • 레이어 정보 + 텍스트 위치 기반 매칭 필요
  • PDF에서 설비 명칭/사양 보완 필요