OCR의 분기: 100페이지 문서를 한 번에 읽는 두 가지 루트
당신은 컨설팅 회사의 데이터 엔지니어입니다. 책상 위에는 200페이지 분량의 스캔된 업계 보고서 — 표, 차트, 다단 레이아웃에 수십 페이지의 손글씨 메모가 섞여 있습니다. 임무는 명확합니다: 이 보고서를 구조화된 데이터로 변환하여 분석 파이프라인에 투입하는 것.
몇 년 전의 당신이라면 어떻게 했을까요? 스크립트를 하나 작성해서 PDF를 200장의 이미지로 자르고, 페이지마다 OCR 엔진에 넣은 다음, 200개의 텍스트 조각을 다시 이어 붙입니다 — 중간에 페이지를 걸친 표의 열 제목을 놓치고, 다단 읽기 순서가 뒤섞이고, 페이지 경계에서 문장이 잘려나갈 가능성이 큽니다.
2026년 6월 23일, Hacker News 첫 페이지에 두 개의 글이 동시에 올라왔습니다: Baidu가 오픈소스로 공개한 Unlimited OCR(428포인트)과 Mistral이 발표한 OCR 4(420포인트). 같은 날 두 사건이 부딪히며 하나의 신호를 가리킵니다: OCR 장문서 시대가 왔다. 하지만 어떻게 왔는지는 두 회사가 완전히 다른 답을 내놓았습니다.
오래된 문제: 왜 장문서 OCR은 이렇게 어려운가?
OCR 자체는 새로운 문제가 아닙니다. Tesseract는 40년 전부터 존재했고, 클라우드 벤더의 문서 인식 API도 수년간 운영되어 왔습니다. 그러나 이 솔루션들은 장문서 앞에서 모두 같은 벽에 부딪힙니다: KV cache 팽창.
대형 언어 모델로 OCR을 수행하는 기본 아이디어는 이렇습니다: 문서 이미지를 일련의 비전 토큰으로 인코딩하고, LLM이 토큰 단위로 텍스트를 ‘읽어내는’ 것입니다. 토큰을 하나 생성할 때마다 모델은 이전 모든 토큰의 상태를 참조해야 합니다 — 이 상태들은 KV cache라는 구조에 저장됩니다. 문서가 길수록, 생성 내용이 많을수록 KV cache는 선형으로 증가 O(N)하여 결국 VRAM이 버티지 못합니다.
이 문제에 대한 업계의 표준 대응이 바로 앞서 언급한 ‘페이지 분할-병합’입니다 — 장문서를 단일 페이지로 쪼개고, 페이지별로 처리하며, 외부 스케줄러로 프로세스를 관리합니다. HN 사용자 robotswantdata가 Unlimited OCR 토론장에 남긴 댓글은 정확합니다: “개발자들은 어쩔 수 없이 PDF를 개별 페이지로 잘라 하나씩 처리한 다음 텍스트를 다시 붙이는 지저분한 코드(janky code that chops PDFs into individual pages, processes them one by one, and glues the text back together)를 작성해야 했다.”
이 방식은 돌아가긴 하지만, 진정한 장문서 이해는 아닙니다. 페이지를 넘나드는 컨텍스트가 소실되고, 표가 조각나고, 읽기 순서가 뒤엉킵니다 — 이것들은 전부 ‘엔지니어링 패치’의 대가입니다.
Baidu 루트: R-SWA로 KV cache를 상수로 압축
Baidu Unlimited OCR의 핵심 혁신은 Reference Sliding Window Attention (R-SWA) 입니다. KV cache를 O(N)에서 O(1)로 압축하는 어텐션 메커니즘입니다.
수식 없이 직관적으로 이해해 봅시다.
당신이 책을 필사하고 있다고 상상해보세요. 원문을 보면서(Reference) 글을 써 내려갑니다(Generation). 당신은 한 글자를 쓸 때마다 지금까지 필사한 모든 내용을 다시 읽을 필요는 없습니다 — 가끔 최근에 쓴 몇 줄만 훑어보며 줄을 건너뛰지 않았는지 확인하면 됩니다. 원문은 항상 당신 눈앞에 있고, 흐려지지도, 사라지지도 않습니다.
R-SWA가 하는 일이 바로 이것입니다. 어텐션 경로를 두 개로 분리합니다:
- Global Reference 경로: 생성되는 모든 토큰이 항상 전체 비전 토큰(즉 문서 이미지)과 프롬프트를 주시합니다 — 원문은 항상 선명하고, 페이지를 넘나드는 컨텍스트는 소실되지 않습니다.
- Local Generation 경로: 생성되는 모든 토큰이 최근 128개의 생성된 토큰만 주시합니다 — 단기 기억에는 슬라이딩 윈도우만 필요하며, 오래된 토큰 상태는 안전하게 잊어도 됩니다.
핵심 설계는 비전 토큰이 ‘상태 업데이트’에 참여하지 않는다는 점입니다. 그것들은 읽히기만 하고 수정되지 않습니다. 이는 슬라이딩 윈도우 어텐션의 고전적 결함 — 비전 특징이 상태 업데이트를 거치며 점차 ‘흐려져’ 결국 인식 정확도가 떨어지는 현상 — 을 회피합니다.
결과적으로, KV cache는 전체 디코딩 과정에서 상수 크기를 유지합니다. 40페이지 PDF를 모델에 던지면, 한 번의 추론으로 전부 읽어냅니다 — 페이지 분할도, 외부 스케줄러도, 그 ‘페이지 번호 붙여가며 이어 붙이는 더러운 코드’도 필요 없습니다.
기술적으로, Unlimited OCR은 DeepSeek OCR을 베이스라인으로 삼아 DeepEncoder의 16배 고압축률을 유지하면서도 디코더 LLM의 모든 어텐션 레이어를 R-SWA로 교체했습니다. 모델 파라미터는 3B, 추론 시에는 500M만 활성화되며(MoE 아키텍처), OmniDocBench v1.5에서 93%의 종합 점수를 기록해 DeepSeek OCR 베이스라인을 6포인트 상회했습니다.
논문은 arXiv, 코드는 GitHub(MIT 라이선스), 모델 가중치는 HuggingFace와 ModelScope에 공개. 전형적인 학술 루트: 논문 내고, 코드 오픈소스하고, 가중치 공개하고, 커뮤니티가 확장하게 두는 것.
Mistral 루트: 제품화된 솔루션으로 문서 인텔리전스 정의
Mistral은 같은 날 OCR 4를 발표했습니다. 지난 OCR 제품 업데이트 이후 1년 만입니다.
OCR 4의 강점은 엔지니어링 딜리버리의 완결성입니다. OCR을 ‘텍스트 추출’에서 ‘문서 구조 이해’로 업그레이드했습니다: 출력은 텍스트뿐 아니라 bounding box(페이지 내 각 텍스트 블록 위치), block classification(제목, 표, 수식, 서명 영역의 분류 태그), inline confidence score(각 문자 또는 단어의 신뢰도)를 포함합니다.
170개 언어, 10개 어족 지원. 단일 컨테이너로 자체 호스팅 배포 가능. OlmOCRBench에서 85.20점, 인간 선호도 테스트에서 평균 승률 72%.
Mistral의 포지셔닝으로 보면, OCR 4는 문서 인텔리전스 파이프라인의 ‘인제스트 컴포넌트’입니다 — Search Toolkit과 결합하여 기업 검색, RAG, 도메인 검색을 수행합니다. Bounding box는 검색 결과를 원본 문서에서 하이라이트할 수 있게 하고, 신뢰도 점수는 사람이 검토하는 워크플로를 구동하며, 구조화된 블록 출력은 다운스트림 데이터 파이프라인의 신뢰성을 높입니다.
클로즈드소스, 상업 API, 사용량 기반 과금 — 전형적인 제품 회사 루트.
HN 댓글의 엇나감: 손글씨 주소야말로 진정한 OCR 기적?
Mistral OCR 4의 HN 댓글란에서 흥미로운 전환이 일어났습니다. 최고 추천 댓글은 ericyd의 글:
“나는 항상 미국 우편 서비스가 기술적 기적이라고 생각해 왔다. 그들은 수십억 통의 우편물을 식별하고 라우팅하는데, 주소 표기가 극도로 비표준화되어 있다 — 같은 주소도 여러 형태로 쓸 수 있는데……”
이어서 idoubtit이 더 극단적인 이야기를 전합니다: 아버지가 70년대에 알제리에서 온 편지를 받았는데, 봉투에는 단 세 단어 — 그의 이름, 도시명 ‘Créteil’, 그리고 ‘France’만 적혀 있었습니다. 인터넷도, 중앙 데이터베이스도 없던 시절에 우편 시스템이 결국 그 편지를 배달했습니다.
필자가 보기에, 이 이야기들과 Mistral OCR 4 발표 사이에는 미묘한 긴장감이 있습니다. 이것들은 실무자들에게 상기시킵니다: OCR의 궁극적 목표는 현실 세계에서 저 극도로 비표준화되고 극도로 컨텍스트 의존적인 인식 작업입니다. 손글씨 주소 라우팅은 아마도 이 분야의 최초 ‘장문서 OCR’일 것입니다 — 다만 그 ‘문서’는 편지 봉투이고, 그 ‘모델’은 우체부의 커뮤니티 기억이었을 뿐입니다.
두 길의 갈림: 선택의 차원
필자가 보기에, Baidu의 Unlimited OCR과 Mistral의 OCR 4는 같은 트랙 위의 서로 다른 딜리버리 철학을 대표합니다.
Baidu의 루트를 선택하면 얻는 것: 읽을 수 있는 논문 한 편, 수정할 수 있는 코드베이스 하나, 다른 작업(논문에서 언급된 ASR, 번역)으로 이전 가능한 범용 어텐션 메커니즘. 대가는 직접 배포, 직접 파라미터 튜닝, 직접 엔지니어링 문제 해결이 필요하다는 점. 엔지니어링 역량이 있는 팀, 학술 연구, 또는 직접 파인튜닝이 필요한 시나리오에 적합합니다.
Mistral의 루트를 선택하면 얻는 것: API 엔드포인트 하나, 구조화된 JSON 출력, 바로 사용 가능한 문서 인텔리전스 파이프라인. 대가는 모델 가중치를 볼 수 없고, 내부 로직을 수정할 수 없으며, 토큰당 과금된다는 점. 기업 수준 배포, 빠른 통합, bounding box와 신뢰도가 필요한 프로덕션 시나리오에 적합합니다.
둘은 상호 배타적이지 않습니다. 같은 회사의 문서 파이프라인이 두 솔루션을 동시에 사용할 수도 있습니다: Unlimited OCR의 아이디어로 장문서 처리 효율을 최적화하고, OCR 4의 구조화된 출력으로 다운스트림 위치 지정과 검색을 수행하는 식으로.
진정한 변곡점: ‘읽을 수 있다’에서 ‘한 번에 읽을 수 있다’로
어느 길을 선택하든, 2026년 6월 23일은 기억될 만한 날입니다. 두 제품이 동시에 HN 첫 페이지에 올랐기 때문이 아닙니다 — 그것은 표면적 현상일 뿐입니다. 진짜 이유는 OCR 분야가 공식적으로 한 선을 넘었기 때문입니다: ‘그럭저럭 쓸 만한’ 단계에서 ‘제로샷 장문서 파싱’으로 진입한 것입니다.
1년 전만 해도 모델 하나가 40페이지 스캔 문서를 한 번에 읽는 것은 환상이었습니다. 오늘, 그것은 두 개의 서로 다른 기술 루트의 공통된 출발점이 되었습니다. R-SWA는 어텐션 메커니즘의 수학적 혁신이 새로운 가능성 공간을 열 수 있음을 증명했고, OCR 4는 구조화된 출력의 엔지니어링 연마가 OCR을 진정한 프로덕션 파이프라인에 통합시킬 수 있음을 증명했습니다.
200페이지 보고서를 마주한 그 엔지니어에게, 이제 답은 더 이상 “for 루프로 페이지 잘라서 붙이기”가 아닙니다. 오픈소스 R-SWA 솔루션을 쓸지, Mistral API를 호출할지는 — 그건 또 다른 이야기입니다.