Files
guitar_score/docs/devlog/entries/20260329-002.md

1.9 KiB

ScoreExtractor 타일링 구조 변경 및 수많은 디버그/OCR 시행착오 보존

  • 시간: 2026-03-29 17:55
  • Commit: 추후 삽입
  • Vikunja: #560 연장선 마무리

결정 사항 및 시행착오 (Lessons Learned)

  1. OCR-First 방식의 실패 (마디 번호 읽기)

    • 스크롤 영상의 특성상 마디 번호는 화면 왼쪽 (고정)이 아니라 악보와 함께 이동하며 위치가 상시 변합니다.
    • 126프레임 중 6개(4.8%)만 인식되며 숫자가 왜곡(7→10→71→101)되어 중복 제거의 기준으로 사용할 수 없었습니다.
    • 따라서 이 방식은 최종 폐기되었고 (관련 스크립트 verify_ocr.py, test_number_band.py 등 보존) "Tracker를 통한 물리 구조 병합 후, 마디선을 기준으로 자르는(Tile) 방식"을 유지하기로 결정했습니다.
  2. ScoreExtractor (Object-Oriented) 하이브리드 타일링 도입

    • 기존에는 스크롤된 5만 픽셀 이상의 긴 파노라마를 만든 뒤 A4 사이즈로 자르려고 했습니다.
    • 그러다 보니 오차 누적으로 악보 중앙부가 엉뚱하게 잘리는 현상(Decapitation_mid)이 지속되었습니다.
    • TemporalTracker가 정지된 슈퍼블록 단위까지만 자르고, 그 블록 단위에서 ScoreExtractor가 1D matchTemplate 및 마디(Bar) 단위 분절을 수행하도록 구조를 개편(patch_final_holy_matrix.py의 아이디어 적용)하여 A4 줄바꿈이 완벽해졌습니다.
  3. 작업 공간(Workspace) 위생 개선

    • 개발 중 양산된 수많은 테스트용/일회성 덤프 스크립트(patch_*.py, debug_*.py, dump_*.py 등 약 30여 개)와 산출물 이미지를 scripts/debug/ 폴더로 일괄 이동하여 프로젝트 Root를 깨끗하게 비웠습니다. (단, 앞으로 진행될 전체 파이프라인 테스트용 test_pipeline.py 등 핵심 유틸은 복구)