GOT-OCR2.0 소개
문서를 디지털로 옮기는 광학 문자 인식(OCR)은 오랫동안 여러 개의 모듈을 이어 붙인 파이프라인으로 구현되어 왔습니다. 텍스트 영역을 찾는 검출기, 글자를 읽는 인식기, 레이아웃을 분석하는 후처리기가 각각 따로 학습되고 조합되는 방식입니다. 이런 구조는 단순한 인쇄 텍스트에는 잘 맞지만, 수식이나 표, 악보처럼 형태가 복잡한 대상이 섞이면 모듈마다 오류가 쌓이고 유지보수도 어려워집니다.
GOT-OCR2.0은 이 문제를 하나의 엔드투엔드(end-to-end) 모델로 다시 설계한 OCR 모델입니다. 논문 General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model 에서 저자들은 평문 텍스트뿐 아니라 수식, 분자식, 표, 차트, 악보, 기하 도형까지 사람이 만든 모든 광학 신호를 통틀어 "문자(character)" 로 정의하고, 이것들을 하나의 모델로 처리하는 접근을 OCR-2.0이라고 부릅니다. GOT는 이 이론을 구현한 모델로, 5.8억(580M) 개의 파라미터로 구성된 단일 모델이 다양한 입력 이미지를 받아 텍스트로 변환합니다.
GOT-OCR2.0은 중국과학원대학(UCAS) 연구진이 중심이 된 팀이 공개했으며, 저자들의 이전 연구인 Vary의 코드베이스 위에 만들어졌고 디코더의 언어 모델로는 Qwen을 사용합니다. 모델 가중치와 벤치마크, 학습 코드가 모두 공개되어 있고, 2025년 2월에는 Hugging Face Transformers 라이브러리에 병합되어 배치 추론까지 지원합니다. 이 게시물에서는 GOT가 제안하는 OCR-2.0의 개념과 모델 구조, 지원하는 인식 기능, 그리고 설치 방법을 정리합니다.
GOT-OCR2.0가 제안하는 OCR-2.0
저자들은 기존 OCR 시스템을 OCR-1.0으로 규정합니다. OCR-1.0은 여러 전문 모듈을 조합하는 구조여서 관리 비용이 높고, 사람이 만들어내는 광학 문자의 종류가 다양해지면서 점점 수요를 따라가기 어려워졌다는 것입니다. 특히 수식이나 표, 악보처럼 2차원 구조와 서식을 함께 가진 대상은 단순히 글자를 읽는 것만으로는 원래 의미를 복원하기 어렵습니다.
GOT-OCR2.0의 핵심 발상은 이 모든 대상을 하나의 "문자" 범주로 묶어 단일 모델이 처리하도록 한 데 있습니다. 입력 쪽에서는 장면(scene) 이미지와 문서(document) 이미지를 조각(slice) 단위로도, 전체 페이지 단위로도 받을 수 있습니다. 출력 쪽에서는 간단한 프롬프트를 바꾸는 것만으로 평문 결과와 서식이 있는 결과를 모두 만들어냅니다. 예를 들어 수식은 LaTeX로, 분자식은 SMILES로, 표는 마크다운으로 변환하는 식입니다.
GOT-OCR2.0의 모델 구조
GOT는 고압축 인코더(high-compression encoder)와 롱컨텍스트 디코더(long-context decoder) 라는 두 부분으로 이루어진 단일 모델입니다. 인코더는 입력 이미지를 소수의 토큰으로 압축하는 역할을 맡습니다. 문서 한 페이지처럼 정보량이 많은 이미지를 적은 수의 토큰으로 눌러 담아야 뒤따르는 디코더가 긴 출력을 감당할 수 있기 때문입니다. 디코더는 이렇게 압축된 시각 토큰을 받아 긴 텍스트 시퀀스를 생성하며, 언어 모델 기반(Qwen) 이라 서식이 있는 출력을 자연스럽게 다룹니다.
이 두 부분을 합쳐 전체 580M 파라미터의 모델이 완성되고, 중간 단계 없이 이미지에서 곧바로 텍스트를 뽑아내는 엔드투엔드 구조를 이룹니다. 별도의 검출기나 레이아웃 분석기 없이 하나의 모델이 전체 과정을 담당하므로, OCR-1.0 방식에서 발생하던 모듈 간 오류 누적 문제를 구조적으로 줄일 수 있습니다.
GOT-OCR2.0의 OCR 기능
GOT-OCR2.0은 여러 종류의 인식 작업을 하나의 모델로 지원합니다. 저자가 논문과 저장소에서 제시하는 주요 기능은 다음과 같습니다.
- 다양한 문자 인식: 평문 텍스트, 수학 및 분자식, 표, 차트, 악보, 기하 도형 등 서로 다른 형태의 광학 문자를 같은 모델로 읽습니다.
- 서식 있는 출력: 프롬프트에 따라 평문 또는 서식이 있는 결과를 생성합니다. 마크다운, LaTeX, SMILES 등 대상에 맞는 형식으로 변환합니다.
- 대화형 OCR: 좌표(box)나 색상을 지정해 이미지의 특정 영역만 인식하는 세밀한(fine-grained) 인식을 지원합니다.
- 동적 해상도와 멀티 페이지: 큰 이미지를 잘라 인식하는 방식과 여러 페이지를 이어서 처리하는 방식을 적용해 실사용성을 높였습니다.
성능 평가에는 저자들의 이전 벤치마크인 Fox와 OneChart 등이 사용되며, 저자들은 논문 실험에서 이 모델이 여러 OCR 과제에서 우수한 결과를 보인다고 밝히고 있습니다. 실제 수치와 비교 대상은 논문 본문에서 확인할 수 있습니다.
GOT-OCR2.0 설치 및 사용법
저장소 기준 실행 환경은 CUDA 11.8과 PyTorch 2.0.1입니다. 저장소를 내려받은 뒤 conda 환경을 만들고 패키지를 설치합니다.
git clone https://github.com/Ucas-HaoranWei/GOT-OCR2.0.git
cd GOT-OCR2.0
conda create -n got python=3.10 -y
conda activate got
pip install -e .
pip install ninja
pip install flash-attn --no-build-isolation
가중치를 내려받은 뒤에는 데모 스크립트로 바로 인식을 실행할 수 있습니다. 평문 OCR과 서식 OCR은 --type 옵션으로 구분합니다.
# 평문 텍스트 OCR
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /path/to/image.png --type ocr
# 서식이 있는 OCR (마크다운/LaTeX 등)
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /path/to/image.png --type format
특정 영역만 인식하려면 --box 로 좌표를, --color 로 색상을 지정하고, 여러 .png 가 있는 디렉토리는 --multi-page 로 이어서 처리할 수 있습니다. 자신의 데이터로 미세 조정(fine-tuning)하려는 경우에는 저장소가 ms-swift 기반의 LoRA 학습 방법을 안내하고 있습니다. 모델은 Hugging Face Transformers에도 병합되어 있어, 저장소의 GOT-OCR-2.0-master 디렉토리 외에 Transformers 경로로도 불러올 수 있습니다.
GOT-OCR2.0 온라인 데모
GOT-OCR2.0 모델 다운로드
GOT-OCR2.0 논문
GOT-OCR2.0 프로젝트 GitHub 저장소
더 읽어보기
-
Unlimited OCR: KV 캐시를 고정해 수십 페이지를 한 번에 인식하는 장문 OCR에 대한 연구 (feat. Baidu)
-
pdf-inspector: OCR 없이 PDF를 분류하고 마크다운으로 추출하는 Rust 라이브러리 (feat. firecrawl)
-
GLM-OCR: 0.9B 파라미터로 SOTA 성능을 달성한 초경량 오픈소스 OCR 모델 (feat. Z.ai)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

