- 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>
2.0 KiB
2.0 KiB
이슈: #1 소요 시간: 40분 Context 사용량: input 35k / output 8k tokens
작업 내용
- common/.claude/hooks 훅을 프로젝트에 적용
- convert_with_cropped_images.py에 2단(다단) → 1단 변환 기능 추가
- 샘플 PDF(MSWE3.0 Manual-06.pdf) 변환 테스트
- 히스토리 훅 미작동 원인 분석 및 수정
변경 파일
.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 경로로 처리, 정상 변환 완료