본문 바로가기
시뮬레이션 기반 사이언스

[업무 자동화 끝판왕] 파이썬(python-pptx)으로 수십 장의 랩미팅(Lab Meeting) PPT 슬라이드 1초 만에 자동 생성하기

by 지식보따리상상 2026. 4. 30.

[업무 자동화 끝판왕] 파이썬(python-pptx)으로 수십 장의 랩미팅(Lab Meeting) PPT 슬라이드 1초 만에 자동 생성하기

우리는 지난 시리즈들을 통해 파이썬(Python)으로 데이터를 파싱하고, Pandas로 피벗테이블을 만들며, Matplotlib으로 수십 개의 고해상도 그래프를 그리는 완벽한 데이터 분석 파이프라인을 구축했습니다. 하지만 금요일 오후, 랩미팅(Lab Meeting)이나 부서 주간 회의를 앞두고 있다면 어떨까요? 파이썬이 바탕화면 폴더에 예쁘게 그려놓은 50개의 그래프 이미지(.png)들을 하나하나 마우스로 끌어다가 파워포인트(PPT) 슬라이드에 얹고, 크기를 줄이고, 가운데 정렬을 맞추고, 파일명을 제목으로 타이핑하는 끔찍한 수작업이 여러분을 기다리고 있습니다. 그래프의 축 설정이 잘못되어 코드를 다시 돌려야 한다면 이 50번의 복사 붙여넣기 작업도 처음부터 다시 해야 합니다. 이번 포스팅에서는 파이썬의 'python-pptx' 라이브러리를 활용하여, 폴더 안의 이미지와 데이터를 읽어 들여 발표용 파워포인트 파일을 1초 만에 자동 생성하는 '퇴근 시간 단축의 마법'을 소개합니다.


1. PPT 수작업의 늪과 python-pptx 라이브러리의 구원

연구실의 많은 대학원생들이 데이터 분석 자체보다 발표 자료(Presentation)의 서식을 맞추는 데 더 많은 시간을 허비합니다. Microsoft PowerPoint는 훌륭한 시각화 도구이지만, 대량의 데이터를 반복적으로 다루기에는 치명적인 단점이 있습니다. 슬라이드가 넘어갈 때마다 미세하게 그래프의 위치가 틀어지거나 크기가 달라져 발표의 전문성이 떨어져 보이는 일도 비일비재합니다.

python-pptx는 파이썬 코드를 통해 파워포인트 파일(.pptx)을 바닥부터 생성하고 수정할 수 있게 해주는 아주 강력한 오픈소스 라이브러리입니다. 이 라이브러리를 사용하면 "새 슬라이드를 추가해", "제목 텍스트 박스에 이 글자를 넣어", "정중앙 좌표에 이 그림을 가로 15cm 크기로 삽입해"라는 명령을 코드로 지시할 수 있습니다. 수작업 시 발생하는 1픽셀의 오차도 완벽하게 제거되며, 데이터가 업데이트되었을 때 스크립트 실행 버튼 한 번이면 전체 PPT가 최신화된 상태로 새롭게 튀어나옵니다.


2. 슬라이드 레이아웃(Layout)과 좌표계(Inches)의 이해

코드를 작성하기 전 두 가지 개념을 알아야 합니다. 첫째는 '슬라이드 레이아웃'입니다. PPT에서 새 슬라이드를 추가할 때 '제목 슬라이드', '제목 및 내용', '빈 화면' 등의 양식을 고르듯이, 파이썬에서도 0번부터 10번까지 번호가 매겨진 레이아웃을 지정해야 합니다. 일반적으로 그래프를 꽉 차게 넣을 때는 제목만 있는 레이아웃(5번)이나 아예 빈 슬라이드(6번)를 주로 사용합니다.

둘째는 파워포인트 내부의 '좌표계'입니다. python-pptx는 픽셀(Pixel) 대신 인치(Inches)나 센티미터(Cm) 단위를 사용하여 도형과 이미지를 배치합니다. 왼쪽 위 모서리를 (0, 0) 기준으로 삼아 오른쪽(Left)으로 얼마, 아래(Top)로 얼만큼 떨어진 곳에 이미지를 놓을지 결정합니다.


3. 실전 파이썬 코드: 폴더 내 50개 그래프를 PPT 슬라이드로 일괄 변환

아래 코드는 ./graphs/ 폴더에 저장된 수십 개의 이미지 파일(.png)을 불러와, 파일명을 슬라이드 제목으로 적어주고, 그래프 이미지를 슬라이드 중앙에 알맞은 크기로 배치하여 Lab_Meeting_Report.pptx 파일로 완성해 내는 실전 스크립트입니다. (터미널에서 pip install python-pptx를 먼저 실행해 주세요.)



from pptx import Presentation
from pptx.util import Inches, Pt
import glob
import os

# 1. 새로운 PPT 객체 생성
prs = Presentation()

# (선택) 슬라이드 비율을 16:9 와이드스크린으로 설정 (기본값은 4:3)
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)

# 2. 삽입할 그래프 이미지들이 있는 폴더 탐색
# glob 모듈을 이용해 png 파일 리스트를 가져옴
image_folder = './graphs/*.png'
image_files = glob.glob(image_folder)

print(f"총 {len(image_files)}개의 그래프 이미지를 PPT로 변환합니다...")

# 3. 반복문을 돌며 슬라이드 생성 및 이미지 삽입
for img_path in image_files:
    # 파일명 추출 (예: 'bandgap_result.png' -> 'bandgap_result')
    base_name = os.path.basename(img_path).replace('.png', '')
    
    # 레이아웃 5번(제목만 있는 슬라이드 양식) 선택 및 슬라이드 추가
    slide_layout = prs.slide_layouts[5]
    slide = prs.slides.add_slide(slide_layout)
    
    # 슬라이드 제목 입력
    title_shape = slide.shapes.title
    title_shape.text = f"Simulation Result: {base_name}"
    
    # 4. 이미지 삽입을 위한 좌표 및 크기 계산 (Inches 단위)
    # 16:9 비율(가로 13.3, 세로 7.5) 기준 중앙 배치
    img_width = Inches(10) # 이미지 가로 크기 지정
    
    # 가로 중앙 정렬: (슬라이드 전체 너비 - 이미지 너비) / 2
    left = (prs.slide_width - img_width) / 2
    # 세로 위치 지정 (제목 아래에 배치)
    top = Inches(2.0)
    
    # 이미지 삽입
    slide.shapes.add_picture(img_path, left, top, width=img_width)
    print(f"[{base_name}] 슬라이드 추가 완료")

# 5. 완성된 PPT 파일 저장
output_file = 'Lab_Meeting_Report.pptx'
prs.save(output_file)

print(f"\n작업 완료! '{output_file}'이 성공적으로 생성되었습니다.")

4. 텍스트 박스와 통계 표(Table) 자동화로의 확장

이 스크립트는 이미지 삽입을 보여주는 가장 기본적인 뼈대입니다. python-pptx의 진가는 이전 포스팅에서 배운 Pandas와 결합했을 때 나타납니다. 엑셀로 뽑아낸 통계 표의 숫자를 그대로 읽어와 파워포인트 슬라이드 내부에 진짜 PPT 표(Table) 객체로 그려낼 수 있습니다. 또한, 슬라이드 하단에 텍스트 박스(Text Box)를 코드로 생성하여 "p-value가 0.05 미만이므로 통계적으로 유의미함"이라는 코멘트까지 파이썬이 판단하여 자동으로 적게 만들 수 있습니다.

즉, 데이터를 분석하는 코드가 끝남과 동시에 여러분이 상사나 교수님께 보고할 발표 자료의 초안이 100% 완벽한 서식으로 준비되는 것입니다.


결론: PPT 수작업에서 벗어나 '진짜 연구'에 집중하세요

컴퓨터가 가장 잘하는 일은 '반복과 정렬'이고, 인간이 가장 잘하는 일은 '해석과 설득'입니다. 파워포인트에 이미지를 붙여넣고 줄을 맞추는 일은 인간의 소중한 지적 에너지를 낭비하는 행위입니다. 오늘 소개한 파이썬 PPT 자동화 스크립트를 여러분의 랩미팅 준비 워크플로우에 도입해 보십시오. 매주 목요일 밤마다 모니터 앞에서 마우스를 딸깍거리던 고통의 시간이 사라지고, 도출된 그래프가 의미하는 물리화학적 메커니즘을 깊이 있게 고민할 수 있는 '연구자 본연의 시간'을 되찾게 될 것입니다.