Skip to content
Published on

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

공유하기
Authors

모델 정보는 2026-08-12에 Hugging Face 페이지에서 직접 확인했습니다. 모델 카드와 라이선스는 바뀔 수 있으니 사용 전 원본을 다시 확인하세요.

비전 모델은 하나의 범주가 아닙니다

이미지를 다루는 오픈 모델을 찾으면 성격이 아주 다른 것들이 한 목록에 섞여 나옵니다. 실무에서는 최소 네 갈래로 나눠야 선택이 가능해집니다. 이미지를 보고 대화하는 VLM, 글자만 정확히 읽는 OCR 전용 모델, 문서의 구조까지 복원하는 모델, 그리고 이미지를 벡터로 만들어 검색에 쓰는 임베딩 모델입니다.

이 넷은 서로를 대체하지 않습니다. VLM에게 영수증을 읽히면 대체로 읽기는 하지만, 금액 칸을 놓쳤는지 확인할 방법이 없습니다. OCR 전용 모델은 정확히 읽지만 이 영수증이 승인 가능한지는 판단하지 않습니다.

이미지를 이해하는 대화형 VLM

저장소license크기컨텍스트카드에 적힌 특징
Qwen/Qwen2.5-VL-7B-Instructapache-2.07B32,768, 긴 영상 입력 시 64k까지 확장1시간 넘는 영상 이해, 문서 구조화 출력, 경계 상자와 점으로 위치 지정
google/gemma-3-4b-itgemma4B128K이미지와 텍스트 입력, 140개 이상 언어
google/gemma-3-27b-itgemma27B입력 128K, 출력 8,192조건 동의 후 접근
openbmb/MiniCPM-V-2_6코드 Apache-2.0, 모델은 별도 MiniCPM Model License8B명시되어 있지 않음임의 종횡비와 최대 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_0apache-2.0에 0.7B 규모이고, 카드는 여러 OCR 모드를 나열합니다. 평문 OCR, 서식을 살린 OCR, 상자나 색으로 영역을 지정하는 세분화 OCR, 다중 크롭 OCR이 있고, 서식 결과는 HTML로 렌더링할 수 있다고 적습니다.

여기서 실무적으로 중요한 것은 세분화 OCR입니다. 양식이 정해진 문서라면 페이지 전체를 읽고 파싱하는 대신 좌표로 필요한 칸만 읽을 수 있고, 그러면 다른 칸의 오독이 결과에 섞이지 않습니다. 카드에 한계 항목은 명시되어 있지 않습니다.

microsoft/Florence-2-largemit에 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-previewcdla-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-384apache-2.0에 0.9B이고, 제로샷 이미지 분류와 이미지·텍스트 검색에 쓸 수 있다고 적혀 있습니다. 384x384 해상도로 사전학습되었습니다.

이 카드에는 흥미로운 문장이 하나 있습니다. 모델을 공개한 팀이 카드를 작성하지 않아 허깅페이스 팀이 대신 썼다는 안내입니다. 즉 여기 적힌 내용은 배포자가 보증한 사양이 아니라 제3자가 정리한 설명이므로, 원 논문과 대조하는 편이 안전합니다. 한계 항목은 명시되어 있지 않습니다.

카드가 명시한 금지 용도와 한계

비전 모델은 사람과 문서를 직접 다루기 때문에 금지 용도가 구체적으로 적히는 경우가 많습니다.

HuggingFaceTB/SmolVLM-Instruct 카드는 이 모델이 고위험 시나리오를 위한 것이 아니라고 밝히면서 채용 평가와 중대한 자동 의사결정을 금지 용도로 나열하고, 이미지 생성은 지원하지 않는다고 적습니다. openbmb/MiniCPM-V-2_6 카드는 이 모델이 개인적 견해를 이해하거나 표현하거나 가치 판단을 내릴 수 없다고 적고, 사용에서 발생하는 문제에 개발자가 책임지지 않는다고 명시합니다. google/gemma-3-4b-itgoogle/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))

고를 때의 순서

  1. 필요한 것이 이해인지 추출인지 구조 복원인지 검색인지를 먼저 나눕니다.
  2. 입력 이미지의 실제 해상도와 종횡비 분포를 확인하고, 모델이 그것을 잘라내지 않는지 봅니다.
  3. 위치 정보가 필요한지 정합니다. 필요하면 좌표를 내는 모델만 후보로 둡니다.
  4. 여러 장을 한 번에 넣어야 하면 다중 이미지 대화를 명시한 모델을 고릅니다.
  5. 금지 용도 목록에 우리 용도가 들어 있지 않은지 확인합니다.
  6. preview 표기와 후속 모델 안내를 확인해 유지보수 대상을 고릅니다.

직접 해보기

시리즈 안내

참고 자료

  • 표의 모든 값은 2026-08-12에 해당 모델의 Hugging Face 페이지에서 직접 읽었습니다. 페이지에 없던 항목은 명시되어 있지 않음으로 적었습니다.
  • stepfun-ai/GOT-OCR2_0google/siglip-so400m-patch14-384의 한계 항목은 페이지에 명시되어 있지 않아 적지 않았습니다.
  • 라이선스 전문을 직접 읽고, 상업적 사용은 법무 검토를 거치세요.