Files
documan/docs/history/2026-03-31_훅설정및PDF2단변환기능추가.md
minsung 8d4339302e feat: MD 파일 병합 및 이미지 경로 통합 스크립트 추가 (#1)
- merge_markdown.py: 96개 페이지별 MD를 단일 파일로 병합
  - 이미지를 output/images/ 폴더로 통합, p{NN}_ prefix로 파일명 충돌 방지
  - file_range 파라미터로 부분 테스트 가능
- docs/tutorial.md: merge 명령어 및 사용법 문서화
- docs/history: 작업 이력 파일 추가

소요 시간: 10분 | Context: input 18k / output 2k tokens

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 11:00:28 +09:00

2.0 KiB

이슈: #1 소요 시간: 40분 Context 사용량: input 35k / output 8k tokens

작업 내용

  1. common/.claude/hooks 훅을 프로젝트에 적용
  2. convert_with_cropped_images.py에 2단(다단) → 1단 변환 기능 추가
  3. 샘플 PDF(MSWE3.0 Manual-06.pdf) 변환 테스트
  4. 히스토리 훅 미작동 원인 분석 및 수정

변경 파일

  • .claude/settings.json : 신규 생성 — UserPromptSubmit/PostToolUse/Stop 훅 등록
  • .claude/hooks/ : common에서 훅 파일 4개 복사 (session-context.sh, guard-history-fields.sh/.py, guard-history-reminder.sh)
  • .claude/hooks/session-context.sh : 히스토리 기록 지시 문구 추가 (stdout으로 Claude에게 전달)
  • convert_with_cropped_images.py : is_scanned_pdf(), reorder_text_by_columns() 함수 추가 — 스캔/텍스트 PDF 자동 판별 후 2단→1단 처리
  • CLAUDE.md : 신규 생성 — 히스토리 작성 규칙 및 템플릿 정의
  • docs/history/.gitkeep : 신규 생성

주요 결정사항

  • 스캔 PDF → marker-pdf surya 레이아웃 모델이 자동으로 2단 컬럼 검출+재정렬
  • 텍스트 PDF → PyMuPDF 블록 좌표 기반: 페이지 폭 절반 ±30px 기준으로 좌/우 컬럼 분리 후 좌→우 순 합산
  • 스캔 판정 기준: 샘플 3페이지에서 텍스트 50자 미만이면 스캔 PDF로 처리
  • 훅 실행 인터프리터: .venv/Scripts/python.exe 사용 (python/python3 명령은 다른 Python 환경을 가리킴)

문제 및 해결

  • 훅 미작동 원인: CLAUDE.md 없음 + session-context.sh에 작성 지시 없음 + guard-history-reminder.sh가 stderr 출력으로 Claude에게 전달 안 됨 → session-context.sh stdout에 지시 문구 추가 + CLAUDE.md 생성으로 해결
  • ModuleNotFoundError(marker): python/python3 명령이 marker 미설치 Python 가리킴 → .venv/Scripts/python.exe 직접 지정으로 해결
  • 샘플 PDF 1페이지, 이미지 기반: PyMuPDF 텍스트 블록 0개 확인 → marker-pdf OCR 경로로 처리, 정상 변환 완료