marker

Document to MarkdownCLIPython

★ 39,689주당 +180조회 4

무엇인가

Marker는 문서를 마크다운·JSON·HTML·청크로 바꾸는 Python CLI 겸 라이브러리다. 문서 인텔리전스 계열에 속하며, PDF 텍스트 추출기와 OCR 파이프라인을 한 단계로 합쳐 놓은 자리를 차지한다. 입력은 PDF, 이미지, PPTX, DOCX, XLSX, HTML, EPUB이고 언어 제한을 두지 않는다. 표, 폼, 수식, 인라인 수학, 링크, 참조, 코드 블록을 서식으로 살리고 이미지를 추출해 저장하며 머리글·바닥글 같은 부산물을 제거한다.

어떻게 동작하나

변환은 레이아웃 검출, OCR, 표 인식을 단일 surya VLM으로 처리하는 구조다. 이 모델은 로컬 추론 서버로 서빙되고 첫 사용 시 자동으로 뜬다. NVIDIA GPU에서는 vLLM을 Docker로, 그 밖의 환경에서는 llama.cpp를 쓴다. SURYA_INFERENCE_URL을 지정하면 이미 돌고 있는 서버에 붙는다. balanced 모드는 surya VLM으로 레이아웃을 잡고 인라인 수식을 OCR하며, 페이지에 내장된 텍스트가 조금이라도 어긋나면 페이지 전체를 다시 OCR한다. fast 모드는 rf-detr 레이아웃 검출기와 pdftext 텍스트 추출을 쓰고 VLM 호출을 수식, 손상된 블록 단위 복구, 스캔 페이지 한정 전체 패스로 줄인다. 표는 두 모드 모두 PDF 텍스트 레이어에서 재구성하고 신뢰도가 낮으면 VLM으로 넘긴다.

무엇과 다른가

비교 대상은 MinerU와 docling이다. olmocr-bench(1,403개 PDF, 수학·표·다단·스캔·난도 케이스를 다루는 8개 범주)에서 balanced 모드는 전체 76.0%, born-digital PDF 83.5%를 기록해 두 도구를 앞선다. 정확도만 밀어붙이는 대신 모드로 비용을 나눈 것이 차이다. fast 모드는 레이아웃과 텍스트 레이어 경로만 돌아 훨씬 저렴하고, --disable_ocr는 VLM 호출을 전부 끊어 더 빠르다. --use_llm을 주면 Gemini, Claude, OpenAI 호환, Azure, Vertex, OpenRouter, Ollama 모델이 페이지를 넘는 표 병합과 인라인 수식, 폼 값 추출을 맡는다.

어떻게 쓰나

단일 파일 변환 명령에 --mode, --output_format, --output_dir, --page_range, --paginate_output 같은 옵션을 넘긴다. --mode는 GPU에서 balanced, CPU·MPS에서 fast가 기본값이다. 서버 쪽은 SURYA_INFERENCE_BACKEND, SURYA_INFERENCE_PARALLEL, SURYA_INFERENCE_KEEP_ALIVE, VLLM_GPUS 환경변수로 조정한다. Streamlit 앱이 함께 들어 있어 옵션을 대화형으로 시험할 수 있다.

전제와 한계

Python 3.10+와 PyTorch가 필요하다. NVIDIA GPU 경로는 Docker와 NVIDIA Container Toolkit을, CPU·Apple Silicon 경로는 llama.cpp의 llama-server 바이너리를 전제로 한다. 코드는 Apache 2.0이지만 모델 가중치는 수정된 AI Pubs Open Rail-M 라이선스를 따르므로 연구·개인 용도와 펀딩·매출 500만 달러 미만 스타트업까지 무료이고 그 이상은 별도 상용 라이선스가 필요하다. --disable_ocr를 켜면 수식과 스캔 페이지는 결과에서 빠진다.

관련 논문 1

유사 도구