Nanonets-OCR-s – 문서를 구조화된 마크다운으로 변환하는 OCR 모델
(huggingface.co)- 단순한 문자 인식 수준을 넘어 문서 전체를 Markdown 구조로 변환하는 고성능 이미지-to-Markdown OCR 모델
- 수학식은 LaTeX 형태로 변환하고, 이미지에는 자동 설명을 추가하며, 표는 HTML/Markdown 표로 출력해 LLM 활용에 최적화된 출력물을 생성
-
서명, 워터마크, 체크박스 등을 인식하여
<signature>
,<watermark>
,☐/☑
형태로 변환하는 등 문서 구성 요소별 처리 능력이 뛰어남 - Hugging Face의 Transformers 또는 vLLM 서버를 통해 손쉽게 활용 가능하며,
docext
라이브러리를 통해 웹 앱 형태로도 사용 가능 - 다양한 문서 유형과 복잡한 레이아웃에 대해 정확도와 구조화 수준이 매우 높아, 계약서, 양식, 리포트 등에서 매우 유용함
프로젝트 개요 및 중요성
- Nanonets-OCR-s는 일반적인 OCR(광학 문자 인식) 기능을 넘어, 문서의 의미와 구조를 분석하여 결과를 마크다운 형식으로 출력하는 혁신적인 모델임
- 수식, 이미지, 표, 체크박스, 서명, 워터마크를 각각 구분하고, 의미 있는 태깅 및 표현 방식(LaTeX, HTML, 마크다운 등)으로 변환해 downstream 작업이나 LLM(거대언어모델) 기반 문서 처리에 적합한 형태로 제공함
- 기존 오픈소스 OCR 프로젝트와 비교해 복잡한 문서 구조와 다양한 시맨틱 요소 추출에 더 높은 성능과 자동화된 워크플로우 적용 가능성을 보임
- Qwen2.5-VL-3B-Instruct 모델을 파인튜닝한 버전으로, 다양한 문서 구성 요소를 식별하고 의미 있는 마크업으로 태깅함
핵심 특징
-
LaTeX 수식 인식
- 문서에 포함된 수식과 수학 공식을 inline(
$...$
) 또는 display($$...$$
) 유형에 따라 자동으로 LaTeX 문법으로 변환·출력함
- 문서에 포함된 수식과 수학 공식을 inline(
-
지능형 이미지 설명
- 각 이미지에 대해,
<img>
태그 내에 이미지의 성격, 스타일, 내용 등을 상세히 기술함 - 로고, 차트, 그래프 등 다양한 이미지도 문맥, 의미와 함께 설명하여 LLM 활용에 적합한 입력으로 변환함
- 각 이미지에 대해,
-
서명 탐지 및 분리
- 서명 이미지를 텍스트와 구분해 별도
<signature>
태그에 담아 처리함 - 법률 및 비즈니스 문서 자동 처리에 활용 가치가 높음
- 서명 이미지를 텍스트와 구분해 별도
-
워터마크 추출
- 문서에 삽입된 워터마크 텍스트를 감지해
<watermark>
태그 내에 따로 정리함
- 문서에 삽입된 워터마크 텍스트를 감지해
-
체크박스 및 라디오 버튼 변환
-
- ☐ (미체크), ☑ (체크됨), ☒ (거부) 형태의 표준 유니코드 기호로 출력
- 설문지, 신청서 등 양식류 문서 처리 신뢰도 향상
-
-
복잡한 표 구조 추출
- 복잡한 테이블도 마크다운 및 HTML 테이블 형태로 변환하여 높은 활용성 제공함
주요 활용 방식
Python 코드 예제
- Hugging Face의 transformers 라이브러리를 활용해 손쉽게 모델을 불러와 실행 가능함
- 이미지를 입력으로 넣으면, 텍스트, 표, 수식, 이미지 설명, 워터마크 등 구조화된 마크다운 형태로 결과 제공함
- 페이지 번호나 워터마크는
,
등으로 구분해 래핑함 - 체크박스는 유니코드 심볼(☐, ☑)로 출력함
vLLM 기반 활용
- vLLM 서버에 모델을 등록하고 OpenAI 호환 API로 손쉽게 접속·활용 가능함
- 이미지 입력 시, 텍스트, 표, 수식, 워터마크 등 일관된 형식으로 변환 결과 출력함
docext 패키지 활용
-
docext
라는 별도 패키지를 통해, 별도의 명령어 실행만으로 Nanonets-OCR-s를 도큐먼트 구조화에 바로 적용할 수 있음 - GitHub 문서 참고 가능
Hacker News 의견
-
저는 Nanonets에서 일하고 있고, Nanonets-OCR-s라는 3B 규모의 VLM 모델을 공개하게 돼서 굉장히 기대감 가짐
이 모델은 문서를 깨끗하고 구조화된 마크다운으로 변환하는 데 최적화된 경량 모델임
문서의 구조와 맥락(테이블, 수식, 이미지, 도표, 워터마크, 체크박스 등)을 학습했기 때문임
주요 기능으로는 라텍스 수식 인식(인라인과 블록 수식을 제대로 구분해서 변환), 내장 이미지 설명(img 태그 이용, 차트/로고/도표 등 지원), 서명 탐지 및 분리(signature 블록 내 출력), 워터마크 추출(watermark 태그로 저장), 똑똑한 체크박스/라디오 버튼 처리(유니코드 변환으로 후처리 신뢰성 향상), 복잡한 테이블 구조 추출(다중 행/열 구성 테이블도 마크다운과 HTML로 잘 출력)이 있음
직접 사용해보고 싶으면 Huggingface나 Docext Colab 참고 가능-
Docext의 올바른 링크는 README.md임
-
사용 중인 LLM에서 환각(hallucination) 현상이 나타나는지 궁금함
-
이미지 자체 추출이 가능 여부, 아니면 여전히 별도 추출 과정이 필요한 것인지 궁금함
-
레스토랑 메뉴 사진이나 PDF를 JSON 스키마에 맞게 파싱하는 데(아마 후처리용 LLM의 도움과 함께) 활용 가능한지, 아니면 대형 멀티모달 LLM이 이런 용도에 더 적합한지 궁금함
-
-
나는 Shipibo(페루 원주민어)-스페인어 사전을 영어 사전으로 번역하려고 여러 LLM을 시도했지만, 두 컬럼이나 이상한 줄바꿈, 정의에 Shipibo와 스페인어가 혼합돼 있어서 이해가 어려움
게다가 스캔 품질도 좋지 않음
이 모델을 한 번 시도해봐야겠다는 생각 -
수십 년간 Word와 PowerPoint에 저장된 자료들을 모두 받아서, 각각의 요소를 다른 포맷으로 재사용할 수 있도록 표준화된 형태로 변환하는 솔루션을 계속 찾고 있었음
이건 그 시스템을 구축하는 데 꼭 필요한 핵심 빌딩 블록임
이제는 아카이브나 히스토리 기능이 필요함, 즉 각 요소를 쉽게 아카이빙하고 불러올 수 있으면 좋겠음
정말 멋진 작업임- unoconv나 pandoc으로 기본 변환 후, LLM을 활용해 플레인 텍스트를 정제하는 접근으로 시작하는 게 더 간단하지 않을까 하는 의견
-
이런 모델들이 마크다운만을 목표로 한다는 게 아쉬움
실제로 마크다운은 버전이 다양하고, 각주나 참고문헌, 그림 등에 대한 지원이 부족
더 구조적이고 명확한 스펙을 가진 포맷이 필요함-
실제로 우리는 마크다운으로 변환하면서 동시에 시맨틱 태깅까지 모델에 학습시킴
예를 들어 식은 LaTeX로 추출하고, 이미지(도표, 그림 등)는 img 태그로 상세히 묘사함
서명(signature), 워터마크(watermark), 페이지 번호 등도 태그 활용
복잡한 테이블(다중 행/열)은 마크다운이 아닌 HTML 테이블로 뽑음 -
"구조화 마크다운"이라는 개념이 LLM OCR 모델 자체보다 더 기대됐는데, 결국은 특정 요소에 태깅만 하는 수준이라 모델 외에서의 활용도는 조금 제한적이라는 느낌
-
-
docling(https://github.com/docling-project/docling)과 비교하면 어떤 장단점이 있는지 궁금함
-
Datalab/Marker(https://github.com/datalab-to/marker)와 어떤 차이가 있는지 궁금함
많은 PDF->MD 변환기를 비교했는데 Marker가 현재까지는 가장 좋았지만 완벽하지 않음-
개인적인 경험 기준, 복잡한 수식과 코드가 뒤섞인 논문 변환에 Marker가 꽤 잘 맞음
예를 들어 Fortran 역 라플라스 변환 논문 중 수식(인라인/디스플레이 혼합)과 모노스페이스 코드 블록이 한데 섞인 페이지를 Marker로 처리하면, 인라인 $\sigma_0$가 "<sup>s</sup> 0", $f(t)$가 "<i>f~</i>~t*!"처럼 망가짐
지금 모델은 이런 부분을 정확히 내부적으로 출력함이 강점임
참고 스크린샷(https://imgur.com/a/Q7UYIfW) -
나만의 교차 비교를 막 시작했는데 혹시 후보 리스트를 알려 줄 수 있으면 정말 고맙겠다는 요청
-
-
직접 Powershell로 이 모델을 어디서나 PDF에 적용하는 스크립트를 만들었음
직접 해보니 GPU(1080 8GB)가 구식이라 실행 속도는 상당히 느림(페이지당 최소 5분 이상)
만약 Cloud Run(외부 GPU 지원)에서 작동하는 PDF to markdown 변환 유틸리티를 써보고 싶다면 알려 달라는 의견
완성되면 링크도 공유할 예정임-
방금 Cloud Run에서 동작시키고 샘플 결과를 리포트함
animate.pdf의 일부 결과를 보면, 타이틀, 저자, 출판사, 흑백 일러스트(img 태그로 설명), 구글 디지털화 태그가 잘 추출됨
목차도 테이블 형태로 완벽하게 뽑히는 모습임
속도만 느린 걸 빼면 기능과 정확도는 매우 만족스러움 -
Cloud Run 이용 PDF to markdown 서비스에 매우 관심이 많음
-
-
다중 컬럼 또는 다중 행 테이블이 있는 문서(예시: 이 PDF의 1페이지 rowspan, 29페이지 colspan 등)를 어떻게 처리하는지 궁금함
-
비영어 텍스트 인식 성능이 어떤지 궁금함
기존 LLM 기반 OCR은 그 외국어 지원 성능이 전통적인 OCR에 훨씬 못 미친다고 알고 있음- 이건 경험담인지 아니면 이해 기반인지 궁금함
내 경험으론 구글 번역과 ChatGPT를 이미지에서 직접 사용할 경우, ChatGPT 성능이 항상 더 나음
특히 일본어 손글씨 메뉴도 번역/설명까지 잘해줌
- 이건 경험담인지 아니면 이해 기반인지 궁금함
-
다국어 지원 언급 없는 모델은 현실에선 영어 아닌 PDF에서 성능 매우 떨어짐
- 실제로 영어 위주로 훈련하긴 했지만, 일부 훈련 데이터에 중국어 및 다양한 유럽어도 포함되어 있음
게다가 기본 모델(Qwen-2.5-VL-3B)은 멀티링구얼임
Reddit에서 중국어도 잘 된다는 글을 본 적 있음(링크)
- 실제로 영어 위주로 훈련하긴 했지만, 일부 훈련 데이터에 중국어 및 다양한 유럽어도 포함되어 있음