PDF를 그냥 읽어 들이면 표 구조가 무너지고 제목 계층이 사라진다. LLM은 망가진 입력으로도 그럴듯한 답을 만들어내니 문제가 있다는 걸 한참 뒤에야 알아채게 된다. RAG 품질은 생성 단계가 아니라 전처리 단계에서 이미 갈린다.

텍스트 추출과 구조 보존은 다르다

Microsoft의 MarkItDown은 단순히 텍스트를 뽑아내는 게 아니다. 표와 제목 계층을 Markdown 형식으로 온전히 보존해 LLM이 읽기 좋은 상태로 만든다. Word, PowerPoint, Excel, PDF는 물론 영상 자막, 음성 파일까지 처리한다. 파일 안의 이미지는 vision 기능을 연결해 해석하고, 스캔 문서는 OCR로 정리한다.

Markdown이 LLM에 유리한 이유는 단순하다. HTML이나 JSON 대비 토큰 효율이 좋고, 언어 모델이 학습 데이터에서 이미 많이 접한 형식이라 추론 정확도가 올라간다. 전처리 단계에서 구조를 잡아두면 retrieval과 generation 양쪽 모두 이득이다.

0.1.0 이후 뭐가 바뀌었나

파일 경로를 직접 입력받던 방식에서 binary stream 기반으로 바뀌었다. 임시 파일을 만들지 않고 메모리에서 바로 처리하니 서버 리소스 효율이 올라간다. 이전 방식에 익숙하다면 연동 코드를 점검해야 한다.

전체 기능을 한 번에 설치하거나 필요한 포맷 지원만 골라 담을 수 있다. MCP 서버를 지원하니 Claude 같은 LLM 데스크톱 앱과 직접 연결도 된다. OCR이 라이브러리 자체에 내장돼 있어 별도 시스템 설치 없이 배포할 수 있다.


관련 글

원문: https://github.com/microsoft/markitdown