marker
무엇인가
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
유사 도구
- doclingPDF·DOCX·PPTX 등 여러 문서 형식을 레이아웃과 표 구조까지 해석해 Markdown·JSON으로 내보내는 Python 라이브러리 겸 CLI다.
- markitdownPDF·오피스 문서·이미지·오디오를 Markdown으로 변환해 LLM 파이프라인에 넣는 Python CLI 겸 라이브러리다. 문서 구조를 보존한다.
- PaddleOCRPDF와 이미지를 Markdown·JSON으로 변환하는 OCR 툴킷이다. 100개 이상 언어를 지원하고 PaddleOCR-VL·PP-StructureV3 파이프라인으로 표·수식 좌표까지 뽑는다.
- synthadocPDF·스프레드시트·영상 등 원본 문서를 LLM으로 컴파일해 출처 인용이 붙은 로컬 Markdown 위키로 만드는 Python CLI다.
- readerURL 앞에 https://r.jina.ai/ 를 붙이면 웹 페이지·PDF·오피스 문서를 LLM이 읽는 마크다운으로 변환하는 TypeScript 서비스다.