Google Gemini 문서 OCR 평가 방법: Hugging Face 데이터셋 활용
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

구글 Gemini 모델의 문서 OCR 평가 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인공지능

대상자

  • 대상자: AI 개발자, 데이터 과학자, OCR 시스템 구축자
  • 난이도: 중급~고급 (API 사용, JSON 처리, 성능 평가 기법 필요)

핵심 요약

  • Gemini 1.5 Pro/Flash 모델다중 모달성(텍스트/이미지/비디오 처리)을 통해 구조화된 인вой스 데이터(invoice_number, total_amount 등)를 JSON 형식으로 추출
  • Hugging Face invoices-donut-data-v1 데이터셋을 사용해 Character Error Rate (CER)필드별 정확도를 평가
  • flatten_dict 함수를 통해 중첩된 JSON 구조평탄화하고, 필드별 CER 계산완전 일치율(Exact Match) 측정

섹션별 세부 요약

1. 인вой스 처리 문제와 OCR의 중요성

  • 문제: 수작업 인вой스 처리는 오류 발생 가능성시간 소모가 높음
  • OCR의 역할: 스캔된 문서를 구조화된 JSON 데이터로 변환, 필드별 추출(invoice_number, line_items 등)
  • Gemini의 차별점: 다중 모달성으로 시각적 레이아웃 + 텍스트 패턴 이해

2. 평가 데이터셋: `invoices-donut-data-v1`

  • 구성 요소:
  • image: 인вой스 이미지
  • ground_truth: 수작업으로 추출된 JSON 형식의 정답 데이터 (예: "gt_parse.invoice_number": "12345")
  • 사용 목적: Gemini의 OCR 정확도필드 일치율 평가 기준

3. Gemini API 통합 및 Python 코드

  • API 호출 예시:

```python

import google.generativeai as genai

model = genai.GenerativeModel('gemini-pro-vision')

prompt = "Extract invoice details in JSON format: {\"gt_parse\": {\"invoice_number\": \"\", ...}}"

response = model.generate_content([prompt, image])

```

  • 필수 구성 요소:
  • API_KEY 인증
  • JSON 형식의 필드 구조 명시 (예: line_items[0].description)

4. 평가 지표 및 코드 구현

  • CER 계산:

```python

from jiwer import cer

field_cer = cer(gt_val, pred_val) # 0.0은 완전 일치

```

  • 정확도 계산:

```python

acc = correct_matches / total_fields # 필드별 완전 일치 비율

```

  • flatten_dict 함수:

```python

def flatten_dict(d, parent_key='', sep='.'):

items = []

for k, v in d.items():

new_key = f"{parent_key}{sep}{k}" if parent_key else k

if isinstance(v, dict):

items.extend(flatten_dict(v, new_key, sep=sep).items())

elif isinstance(v, list):

for i, item in enumerate(v):

items.extend(flatten_dict(item, f"{new_key}[{i}]", sep=sep).items())

else:

items.append((new_key, str(v)))

return dict(items)

```

결론

  • Gemini 모델 평가 시:
  • 구조화된 JSON 형식의 프롬프트를 사용해 필드별 추출 지시
  • invoices-donut-data-v1 데이터셋으로 CER완전 일치율 측정
  • flatten_dict 함수를 통해 중첩된 JSON 구조평탄화해 평가
  • 정확도 개선: 필드별 CER 최소화완전 일치율 증대를 목표로 하며, API 호출 시 JSON 형식의 필드 명시 필요