정기님이 단톡방에서 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단계까지는 다음 숙제로 준비하겠습니다. 😆