- Published on
비전과 멀티모달: 이미지 이해, OCR, VLM 고르기
- Authors

- Name
- Youngju Kim
- @fjvbn20031
- 비전 모델은 하나의 범주가 아닙니다
- 이미지를 이해하는 대화형 VLM
- 작은 VLM과 온디바이스
- OCR 전용 모델은 VLM과 다른 물건입니다
- 문서 구조화는 텍스트 추출과 다릅니다
- 이미지 검색에는 임베딩 모델이 따로 있습니다
- 카드가 명시한 금지 용도와 한계
- 코드 예시
- 고를 때의 순서
- 직접 해보기
- 시리즈 안내
- 참고 자료
모델 정보는 2026-08-12에 Hugging Face 페이지에서 직접 확인했습니다. 모델 카드와 라이선스는 바뀔 수 있으니 사용 전 원본을 다시 확인하세요.
비전 모델은 하나의 범주가 아닙니다
이미지를 다루는 오픈 모델을 찾으면 성격이 아주 다른 것들이 한 목록에 섞여 나옵니다. 실무에서는 최소 네 갈래로 나눠야 선택이 가능해집니다. 이미지를 보고 대화하는 VLM, 글자만 정확히 읽는 OCR 전용 모델, 문서의 구조까지 복원하는 모델, 그리고 이미지를 벡터로 만들어 검색에 쓰는 임베딩 모델입니다.
이 넷은 서로를 대체하지 않습니다. VLM에게 영수증을 읽히면 대체로 읽기는 하지만, 금액 칸을 놓쳤는지 확인할 방법이 없습니다. OCR 전용 모델은 정확히 읽지만 이 영수증이 승인 가능한지는 판단하지 않습니다.
이미지를 이해하는 대화형 VLM
| 저장소 | license | 크기 | 컨텍스트 | 카드에 적힌 특징 |
|---|---|---|---|---|
Qwen/Qwen2.5-VL-7B-Instruct | apache-2.0 | 7B | 32,768, 긴 영상 입력 시 64k까지 확장 | 1시간 넘는 영상 이해, 문서 구조화 출력, 경계 상자와 점으로 위치 지정 |
google/gemma-3-4b-it | gemma | 4B | 128K | 이미지와 텍스트 입력, 140개 이상 언어 |
google/gemma-3-27b-it | gemma | 27B | 입력 128K, 출력 8,192 | 조건 동의 후 접근 |
openbmb/MiniCPM-V-2_6 | 코드 Apache-2.0, 모델은 별도 MiniCPM Model License | 8B | 명시되어 있지 않음 | 임의 종횡비와 최대 180만 화소, 다중 이미지 대화, 영상 이해 |
Qwen/Qwen2.5-VL-7B-Instruct 카드는 청구서·양식·표의 내용을 구조화된 출력으로 만들 수 있다고 적고, 이미지 안 대상의 위치를 경계 상자나 점으로 지정할 수 있다고 밝힙니다. 자동화 파이프라인에서는 이 위치 지정 기능이 있고 없고가 결정적입니다. 값만 뽑아 주는 모델은 사람이 원본과 대조해야 하지만, 좌표까지 주는 모델은 검토 화면에서 바로 해당 위치를 표시할 수 있습니다.
같은 카드는 32,768 토큰을 넘는 입력에 YaRN 확장 기법을 쓰면 시간적·공간적 위치 지정 성능에 큰 영향을 주므로 권장하지 않는다고 적습니다. 긴 영상과 정밀한 위치 지정을 동시에 요구하면 안 된다는 뜻입니다.
openbmb/MiniCPM-V-2_6은 임의 종횡비와 최대 180만 화소 이미지를 처리한다고 적습니다. 고정 해상도로 리사이즈하는 모델과 달리 세로로 긴 스크린숏이나 가로로 넓은 도면을 잘라내지 않는다는 뜻이라, 스크린숏 분석 같은 용도에서 차이가 납니다.
작은 VLM과 온디바이스
HuggingFaceTB/SmolVLM-Instruct는 Apache 2.0에 20억 파라미터이고, 평가 표에 필요한 최소 GPU RAM이 5.02GB로 적혀 있습니다. 이 숫자가 카드에 있다는 것 자체가 유용합니다. 대부분의 VLM 카드는 메모리 요구를 적지 않아서 직접 재 봐야 하기 때문입니다.
openbmb/MiniCPM-V-2_6 카드는 아이패드 같은 단말 기기에 배포할 수 있다고 적습니다. 온디바이스 비전을 검토한다면 이 두 저장소가 출발점이 됩니다.
OCR 전용 모델은 VLM과 다른 물건입니다
stepfun-ai/GOT-OCR2_0은 apache-2.0에 0.7B 규모이고, 카드는 여러 OCR 모드를 나열합니다. 평문 OCR, 서식을 살린 OCR, 상자나 색으로 영역을 지정하는 세분화 OCR, 다중 크롭 OCR이 있고, 서식 결과는 HTML로 렌더링할 수 있다고 적습니다.
여기서 실무적으로 중요한 것은 세분화 OCR입니다. 양식이 정해진 문서라면 페이지 전체를 읽고 파싱하는 대신 좌표로 필요한 칸만 읽을 수 있고, 그러면 다른 칸의 오독이 결과에 섞이지 않습니다. 카드에 한계 항목은 명시되어 있지 않습니다.
microsoft/Florence-2-large는 mit에 0.77B이고, 프롬프트 토큰으로 작업을 지정하는 구조입니다. 카드는 <CAPTION>, <DETAILED_CAPTION>, <OD>, <OCR>, <OCR_WITH_REGION>, <DENSE_REGION_CAPTION>, <REGION_PROPOSAL>, <CAPTION_TO_PHRASE_GROUNDING> 같은 토큰을 나열합니다. 사용 예제에는 trust_remote_code=True가 필요하다고 적혀 있고, 이 저장소는 4k 컨텍스트로 계속 사전학습한 버전인데 0.1B 표본만 쓰여서 충분히 학습되지 않았을 수 있다고 카드 스스로 적습니다.
문서 구조화는 텍스트 추출과 다릅니다
계약서나 논문을 다룰 때 필요한 것은 글자가 아니라 구조입니다. 표가 표라는 사실, 어느 문단이 어느 제목 아래인지, 수식이 수식이라는 사실이 남아야 합니다.
docling-project/SmolDocling-256M-preview는 cdla-permissive-2.0에 0.3B 규모이고, DocTags라는 출력 형식을 쓴다고 적혀 있습니다. 카드가 나열하는 기능은 OCR, 경계 상자를 포함한 레이아웃과 위치 지정, 코드 인식, 수식 인식, 차트 인식, 헤더를 포함한 표 인식, 도형 분류, 캡션 대응, 목록 묶음, 전체 페이지 변환입니다.
이 저장소를 쓸 때 반드시 확인할 사실이 두 가지 있습니다. 이름에 preview가 붙어 있다는 점, 그리고 카드에 후속 모델인 granite-docling-258M이 공개되었으며 앞으로는 그쪽이 갱신과 지원을 받는다고 적혀 있다는 점입니다. ds4sd/SmolDocling-256M-preview 주소로 접근해도 페이지에는 docling-project/SmolDocling-256M-preview가 표시됩니다.
이미지 검색에는 임베딩 모델이 따로 있습니다
이미지를 텍스트로 찾거나 비슷한 이미지를 찾는 일에는 VLM이 아니라 임베딩 모델을 씁니다. google/siglip-so400m-patch14-384는 apache-2.0에 0.9B이고, 제로샷 이미지 분류와 이미지·텍스트 검색에 쓸 수 있다고 적혀 있습니다. 384x384 해상도로 사전학습되었습니다.
이 카드에는 흥미로운 문장이 하나 있습니다. 모델을 공개한 팀이 카드를 작성하지 않아 허깅페이스 팀이 대신 썼다는 안내입니다. 즉 여기 적힌 내용은 배포자가 보증한 사양이 아니라 제3자가 정리한 설명이므로, 원 논문과 대조하는 편이 안전합니다. 한계 항목은 명시되어 있지 않습니다.
카드가 명시한 금지 용도와 한계
비전 모델은 사람과 문서를 직접 다루기 때문에 금지 용도가 구체적으로 적히는 경우가 많습니다.
HuggingFaceTB/SmolVLM-Instruct 카드는 이 모델이 고위험 시나리오를 위한 것이 아니라고 밝히면서 채용 평가와 중대한 자동 의사결정을 금지 용도로 나열하고, 이미지 생성은 지원하지 않는다고 적습니다. openbmb/MiniCPM-V-2_6 카드는 이 모델이 개인적 견해를 이해하거나 표현하거나 가치 판단을 내릴 수 없다고 적고, 사용에서 발생하는 문제에 개발자가 책임지지 않는다고 명시합니다. google/gemma-3-4b-it과 google/gemma-3-27b-it은 미묘한 뉘앙스나 반어, 비유를 이해하지 못할 수 있고 부정확하거나 오래된 사실을 생성할 수 있다고 적습니다.
라이선스 구조가 복합적인 경우도 있습니다. openbmb/MiniCPM-V-2_6은 코드가 Apache-2.0이고 모델은 별도 MiniCPM Model License를 따르며, 상업적 사용은 등록 설문을 마치면 무료라고 안내합니다. 라이선스 전문을 직접 읽고, 상업적 사용은 법무 검토를 거치세요.
코드 예시
# 예시: 이미지와 질문을 함께 넣어 구조화된 답을 받습니다
from transformers import AutoProcessor, AutoModelForImageTextToText
repo = "Qwen/Qwen2.5-VL-7B-Instruct"
processor = AutoProcessor.from_pretrained(repo)
model = AutoModelForImageTextToText.from_pretrained(repo, torch_dtype="auto", device_map="auto")
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "invoice.png"},
{"type": "text", "text": "표의 항목과 금액을 JSON으로 정리해 주세요."},
],
}
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True, return_tensors="pt"
).to(model.device)
out = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(out[0], skip_special_tokens=True))
고를 때의 순서
- 필요한 것이 이해인지 추출인지 구조 복원인지 검색인지를 먼저 나눕니다.
- 입력 이미지의 실제 해상도와 종횡비 분포를 확인하고, 모델이 그것을 잘라내지 않는지 봅니다.
- 위치 정보가 필요한지 정합니다. 필요하면 좌표를 내는 모델만 후보로 둡니다.
- 여러 장을 한 번에 넣어야 하면 다중 이미지 대화를 명시한 모델을 고릅니다.
- 금지 용도 목록에 우리 용도가 들어 있지 않은지 확인합니다.
- preview 표기와 후속 모델 안내를 확인해 유지보수 대상을 고릅니다.
직접 해보기
- 신경망 구조 탐색기 — 비전 모델의 구조가 무엇을 잡아내는지 살펴봅니다.
- 신경망 실습소 — 이미지 특징 추출이 어떤 원리로 동작하는지 실험합니다.
- LLM GPU 메모리(VRAM) 계산기 — VLM은 이미지 토큰까지 계산해야 하므로 용량을 미리 확인합니다.
시리즈 안내
참고 자료
- 표의 모든 값은 2026-08-12에 해당 모델의 Hugging Face 페이지에서 직접 읽었습니다. 페이지에 없던 항목은 명시되어 있지 않음으로 적었습니다.
stepfun-ai/GOT-OCR2_0과google/siglip-so400m-patch14-384의 한계 항목은 페이지에 명시되어 있지 않아 적지 않았습니다.- 라이선스 전문을 직접 읽고, 상업적 사용은 법무 검토를 거치세요.