이번 글은 기술팀 동료가 아니라 현업 담당자분들께 쓰는 글이에요. "멀티모달"이라는 말이 자꾸 나오는데 그게 왜 문서 처리에 필요한지 설명해 달라는 요청을 받았거든요. 수식 없이 가 볼게요.
텍스트만 읽으면 뭐가 문제냐면요
문서에서 글자만 뽑아서 언어 모델에 넣으면 이런 걸 놓쳐요.
- 표. 글자만 뽑으면 "구분 수량 금액 A 10 500 B 20 800" 이렇게 한 줄이 돼요. 어떤 숫자가 어떤 열인지 사라져요.
- 도장과 서명. 글자가 아니에요. 있는지 없는지, 어디에 찍혔는지가 중요한데 텍스트에는 안 나와요.
- 체크박스. "☑ 동의" 와 "☐ 동의" 는 글자로는 같아요.
- 위치. 표제란 안의 숫자와 본문의 숫자는 뜻이 달라요. 글자만 보면 둘 다 그냥 숫자예요.
- 레이아웃. 두 단으로 된 문서를 한 줄씩 읽으면 왼쪽 단과 오른쪽 단 문장이 섞여요.
사람은 문서를 "보면서" 읽어요. 어디에 뭐가 있는지 보고, 그 다음에 글자를 읽죠. 텍스트만 다루는 AI는 눈 감고 글자만 듣는 셈이에요.
멀티모달은 "보면서 읽는" 거예요
멀티모달 모델은 이미지와 글자를 같이 입력받아요. 동작 원리를 아주 단순화하면 이래요.
- 문서 이미지를 작은 조각(패치)으로 잘라요. 바둑판처럼요.
- 각 조각을 숫자 벡터로 바꿔요. "이 조각은 선이 많다", "이 조각은 빨간 동그라미다" 같은 정보가 담겨요.
- 글자도 똑같이 벡터로 바꿔요.
- 이 벡터들을 한 모델이 같이 봐요. 그래서 "이 글자 옆에 빨간 동그라미(도장)가 있다", "이 숫자는 표의 세 번째 열 안에 있다"를 알 수 있어요.
핵심은 4번이에요. 이미지 정보와 글자 정보가 같은 공간에서 섞여서 처리돼요. 그래서 "날인 여부"를 물으면 글자가 아닌 도장을 보고 답할 수 있어요.
저희 제품에서는 어떻게 쓰냐면요
저희는 하나의 거대한 멀티모달 모델에 다 맡기지는 않아요. 지난주 글에서 쓴 것처럼, 역할을 나눠요.
- 보는 모델(비전): 어디에 표가 있고, 표 안에 칸이 어떻게 나뉘고, 도장이 어디 있고, 풍선 번호가 어디 있는지 찾아요. 결과는 좌표예요.
- 읽는 모델(인식): 찾은 칸 안의 글자를 읽어요.
- 이해하는 모델(언어): 읽은 내용을 요약하거나, 질문에 답하거나, 필드로 정리해요.
이렇게 나누면 각 모델이 작고 빨라지고, 무엇보다 좌표가 나와요. "이 값은 여기서 읽었어요"를 보여 줄 수 있는 건 보는 모델이 좌표를 내기 때문이에요. 하나의 거대 모델에 이미지를 넣고 답만 받으면 좌표가 없어서, 맞는지 확인하려면 사람이 문서를 처음부터 봐야 해요.
"그럼 그냥 큰 모델에 사진 넣으면 되지 않나요?"
많이 받는 질문이에요. 되긴 해요. 그런데 세 가지 문제가 있어요.
- 틀렸을 때 어디가 틀렸는지 몰라요. 좌표가 없으니까요.
- 흐린 글자를 그럴듯하게 지어내요. 큰 모델은 "모른다"보다 "아마 이거"를 잘해요. 금액에서 이러면 큰일이에요.
- 문서가 밖으로 나가요. 폐쇄망에선 못 써요.
그래서 저희는 작은 모델들을 조합하고, 꼭 필요한 데만 큰 모델을 써요.
담당자분이 기억하시면 좋은 것
- 문서 AI 제품을 보실 때 "이 값 어디서 읽었어요?" 를 물어보세요. 원본 위에 표시가 뜨면 보는 모델이 제대로 있는 거예요.
- "흐린 글자는 어떻게 처리해요?" 도 물어보세요. "모른다고 표시한다"가 좋은 답이에요.
- 도장, 서명, 체크박스를 다룬다고 하면 그게 멀티모달이 필요한 이유예요.
다음 주는 계약서 데이터 추출을 도입할 때 보셔야 할 기준이에요. 추출 정확도만 보면 놓치는 것들이요.