단 한 번의 API 호출이 모든 것을 바꾸었다
요약
기존 OCR 방식과 달리 비전 모델(Vision Model)을 활용하여 복잡한 문서 데이터를 단 한 번의 API 호출로 구조화된 JSON 데이터로 변환하는 방법을 소개합니다. 문맥과 레이아웃을 이해하는 비전 모델이 정규 표현식이나 복잡한 전처리 없이도 높은 정확도를 보여줌을 입증합니다.
핵심 포인트
- 비전 모델은 단순 문자 인식을 넘어 문맥과 레이아웃을 이해함
- 복잡한 정규 표현식(Regex)과 파서 없이도 구조화된 데이터 추출 가능
- 취소선, 여백 메모, 약어 등 기존 OCR이 취약한 요소를 효과적으로 처리
- 전처리 과정을 생략하여 개발 복잡도를 획기적으로 낮춤
일요일 아침. 모든 것을 수동으로 타이핑하고 이번 주말을 마무리할 준비가 되어 있었습니다.
하지만 한 가지만 더 시도해보고 싶었습니다. 문자를 추출하기 위해 OCR을 사용하고, 그 문자들이 무엇을 의미하는지 파악하기 위해 코드를 작성하는 대신 — 그냥 이미지를 비전 모델 (Vision Model)에 보내서 문서에 무엇이라고 적혀 있는지 물어보면 어떨까요?
코드 (The Code)
import openai
import base64
import json
...
전처리 (Pre-processing) 없음. 정규 표현식 (Regex) 없음. 파서 (Parser) 없음. 단 한 번의 API 호출과 영어로 된 프롬프트 (Prompt)뿐입니다.
어제의 상황과 비교해 보세요.
결과물 (What Came Back)
Textract가 "2 1/4 c fleur, 1 tso bokrig sado"로 변환했던 문서가 다음과 같이 돌아왔습니다:
{
"title": "Chocolate Chip Cookies",
"items": [
...
첫 번째 시도였습니다. "c"는 "cups"가 되었습니다. "tsp"는 이미 표준이기 때문에 그대로 "tsp"로 유지되었습니다. 모델은 "(2 sticks)"를 버터에 대한 참고 사항으로 포착하여 올바른 필드에 넣었습니다.
이유 (Why)
OCR은 "이 이미지에 어떤 문자들이 있는가?"라고 묻습니다. 문자들이 악필인 경우 이는 어려운 문제입니다.
비전 모델 (Vision Model)은 "이 문서가 무엇을 말하고 있는가?"라고 묻습니다. 같은 질문처럼 들리겠지만, 그렇지 않습니다.
누군가의 손글씨를 읽는 방식을 생각해 보세요. 당신은 각 글자를 해독하여 모양으로부터 단어를 만들어내지 않습니다. 전체를 보고 문맥 (Context), 레이아웃 (Layout), 그리고 언어 지식을 바탕으로 그냥 알게 됩니다. 개별 글자가 엉망일 때조차 말이죠.
여기서 일어나고 있는 일이 바로 그것입니다. 모델은 더 나은 글자 인식기가 아닙니다. 그 문제를 완전히 건너뛰고 있는 것입니다.
OCR을 망가뜨렸던 요소들 (The Stuff That Broke OCR)
내 파서 (Parser)를 죽였던 취소선은 어떻게 되었을까요? 비전 모델은 취소선을 보고 이를 무시한 뒤, 수정된 내용을 읽었습니다. 이를 위한 코드는 없었습니다. 그냥 작동했습니다.
Textract가 본문과 섞어버렸던 여백의 메모는요? 보충 정보로 식별되었습니다. "notes" 필드에 들어갔습니다.
Tesseract가 쓰레기로 만들어버렸던 약어들은요? 문맥을 통해 해석되었습니다.
내가 200줄의 정규 표현식 (Regex)을 쏟아부었던 레이아웃은요? 스스로 파악했습니다. 제목은 "title"에, 항목은 "items"에, 단계는 "instructions"에 들어갔습니다.
세 가지 접근 방식, 동일한 문서 (Three Approaches, Same Document)
Tesseract:
Chocohite Ch p Cookes
2 114 cps flcar
1 tso bokrg sado
...
Textract (모든 전처리 및 파싱 이후):
Title: Chocokite Chtp Cookes (confidence: 0.67)
Items:
- 2 1/4 c fleur
...
Vision API:
{
"title": "Chocolate Chip Cookies",
"items": [
...
| 지표 (Metric) | Tesseract | Textract | Vision API |
|---|---|---|---|
| 문자 정확도 (Character accuracy) | 30-40% | 40-60% | 95%+ |
| ... |
비전 모델 (Vision model)의 실수는 미미합니다. "8"로 보일 수도 있는 "3" 같은 것 말이죠. 모델이 불확실하다고 표시한 약어 같은 것들입니다. 이런 것들은 몇 초 만에 잡아낼 수 있습니다. 다시 타이핑해야 하는 엉망진창인 출력값과는 다릅니다.
일요일 오후가 되자 모든 것이 처리되었습니다. 토요일 내내 실패하며 매달렸던 작업이, 접근 방식을 바꾼 후에는 단 몇 시간 만에 끝났습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기