본문으로 건너뛰기

© 2026 Molayo

HuggingFace헤드라인2026. 05. 04. 15:53

Core ML 와 dots.ocr 를 활용한 최첨단 OCR

요약

본 기사는 최첨단 OCR 모델인 dots.ocr를 Apple 기기에서 구동하기 위해 Core ML과 MLX 프레임워크를 결합하여 변환하는 과정을 상세히 다룹니다. 온디바이스(on-device) 실행은 API 키 노출 위험이 없고 비용이 들지 않으며 네트워크 연결이 필요 없다는 큰 장점이 있지만, 제한된 컴퓨팅 자원 관리가 필수적입니다. 특히 Neural Engine의 높은 전력 효율성을 활용하기 위해서는 Core ML을 거쳐야 하며, 이 과정에서 PyTorch 모델 그래프를 캡처하고 컴파일하는 복잡한 변환 과정을 거치게 됩니다.

핵심 포인트

  • dots.ocr는 OmniDocBench에서 Gemini 2.5 Pro를 능가하는 성능을 보여주며, 온디바이스 OCR의 새로운 기준을 제시합니다.
  • Apple 기기에서 최고의 전력 효율성을 얻으려면 Neural Engine 사용이 필수적이며, 이는 Core ML 프레임워크를 통해 접근해야 합니다.
  • PyTorch 모델을 on-device로 포팅하는 과정은 PyTorch 그래프 캡처(torch.jit.trace/export)와 coremltools를 이용한 컴파일이라는 두 단계의 복잡한 과정을 거칩니다.
  • dots.ocr는 비전 인코더(Core ML 사용)와 언어 모델 백본(MLX 사용)으로 구성되어 있으며, 이 두 프레임워크를 조합하여 최적화된 온디바이스 구동 환경을 구축합니다.

SOTA OCR with Core ML and dots.ocr

매년 우리 하드웨어는 조금 더 강력해지고, 매개변수당 모델은 조금 더 똑똑해집니다. 2025 년에는 이제까지도 불가능했던设备上에서 경쟁력 있는 모델을 실행하는 것이 더욱 실현 가능해졌습니다. RedNote 에서 개발한 3B 파라미터 OCR 모델인 dots.ocr 는 OmniDocBench 에서 Gemini 2.5 Pro 를 능가하여, OCR 을 truly no compromises on-device use case 로 만들었습니다.设备上에서 모델을 실행하는 것은 개발자에게 확실히 매력적입니다: API 키를 숨기지 않고, 비용이 없으며, 네트워크도 필요하지 않습니다. 그러나 만약 우리가 이러한 모델을设备上에서 실행하고 싶다면, 제한된 컴퓨팅 및 전력 예산에 대해 주의를 기울여야 합니다. Neural Engine 은 2017 년부터 모든 Apple 기기에 탑재된 Apple 의 커스텀 AI 가속기입니다. 이 가속기는 높은 성능을 유지하면서 배터리 전력을 소모합니다. 일부 테스트 결과 Neural Engine 은 CPU 보다 12 배 더 전력 효율적이며, GPU 보다 4 배 더 전력 효율적임을 발견했습니다.

이 모든 것이 매우 매력적으로 들리지만, 불행히도 Neural Engine 은 Apple 의 폐쇄형 소스 ML 프레임워크인 Core ML 을 통해서만 접근할 수 있습니다. 또한 PyTorch 모델을 Core ML 로 변환하는 것만으로도 몇 가지 도전 과제가 존재하며, 사전 변환된 모델이 없거나 sharp edges 에 대한 지식이 없으면 개발자에게는 매우 어려운 일입니다. 다행히 Apple 은 GPU (Neural Engine 가 아닌) 를 대상으로 하는 더 현대적이고 유연한 ML 프레임워크인 MLX 도 제공하며, 이는 Core ML 과 함께 사용될 수 있습니다.

이번 3 부분 시리즈에서 우리는 dots.ocr를设备上에서 실행하기 위해 CoreMLMLX를 조합하여 변환하는 과정을 reasoning trace로 제공합니다. 이 과정은 많은 다른 모델에도 적용할 수 있으며, 개발자가设备上에서 자신의 모델을 실행하고 싶어하는 경우 필요한 아이디어와 도구를 강조하는 데 도움이 되기를 바랍니다.

따라하기 위해 저장소를 클론하세요. uvhf를 설치해야 설정 명령어를 실행할 수 있습니다:

./boostrap.sh

만약 변환된 모델을 바로 사용하고 싶다면, 여기에서 다운로드할 수 있습니다.

PyTorch 를 CoreML 로 변환하는 과정은 두 단계로 이루어집니다:

  • PyTorch 실행 그래프를 캡처 (via torch.jit.trace 또는 더 현대적인 접근 방식인 torch.export).
  • 이 변환된 그래프를 .mlpackage로 컴파일하여 coremltools 사용.

우리는 단계 2 에서 몇 가지 조절 가능한 요소가 있지만, 대부분의 제어는 단계 1 에 있습니다. 우리가 coremltools에 제공하는 그래프입니다.

프로그램의 명전 make it work, make it right, make it fast를 따르며, 우리는 먼저 GPU 에서 FLOAT32 와 정적 형식을 사용하여 변환을 작동시키는 데 집중할 것입니다. 이를 작동시킨 후, 정밀도를 낮추고 Neural Engine 으로 이동하려고 시도할 수 있습니다.

Dots.OCR 는 두 가지 핵심 구성 요소로 이루어져 있습니다: NaViT 아키텍처 기반에서 처음부터 훈련된 1.2B 파라미터 비전 인코더와 Qwen2.5-1.5B 백본입니다. 우리는 CoreML를 사용하여 비전 인코더를 실행하고, MLX를 사용하여 LM 백본을 실행할 것입니다.

모델을 변환하기 위해서는 시작 전에 구조와 기능을 이해하는 것이 가장 좋습니다. 원래 비전 모델링 파일을 살펴보면, 비전 인코더는 QwenVL 가족과 유사함을 알 수 있습니다. 많은 비전 인코더와 마찬가지로, dots의 비전 인코더는 patch 기반에서 작동하며, 이 경우 14x14패치입니다. dots비전 인코더는 비디오와 이미지 batches 를 처리할 수 있습니다. 이는 단일 이미지를 한 번에만 처리하여 단순화할 기회를 제공합니다. 이 접근 방식은 on-device 앱에서 자주 사용되며, 우리는 필수 기능을 제공하는 모델을 변환하고 여러 이미지를 처리하고 싶으면 반복합니다.

변환 프로세스를 시작할 때, 최소 기능 모델로 시작하는 것이 가장 좋습니다. 이는 모델이 작동하기 위해 엄격하게 필요한 모든 부수적인 요소들을 제거하는 것을 의미합니다. 우리 경우 dots 는 비전 인코더와 LM 백본 모두에 대해 다양한 attention 구현을 제공합니다. Core ML 은 iOS 18 에서 도입한 scaled_dot_product_attention연산자 중심으로 많은 인프라를 가지고 있습니다. 우리는

AI 자동 생성 콘텐츠

본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0