> >
Post

[Internship] - 6주차

[Internship] - 6주차 회고

[Internship] - 6주차

들어가며

스타트업 인턴십 6주차에 대한 회고


1. OCR

Easy OCR 을 사용해 Image to Text 변환을 담당하며 배운점을 요약 정리한 내용

ocr OCR

OCR (Optical Character Recognition)

  • 이미지에서 텍스트를 추출하는 컴퓨터 비전 기술
  • 전처리 → 텍스트 감지 → 문자 인식 → 후처리 파이프라인으로 구성
  • 다양한 언어와 폰트에 대한 인식 성능이 핵심
  • 오픈소스로 사용 가능한 OCR은 여러종류가 있는데 easyocr, paddle 등이 대표적이다.
  • 아래는 EasyOCR의 예제다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import cv2
import numpy as np
import easyocr
import matplotlib.pyplot as plt
import glob
import os
import warnings
from PIL import ImageFont, ImageDraw, Image
warnings.filterwarnings("ignore")

data_path = "your_path"
image_files = sorted(glob.glob(os.path.join(data_path, "*.png")))

reader = easyocr.Reader(['ko', 'en'])
fig, axes = plt.subplots(1, 2, figsize=(14, 6))

for idx, image_path in enumerate(image_files):
    image = cv2.imread(image_path)
    image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    results = reader.readtext(image)
    pil_image = Image.fromarray(image_rgb)
    draw = ImageDraw.Draw(pil_image)

    for i in results:
        x = i[0][0][0]
        y = i[0][0][1]
        w = i[0][1][0] - i[0][0][0]
        h = i[0][2][1] - i[0][1][1]

        draw.rectangle(((x, y), (x+w, y+h)), outline="blue", width=1)
        draw.text((int((x+x+w)/2), y-20), str(i[1]), fill="red")

    axes[idx].imshow(pil_image)
    axes[idx].set_title(f"Image {idx+1}")
    axes[idx].axis('off')

plt.tight_layout()
plt.show()


2. Prompt Engineering

Prompt Engineering을 통해 LLM 최적화를 담당하며 배운점을 요약 정리한 내용

prompt_engineering Prompt Engineering

Prompt Engineering

  • Large Language Model의 성능을 극대화하기 위한 입력 설계 기법
  • 명확한 지시사항적절한 컨텍스트 제공을 통한 품질 향상
  • 모델 재학습 없이 프롬프트만으로 성능 개선 가능
  • 비용 효율적이면서도 빠른 실험이 가능한 접근법
  • 아래는 주요 Prompt 기법들이다.

Zero-shot Prompting

  • 예시 없이 직접적인 지시사항만 제공하는 기법
  • 간단한 작업에 효과적이며 토큰 사용량이 적음
  • 명확하고 구체적인 지시사항이 핵심
1
2
3
4
5
6
7
# Zero-shot 예시
prompt = """
다음 텍스트에서 핵심 키워드를 3개 추출해주세요.

텍스트: {input_text}
키워드:
"""

Few-shot Prompting

  • 소수의 예시를 포함하여 패턴 학습을 유도하는 기법
  • 복잡한 작업의 정확도 대폭 향상
  • 예시의 품질과 다양성이 성능에 직접적 영향
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Few-shot 예시
few_shot_prompt = """
다음은 텍스트 분류 예시입니다:

입력: "오늘 날씨가 정말 좋네요!"
출력: 긍정

입력: "비가 와서 기분이 우울해요."
출력: 부정

입력: "내일 회의가 있습니다."
출력: 중립

입력: "{user_input}"
출력:
"""

Role Prompting

  • 특정 역할을 부여하여 전문성 향상
  • 도메인별 전문 지식 활용 극대화
  • 일관된 응답 스타일 유지
1
2
3
4
5
6
7
8
9
10
11
12
# Role Prompting 예시
role_prompt = """
당신은 10년 경력의 데이터 분석 전문가입니다.
다음 데이터를 분석하고 인사이트를 제공해주세요:

데이터: {data}

분석 결과:
1. 주요 트렌드:
2. 이상 패턴:
3. 개선 제안:
"""



회고

인턴십 6주차를 진행하며 얻은 경험과 인사이트에 대한 내용을 다룬다.


Tech

System Prompt

역할 정의, 출력 형식, 제약사항 등을 명확히 설정하는 것이 LLM 성능에 직접적 영향을 미친다.
특히 프롬프트 하나 바뀌는 것만으로도 결과가 완전히 달라지는 경우가 많았고 일관성 있는 응답
얻기 위해서는 세심한 조정이 필요했다.


Prompt Engineering의 Trade-off

  • System Prompt가 길어지면 → 지시사항 명확성 향상, RAG 검색 성능 저하
  • 역할을 구체화하면 → 전문성 향상, 유연성 저하
  • 예시를 많이 주면 → 패턴 학습 향상, 편향성 위험 증가
  • 제약조건을 추가하면 → 안정성 향상, 창의성 제한
This post is licensed under CC BY 4.0 by the author.