Grimoire 활용해서 PDF 시각화 생성 프로그램 만들기

정기님이 단톡방에서 GPTs를 하나 추천주셨는데요 바로 ‘Grimoire’였습니다.
(감사합니다 🙏🏻)

https://chat.openai.com/g/g-n7Rs0IK86-grimoire

이 GPTs를 활용해서 지금까지 배운 파이썬으로 프로그램을 만들 수 있는데, 뭐부터 만들어야할 지 모르는게 가장 큰 문제였습니다 😭

그래서 지난번 과제였던 'pyautogui' 모듈로 무작정 물어보면서 시작하기로 했습니다. 😎

그랬더니 너무나 친절하게 제가 생각지도 못했던 예시를 들어주는 것이었습니다.음 그런데 아래 보니까 더 발전된 프로젝트 아이디어를 준다고 해서 무작정 ‘D’를 입력해봤습니다.

이제 제가 만들고 싶은게 생겼습니다! 바로 “자동 문서 처리 시스템”이었습니다! 😅

음 근데 뭐…뭐..부터 해야 될까….? 🤔

추가로 제안해준 코드를 실행했는데 오류가 발생 하였지만 당황하지 않고 오류를 그대로 물어봤습니다.

이제 제가 제공한 파일을 가지고 추출한 텍스트를 그대로 제공하여 Grimoire에게 다음 단계 제작을 요청하였습니다. 🏃🏻

import PyPDF2
import re
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

# PDF 텍스트 데이터를 저장할 변수 초기화
data = ""

# PDF 파일 읽기
with open('/Users/yujaeheon/Downloads/report.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # PDF 문서의 총 페이지 수 확인
    num_pages = len(reader.pages)
    
    # 각 페이지에서 텍스트 추출 및 data 변수에 추가
    for page_num in range(num_pages):
        page = reader.pages[page_num]
        text = page.extract_text()
        data += text + "\n\n"  # 페이지별로 텍스트를 data 변수에 추가, 페이지 구분을 위해 두 개의 줄바꿈 추가

# 트래픽 소스와 국가별 사용자 수 추출
traffic_sources = re.findall(r"(Organic Search|Direct|Referral|Organic Social|Unassigned) (\d+\.?\d*)", data)
country_users = re.findall(r"(South Korea|United States|China|Japan|Singapore|Vietnam|Germany) (\d+)", data)

# 시각화를 위한 데이터 준비
sources = [source for source, count in traffic_sources]
source_counts = [float(count) for source, count in traffic_sources]

countries = [country for country, users in country_users]
user_counts = [int(users) for country, users in country_users]

# 시각화 및 PDF로 출력
with PdfPages('/Users/yujaeheon/Downloads/analysis_report.pdf') as pdf:
    # 트래픽 소스 시각화
    plt.figure(figsize=(10, 6))
    plt.bar(sources, source_counts, color='skyblue')
    plt.title('Traffic Sources')
    plt.xlabel('Source')
    plt.ylabel('Count')
    pdf.savefig()  # 시각화 결과를 PDF에 저장
    plt.close()
    
    # 국가별 사용자 수 시각화
    plt.figure(figsize=(10, 6))
    plt.bar(countries, user_counts, color='lightgreen')
    plt.title('Users by Country')
    plt.xlabel('Country')
    plt.ylabel('Number of Users')
    pdf.savefig()  # 시각화 결과를 PDF에 저장
    plt.close()
    
    # 리포트 생성 및 추가
    report = "SPC 그룹 웹사이트 분석 보고서\n" + "-"*40 + "\n"
    report += "트래픽 소스:\n"
    for source, count in traffic_sources:
        report += f"{source}: {count}회\n"
    report += "\n국가별 사용자 수:\n"
    for country, users in country_users:
        report += f"{country}: {users}명\n"
    report += "-"*40 + "\n분석 완료."
    
    # PDF에 텍스트 추가 (추가적인 라이브러리 필요할 수 있음)
    # pdf.text(10, 10, report)  # PDF 라이브러리에 따라 이 코드는 달라질 수 있습니다.

짜잔! 😊

제가 원하던데로 시각화까지 해서 파일로 저장이 되었습니다.


자 이제 남은 4단계에서 6단계까지는 다음 숙제로 준비하겠습니다. 😆

5
3개의 답글

(채용) 유튜브 PD, 마케터, AI엔지니어, 디자이너

지피터스의 콘텐츠 플라이휠로 고속 성장할 팀원을 찾습니다!

👉 이 게시글도 읽어보세요