학습 데이터셋 정제 작업 메모
작업 일자
2026년 1월 1일
작업 목적
PP-OCRv5 모델 학습을 위한 코드 문법 데이터셋 품질 검증 및 정제
1. 데이터셋 생성
1.1 코드 문법 데이터셋 생성
- 스크립트:
prepare_code_syntax_dataset.py - 생성 위치:
code_syntax_dataset/ - 데이터 규모:
- 학습 데이터: 25,000개 이미지 (
train_images/train_*.jpg) - 검증 데이터: 5,000개 이미지 (
val_images/val_*.jpg)
- 학습 데이터: 25,000개 이미지 (
- 이미지 사양:
- 크기: 48px (높이) x 640px (너비)
- 형식: JPG
- 코드 샘플: 150개 이상 (함수, 클래스, 조건문, 반복문, 예외 처리, 한글 주석 등)
1.2 데이터셋 배치
- 대상 폴더:
core/paddle_train/data/rec/codescan_paddle/ - 이미지 복사:
- 학습:
code_syntax_dataset/train_images/*.jpg→codescan_paddle/train_images/train/ - 검증:
code_syntax_dataset/val_images/*.jpg→codescan_paddle/train_images/val/
- 학습:
- 라벨 파일:
code_syntax_dataset/train_list.txt→codescan_paddle/train_label.txtcode_syntax_dataset/val_list.txt→codescan_paddle/val_label.txt
2. 데이터셋 검증
2.1 검증 스크립트
- 파일:
core/paddle_train/09_validate_dataset.py - 검증 항목:
- 공백문자 및 특수문자 확인
- 이미지 텍스트 잘림 확인
- 경로 일치 확인
- 학습 형식 호환성 확인
2.2 검증 결과
Train 데이터셋 (25,000개)
- ✅ 공백문자: 문제 없음
- ⚠️ 텍스트 잘림: 197개 (경고 수준, 학습에는 문제 없음)
- ⚠️ 작은 이미지: 9개 (최소 크기 이상)
- ✅ 경로 일치: 모든 이미지 파일 경로 일치
- ✅ 학습 형식: 모든 라인 유효
- ⚠️ 긴 텍스트: 3,716개 (20자 이상, 학습에는 문제 없음)
Val 데이터셋 (5,000개)
- ✅ 공백문자: 문제 없음
- ⚠️ 텍스트 잘림: 99개 (경고 수준, 학습에는 문제 없음)
- ✅ 경로 일치: 모든 이미지 파일 경로 일치 (수정 완료)
- ✅ 학습 형식: 모든 라인 유효
- ⚠️ 긴 텍스트: 759개 (20자 이상, 학습에는 문제 없음)
3. 발견된 문제 및 수정
3.1 텍스트 길이 초과 문제
- 문제: 일부 텍스트가 25자 초과 (Train: 1,516개, Val: 311개)
- 원인: 코드 문법 텍스트가 길어서 PaddleOCR 최대 길이(25자) 초과
- 해결:
10_fix_dataset_issues.py스크립트로 자동 잘림 처리 - 결과: 모든 텍스트가 25자 이하로 정제됨
3.2 경로 불일치 문제
- 문제:
- Train 라벨:
train_images/train/train_*.jpg형식이지만 실제 파일은word_*.png형식도 혼재 - Val 라벨:
train_images/train/val_*.jpg로 잘못된 경로
- Train 라벨:
- 해결:
code_syntax_dataset의 실제 이미지 파일을codescan_paddle로 복사11_fix_image_paths.py로 경로 매칭 시도- Val 라벨 경로를
train_images/train/val_→train_images/val/val_로 수정
- 결과: 모든 이미지 경로 일치 확인
3.3 공백문자 정리
- 처리 내용:
- 앞뒤 공백 제거
- 연속 공백을 단일 공백으로 변환
- 탭 문자 제거
- 줄바꿈 문자 제거
- 제어 문자 제거
- 결과: 공백문자 문제 없음
4. 사용된 스크립트
4.1 데이터셋 생성
prepare_code_syntax_dataset.py: 코드 문법 이미지 생성
4.2 데이터셋 검증
09_validate_dataset.py: 데이터셋 품질 검증
4.3 데이터셋 수정
10_fix_dataset_issues.py: 텍스트 길이 제한 및 공백 정리11_fix_image_paths.py: 이미지 경로 수정
5. 최종 데이터셋 상태
5.1 Train 데이터셋
- 파일 수: 25,000개
- 라벨 파일:
core/paddle_train/data/rec/codescan_paddle/train_label.txt - 이미지 경로:
core/paddle_train/data/rec/codescan_paddle/train_images/train/ - 상태: ✅ 학습 준비 완료
5.2 Val 데이터셋
- 파일 수: 5,000개
- 라벨 파일:
core/paddle_train/data/rec/codescan_paddle/val_label.txt - 이미지 경로:
core/paddle_train/data/rec/codescan_paddle/train_images/val/ - 상태: ✅ 학습 준비 완료
6. 학습 설정
6.1 학습 경로 분리
- PP-OCRv5 학습 경로:
output/rec_ke_v5_model(기존rec_ke_model과 분리) - Inference 경로:
output/rec_ke_v5_inference - 설정 파일:
core/paddle_train/configs/rec_ke_finetune.yml
6.2 데이터셋 경로 설정
Train:
dataset:
data_dir: C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle
label_file_list:
- C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle/train_label.txt # 25,000개 코드 문법 데이터셋
Eval:
dataset:
data_dir: C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle
label_file_list:
- C:/Pyg/Projects/semi/yuzyproject-aimodels/core/paddle_train/data/rec/codescan_paddle/val_label.txt # 5,000개 검증 데이터셋
7. 검증 체크리스트
✅ 완료된 항목
- 공백문자 확인 및 정리
- 이미지 텍스트 잘림 확인
- 경로 일치 확인 및 수정
- 학습 형식 호환성 확인
- 텍스트 길이 제한 (25자) 준수
- OCR 인덱스 문제 확인
- Train 데이터셋 25,000개 준비 완료
- Val 데이터셋 5,000개 준비 완료
- PP-OCRv5 학습 경로 분리 완료
⚠️ 경고 사항 (학습에는 문제 없음)
- 일부 텍스트가 이미지 경계에 닿아 잘릴 수 있음 (PaddleOCR이 자동 처리)
- 일부 텍스트가 20자 이상 (최대 25자 이하로 제한됨)
8. 다음 단계
- 학습 시작:
06_train_rec.bat실행 - 학습 모니터링:
output/rec_ke_v5_model/폴더에서 체크포인트 확인 - 모델 추출: 학습 완료 후
07_export_rec_inference.bat실행
9. 참고 사항
- 데이터셋 원본:
code_syntax_dataset/(백업용으로 유지) - 정제된 데이터셋:
core/paddle_train/data/rec/codescan_paddle/ - 검증 스크립트: 필요 시
09_validate_dataset.py재실행 가능 - 백업 파일: 라벨 파일 수정 시
.bak파일로 자동 백업됨
10. 작업 요약
| 항목 | 내용 |
|---|---|
| 생성된 데이터셋 | Train: 25,000개, Val: 5,000개 |
| 검증 결과 | 모든 검증 통과 ✅ |
| 수정된 문제 | 텍스트 길이 초과, 경로 불일치, 공백문자 |
| 최종 상태 | 학습 준비 완료 ✅ |
| 학습 경로 | output/rec_ke_v5_model (PP-OCRv5 전용) |
작성일: 2026년 1월 1일
작성자: AI Assistant
버전: 1.0
'3. 자습 & 메모(실전, 실습, 프로젝트) > 3-2 메모(실전, 프로젝트)' 카테고리의 다른 글
| [PaddleOCR] 학습용 REC 데이터셋 생성 스크립트 (0) | 2026.01.02 |
|---|---|
| [MEMO] PaddleOCR 코드 문법 인식 모델 학습 (0) | 2026.01.01 |
| [파인 튜닝] PaddleOCR 성능 분석 및 체크포인트 (0) | 2025.12.30 |
| [파인 튜닝] PaddleOCR Detection 모델 학습 가이드 (1) | 2025.12.30 |
| PaddleOCR Detection 파인튜닝 실전 기록 (중간 점검) (0) | 2025.12.28 |