P&ID (Piping & Instrumentation Diagram) 도면에서 Line Number, Equipment Number, P&ID Number 등을 AI 기반으로 자동 추출하고 분류하는 프로그램입니다.
-
AI 기반 텍스트 분류: 파인튜닝된 DeBERTa 모델로 P&ID 텍스트를 4가지 카테고리로 자동 분류
LINE: Line Number (배관 번호)EQT: Equipment Number (장비 번호)PID_NO: P&ID Drawing Number (도면 번호)TEXT: 기타 텍스트
-
배치 처리 & 엑셀 출력: 여러 페이지 자동 처리 후 시트별 분류된 엑셀 파일 생성
-
CLI & GUI 지원: 명령줄과 Tkinter GUI 모두 지원
P&ID PDF
↓
Power Automate (전처리)
├─ PDF → 페이지별 텍스트 추출 (C:/temp_ai경로에 추출)
└─ 각 페이지당 .txt 파일 생성
↓
STEP 1: AI 텍스트 분류
├─ Fine-tuned DeBERTa Model
│ (Base: microsoft/deberta-v3-base)
├─ txt 파일 배치 처리
└─ 4-Class Classification
↓
STEP 2: 좌표 기반 텍스트 추출
├─ 기준 페이지에서 좌표 탐색
├─ 상대 좌표 변환 (페이지 크기 호환)
└─ 모든 페이지에 적용하여 추출
↓
STEP 3: 최종 데이터 통합
├─ 분류별 시트 생성 (LINE, PID_NO, EQT, TEXT)
├─ 통합 시트 (ALL)
└─ 통계 시트 생성
↓
Excel 출력
git clone <repository-url>
cd <repository-name>
python -m venv .venv
.venv\Scripts\activate # Windowspip install torch transformers pandas openpyxl xlsxwriter PyMuPDFproject_root/
├── models/
│ └── best_deberta_pid_model/
│ ├── config.json
│ ├── pytorch_model.bin
│ ├── tokenizer_config.json
│ └── vocab.txt
모델 정보:
- Base:
microsoft/deberta-v3-base - Task: 4-Class Sequence Classification
- Training: P&ID 텍스트 라벨링 데이터로 파인튜닝
- 참고: 모델 파일은 저장소에 포함되지 않음 (개인 자산)
- PDF를 페이지별 txt 파일로 변환
- 출력 위치:
C:\temp_ai\txt\ - 파일명 형식:
1.txt,2.txt, ...
python run_gui.py- PDF 파일 경로 선택
- 기준 텍스트 입력 (예: "LINE NO")
- 기준 페이지 번호 입력 (예: 1)
- 실행
python run.py <PDF_PATH> <REFERENCE_TEXT> <REFERENCE_PAGE>예시:
python run.py "C:\Documents\PID_Drawing.pdf" "LINE NO" 1project_root/
├── pidmini/
│ ├── cfg.py # 설정 (경로, 모델 옵션)
│ ├── model.py # 모델 로딩
│ ├── pdf.py # PDF 처리 (PyMuPDF)
│ └── steps.py # 3단계 파이프라인
├── models/ # 파인튜닝 모델 (gitignore)
├── run.py # CLI 실행
├── run_gui.py # GUI 실행
└── README.md
C:\temp_ai\ 디렉토리에 3개의 엑셀 파일 생성:
pid_text_output.xlsx: STEP1 분류 결과result_pid_no.xlsx: STEP2 좌표 추출 결과result_final.xlsx: 최종 통합 결과 (ALL, LINE, PID_NO, EQT, TEXT, Statistics 시트)
- STEP1: txt 파일들을 읽어 DeBERTa 모델로 텍스트 분류
- STEP2: PDF에서 기준 좌표를 찾아 모든 페이지에 적용하여 데이터 추출
- STEP3: 분류 결과와 추출 데이터를 통합하여 최종 엑셀 생성