Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

임대 안내문 자동화 (Leasing Flyers)

PDF 임대 안내문을 Genstar 양식 .xlsx 파일로 자동 변환하는 도구. CLI + PySide6 데스크톱 GUI.

설치

git clone https://github.com/kkhwan1/Leasing_Flyers.git
cd Leasing_Flyers
pip install PySide6 openpyxl pymupdf pillow pytest pytest-qt
# (선택) Anthropic API 사용 시
pip install anthropic

Python 3.10+ 권장. Windows / macOS / Linux / WSL 모두 동작.

현재 상태

Phase 1 (텍스트) + Phase 2 (이미지) 완료

  • 텍스트 필드 20개 자동 추출 + 양식 셀에 주입
  • 외관·위치도·평면도·기타 이미지 자동 추출 + 슬롯에 삽입
  • 원본 양식의 서식·로고·아이콘·병합셀 자동 보존
  • PySide6 GUI: 백그라운드 추출(QThread), 결과 표 편집, 이미지 미리보기·교체, 배치 저장
  • 회귀 테스트 65/65 통과
  • E2E (목동/청량리 정답 PDF): 100% / 94%
  • 실제 PDF 27 페이지 일괄: 텍스트 74% · 변동 이미지 69% · 고정 이미지 100% 보존

빠른 시작

GUI (사용자 권장)

python -m app.gui
  1. "PDF 추가…" 버튼 → 파일 선택 (여러 개 가능)
  2. 백엔드 선택 (auto/codex/anthropic), "사진 자동 추출" 체크박스 (기본 ON)
  3. "추출 시작" — 진행률 표시, 취소 가능
  4. 결과 표에서 텍스트 필드 직접 편집
  5. 슬롯 패널에서 썸네일 확인, 잘못된 이미지는 "교체" 버튼으로 수동 교체
  6. "엑셀 저장" (단일) 또는 "모두 저장" 체크 후 클릭 (배치)

CLI

# Vision으로 PDF에서 자동 추출 (텍스트 + 이미지)
python convert.py 매물안내문.pdf

# 이미지 추출 끄기 (텍스트만)
python convert.py 매물안내문.pdf --no-images

# JSON에서 직접 (Vision 건너뜀, 가장 빠름)
python convert.py --from-json data.json -o output.xlsx

# 추출 결과만 확인
python convert.py 매물안내문.pdf --dry-run

# Vision 백엔드 강제 지정
python convert.py 매물안내문.pdf --backend codex
python convert.py 매물안내문.pdf --backend anthropic

기본 출력 경로: outputs/(GM) {매물명}_{YYMMDD}.xlsx

Vision 백엔드

백엔드 필요 조건 비고
codex codex CLI 설치 + 인증 로컬 실행, 별도 키 X
anthropic ANTHROPIC_API_KEY 환경변수 Anthropic API 사용량

미지정 시 ANTHROPIC_API_KEY가 있으면 anthropic, 없으면 codex 자동 선택.

페이지당 약 45초 (codex 2회 호출 — 텍스트 + 이미지 bbox).

테스트

# 단위 + GUI (Vision 호출 없음, 5초)
pytest tests/test_renderer.py tests/test_vision_parsing.py tests/test_gui.py tests/test_gui_extraction.py

# E2E (Vision 호출, 분 단위)
pytest tests/test_e2e.py -m e2e -v

# 종합 검증 + 리포트 생성 (docs/verification-report.md)
PYTHONPATH=. python tests/verify_all.py

구조

임대안내문 자동화/
├── app/
│   ├── template_mapper.py    # 셀 좌표 ↔ 필드명 + IMAGE_SLOTS (anchor·크기)
│   ├── excel_renderer.py     # render(data, output, template, images=)
│   ├── vision_extractor.py   # parse() / parse_with_images()
│   ├── image_extractor.py    # PDF → PNG → Codex bbox → crop bytes
│   └── gui.py                # MainWindow + ExtractionWorker + ImageSlotPanel
├── convert.py                # CLI 엔트리
├── data/
│   ├── template.xlsx         # 빈 양식 (변동 이미지 4개 제거, 고정 3개 보존)
│   └── test_pdfs/            # 27 페이지 PDF (테스트용)
├── tests/                    # 단위/GUI/E2E + verify_all
├── outputs/                  # 생성된 .xlsx
└── docs/
    ├── phase2-spec.md        # Phase 2 설계 (구현 완료)
    ├── batch-report.md       # 27 페이지 일괄 결과
    └── verification-report.md

상세 가이드는 CLAUDE.md 참고.

Phase 3 후보 (미구현)

  • 다중 호실 PDF 자동 분기 (한 페이지 = N개 매물 → N개 xlsx)
  • 같은 매물의 여러 페이지 자동 병합 (예: P9 매물 정보 + P10 평면도)
  • PPT 직접 입력 (현재는 PDF 변환 후 입력)
  • 이미지 letterbox vs cover 정책 선택 옵션

자세한 설계는 docs/phase2-spec.md 참고.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages