데이터 시각화된 대시보드 이미지를 매번 일일이 확인하고 보고서를 작성하는 것은 번거로운 작업입니다. 이번 포스팅에서는 Google Colab Enterprise와 Gemini를 활용하여 Storage Bucket에 저장된 대시보드 이미지를 자동으로 분석하고, 그 결과를 바탕으로 현황 보고서를 생성하는 방법을 소개합니다.
예시 코드 전체도 맨 아래에 작성해두었으니 필요하신 분은 참고하시면 됩니다.

왜 Google Colab Enterprise인가?
Google Colab Enterprise는 Google Cloud Platform의 강력한 기능을 제공하면서도, 익숙한 Jupyter Notebook 환경을 제공합니다. 특히, 인증 절차 없이 Google Cloud 환경에 있는 Storage Bucket에 손쉽게 접근할 수 있다는 점이 큰 장점입니다.
구현 과정:
1. Storage Bucket 준비:
1-1. Bucket 생성
Google Cloud Storage에 대시보드 이미지를 저장할 Bucket을 생성합니다.

클라우드 스토리지에서 '버킷'을 눌러서 버킷 창을 열어주세요.

버킷 화면에서 만들기를 눌러서 쉽게 몇 번의 세팅만으로 버킷을 생성할 수 있습니다. 버킷 생성으로는 비용이 발생하지 않습니다. 그리고 대용량 파일을 올리지 않는 이상 비용도 별로 많이 나오지 않아요.
저는 이미 'bucket-for-anything'이라는 이름의 버킷을 만들었기 때문에 이것을 사용하도록 하겠습니다.
이제 분석에 필요한 대시보드 이미지를 업로드 해줍니다.

저는 bucket-for-anything 버킷 안에 images 라는 폴더를 만들어서 그 경로에 대시보드 이미지를 업로드 했습니다. 사용한 대시보드 이미지는 아래와 같습니다.

필요하신 분은 링크로 가셔서 다운받으시면 되겠습니다.
2. Gemini를 활용한 이미지 분석:
2-1. Colab에서 Python 코드를 사용하여 Bucket에 접근하고, 이미지 파일을 불러옵니다. 이 때 데이터 타입을 변환해야 하니 그 부분만 신경써주면 됩니다.
# GCS에서 파일 읽기 설정
bucket_name = 'bucket-for-anything/images'
file_name = 'dashboard_telecom_churn.png'
project_id = '프로젝트id를 적어주세요'
# GCS에서 이미지 파일 읽기
fs = gcsfs.GCSFileSystem(project=project_id)
with fs.open(f'{bucket_name}/{file_name}', 'rb') as f:
image_bytes = f.read()
# 이미지를 base64로 인코딩
image_b64 = base64.b64encode(image_bytes).decode('utf-8')
2-2. 불러온 이미지를 Gemini 모델에 입력하여 이미지 내의 핵심 정보를 추출합니다. 예를 들어, 차트의 트렌드, 특정 값, 이상 징후 등을 파악할 수 있습니다.
저는 프롬프트는 매우 간단하게 작성했습니다.
def generate(image):
# 이미지를 Part 객체로 변환
image_part = Part.from_data(
mime_type="image/jpeg", # 이미지 형식에 맞게 MIME 타입 지정
data=base64.b64decode(image)
)
# 프롬프트 작성
prompt = """이 대시보드에 있는 차트를 확인하고 주요 내용을 요약해서 레포트 형식으로 작성해줘.
단, 레포트는 한국어로 작성해야해."""
# 이미지와 텍스트를 함께 전달
responses = model.generate_content(
[
image_part,
Part.from_text(prompt)
],
generation_config=generation_config,
safety_settings=safety_settings,
stream=True,
)
# 응답 출력
for response in responses:
print(response.text, end="")
3. 보고서 생성:
Gemini의 분석 결과를 바탕으로, 텍스트 기반의 보고서를 생성합니다.
필요에 따라, 생성된 보고서를 Google Docs, Slack 등으로 전달할 수 있습니다.

코드 예시:
# 데이터 처리를 위한 라이브러리
import gcsfs
import base64
from vertexai.generative_models import GenerativeModel, Part, SafetySetting
import vertexai
# GCS에서 파일 읽기 설정
bucket_name = 'bucket-for-anything/images'
file_name = 'dashboard_telecom_churn.png'
project_id = '프로젝트id를 입력해주세요'
# GCS에서 이미지 파일 읽기
fs = gcsfs.GCSFileSystem(project=project_id)
with fs.open(f'{bucket_name}/{file_name}', 'rb') as f:
image_bytes = f.read()
# 이미지를 base64로 인코딩
image_b64 = base64.b64encode(image_bytes).decode('utf-8')
# Vertex AI Gemini 설정
import vertexai
from vertexai.generative_models import GenerativeModel, SafetySetting, Part
# Vertex AI 초기화
vertexai.init(project=project_id, location="us-central1")
model = GenerativeModel("gemini-1.5-flash-002")
# 생성 설정
generation_config = {
"max_output_tokens": 8192,
"temperature": 1,
"top_p": 0.95,
}
# 안전 설정
safety_settings = [
SafetySetting(
category=SafetySetting.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
threshold=SafetySetting.HarmBlockThreshold.OFF
),
SafetySetting(
category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
threshold=SafetySetting.HarmBlockThreshold.OFF
),
SafetySetting(
category=SafetySetting.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
threshold=SafetySetting.HarmBlockThreshold.OFF
),
SafetySetting(
category=SafetySetting.HarmCategory.HARM_CATEGORY_HARASSMENT,
threshold=SafetySetting.HarmBlockThreshold.OFF
),
]
def generate(image):
# 이미지를 Part 객체로 변환
image_part = Part.from_data(
mime_type="image/jpeg", # 이미지 형식에 맞게 MIME 타입 지정
data=base64.b64decode(image)
)
# 프롬프트 작성
prompt = """이 대시보드에 있는 차트를 확인하고 주요 내용을 요약해서 레포트 형식으로 작성해줘.
단, 레포트는 한국어로 작성해야해."""
# 이미지와 텍스트를 함께 전달
responses = model.generate_content(
[
image_part,
Part.from_text(prompt)
],
generation_config=generation_config,
safety_settings=safety_settings,
stream=True,
)
# 응답 출력
for response in responses:
print(response.text, end="")
generate(image_b64)
마무리:
Google Colab Enterprise와 Gemini를 활용하면, 복잡한 데이터 분석 작업을 간단하게 수행할 수 있습니다. 이번 포스팅을 통해, 여러분도 손쉽게 대시보드 이미지 분석 시스템을 구축해 보시기 바랍니다.
'워크시트' 카테고리의 다른 글
Google AI Studio 에서 그라운딩(Grounding) 활용하기 (0) | 2024.12.01 |
---|---|
[GCP] Vertex AI Workbench 에서 주피터노트북 사용하기 (3) | 2024.11.03 |
정형 데이터를 다루는 머신러닝 문제해결 패턴 (0) | 2022.09.21 |
품질이란? (0) | 2022.07.29 |
Mac M1에서 Mongo DB 설치하기 (using brew) (0) | 2022.07.04 |