Skip to content

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

✨ Learn with Quiz
|

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

모델 정보는 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의 한계 항목은 페이지에 명시되어 있지 않아 적지 않았습니다.
  • 라이선스 전문을 직접 읽고, 상업적 사용은 법무 검토를 거치세요.

Vision and Multimodal: Image Understanding, OCR, and VLMs

Model details were read directly from the Hugging Face pages on 2026-08-12. Model cards and licenses change, so check the original again before you use anything.

Vision Models Are Not One Category

Search for open models that handle images and very different things come back in one list. In practice you need at least four buckets before a choice is possible: VLMs that converse about an image, dedicated OCR models that read characters precisely, models that reconstruct document structure, and embedding models that turn images into vectors for retrieval.

These four do not substitute for one another. Hand a receipt to a VLM and it will usually read it, but you have no way to confirm it did not skip the amount field. A dedicated OCR model reads precisely but never judges whether the receipt is approvable.

Conversational VLMs That Understand Images

RepositorylicenseSizeContextCharacteristics as stated
Qwen/Qwen2.5-VL-7B-Instructapache-2.07B32,768, extendable to 64k for long video inputComprehends video over an hour, structured document output, localization via bounding boxes and points
google/gemma-3-4b-itgemma4B128KText and image input, more than 140 languages
google/gemma-3-27b-itgemma27B128K input, 8,192 outputAccess after accepting conditions
openbmb/MiniCPM-V-2_6Code Apache-2.0, model under a separate MiniCPM Model License8BNot statedAny aspect ratio up to 1.8 million pixels, multi-image conversation, video understanding

The Qwen/Qwen2.5-VL-7B-Instruct card states it can produce structured outputs of the contents of invoices, forms, and tables, and that it can localize objects in an image by generating bounding boxes or points. In an automation pipeline that localization capability is decisive. A model that returns only values forces a human to compare against the original, while a model that returns coordinates can highlight the exact spot on a review screen.

The same card states that the YaRN extension technique has a significant impact on temporal and spatial localization tasks for inputs beyond 32,768 tokens and is therefore not recommended. In other words, do not demand long video and precise localization at the same time.

openbmb/MiniCPM-V-2_6 states it processes images of any aspect ratio up to 1.8 million pixels. Unlike models that resize to a fixed resolution, that means tall screenshots and wide diagrams are not cropped away, which matters for use cases like screenshot analysis.

Small VLMs and On-Device

HuggingFaceTB/SmolVLM-Instruct is Apache 2.0 with 2B parameters, and its evaluation table lists a minimum required GPU RAM of 5.02 GB. Having that number on the card at all is useful, because most VLM cards do not state memory requirements and you have to measure them yourself.

The openbmb/MiniCPM-V-2_6 card states it can be deployed on end-side devices such as iPad. If you are evaluating on-device vision, these two repositories are the starting point.

Dedicated OCR Is a Different Object from a VLM

stepfun-ai/GOT-OCR2_0 is apache-2.0 at 0.7B, and its card lists several OCR modes: plain text OCR, format-preserving OCR, fine-grained OCR that targets a region by box or color, and multi-crop OCR, with formatted results renderable to HTML.

The operationally important one is fine-grained OCR. For a fixed-form document you can read only the fields you need by coordinate instead of reading and parsing the whole page, and then a misread elsewhere never contaminates the result. No limitations section is stated on the card.

microsoft/Florence-2-large is mit at 0.77B and works by specifying the task with a prompt token. The card lists tokens such as <CAPTION>, <DETAILED_CAPTION>, <OD>, <OCR>, <OCR_WITH_REGION>, <DENSE_REGION_CAPTION>, <REGION_PROPOSAL>, and <CAPTION_TO_PHRASE_GROUNDING>. Its usage example states trust_remote_code=True is required, and the card itself notes this is a continued-pretraining version with 4k context where only 0.1B samples were used, so it might not be trained well.

Document Structuring Is Not Text Extraction

When you work with contracts or papers, what you need is not characters but structure. A table has to remain a table, a paragraph has to stay under its heading, and a formula has to stay a formula.

docling-project/SmolDocling-256M-preview is cdla-permissive-2.0 at 0.3B and states it uses an output format called DocTags. The capabilities the card lists are OCR, layout and localization with bounding boxes, code recognition, formula recognition, chart recognition, table recognition with headers, figure classification, caption correspondence, list grouping, and full-page conversion.

Two facts to confirm before using it: preview is in the name, and the card states that granite-docling-258M has been released as its successor and will now receive updates and support. Even entering through the ds4sd/SmolDocling-256M-preview address, the page displays docling-project/SmolDocling-256M-preview.

Image Retrieval Has Its Own Embedding Models

Finding images by text or finding similar images is a job for an embedding model rather than a VLM. google/siglip-so400m-patch14-384 is apache-2.0 at 0.9B and states it can be used for zero-shot image classification and image-text retrieval. It was pre-trained at 384x384 resolution.

One sentence on this card is worth noticing: the team releasing SigLIP did not write a model card for this model, so the Hugging Face team wrote it. What is stated there is therefore a third-party summary rather than a publisher-warranted specification, so cross-checking against the original paper is the safer route. No limitations section is stated.

Prohibited Uses and Limitations Stated on the Cards

Because vision models act directly on people and documents, their prohibited uses are often spelled out concretely.

The HuggingFaceTB/SmolVLM-Instruct card states the model is not intended for high-stakes scenarios, lists employment evaluation and critical automated decision-making as prohibited uses, and notes it does not support image generation. The openbmb/MiniCPM-V-2_6 card states the model cannot comprehend or express personal opinions or make value judgements, and that the developers will not be liable for problems arising from its use. google/gemma-3-4b-it and google/gemma-3-27b-it state it may fail to grasp subtle nuance, sarcasm, or figurative language and may generate incorrect or outdated factual statements.

License structures can be compound. openbmb/MiniCPM-V-2_6 states the code is Apache-2.0 while the model follows a separate MiniCPM Model License, with free commercial use after completing a registration questionnaire. Read the full license text yourself and put commercial use through legal review.

Code Example

# Example: send an image with a question and get a structured answer back
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": "Return the line items and amounts as 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))

The Order to Decide In

  1. Separate first whether you need understanding, extraction, structure reconstruction, or retrieval.
  2. Check the real resolution and aspect ratio distribution of your inputs and whether the model crops them away.
  3. Decide whether you need positional information. If so, keep only models that emit coordinates.
  4. If several images go in at once, pick a model that states multi-image conversation.
  5. Confirm your use case is not on the prohibited list.
  6. Check for preview labels and successor notices to pick the one that will be maintained.

Try It Yourself

Series Navigation

References

  • Every value in the tables was read directly from that model page on Hugging Face on 2026-08-12. Anything absent from the page is written as not stated.
  • The limitations sections of stepfun-ai/GOT-OCR2_0 and google/siglip-so400m-patch14-384 are not stated on their pages, so nothing is written here.
  • Read the full license text yourself and put commercial use through legal review.