markitdown

Document to MarkdownCLIPython

★ 183,494주당 +1,706조회 4

무엇인가

MarkItDown은 파일과 오피스 문서를 Markdown으로 바꾸는 Python 유틸리티이자 CLI다. 문서 텍스트 추출 계층에 속하며, LLM과 텍스트 분석 파이프라인의 입력을 만드는 전처리 단계에 놓인다. 출력물은 사람이 읽는 최종 문서가 아니라 분석 도구가 소비하는 중간 표현이다.

어떻게 동작하나

변환은 포맷별 컨버터가 담당하고 입력 종류에 따라 해당 컨버터로 디스패치된다. PDF, PowerPoint, Word, Excel, HTML, CSV·JSON·XML 같은 텍스트 포맷, EPub, ZIP을 다룬다. ZIP은 내부 항목을 순회하며 각각을 변환한다. 이미지는 EXIF 메타데이터와 OCR로, 오디오는 EXIF와 음성 전사로 텍스트를 얻는다. YouTube URL은 전사 결과를 가져온다. 포맷별 파서는 선택 의존성으로 분리되어 있어 필요한 extra만 골라 설치할 수 있다.

무엇과 다른가

같은 자리에 textract가 있다. 차이는 출력 형식에 있다. MarkItDown은 제목, 목록, 표, 링크 같은 문서 구조를 Markdown 문법으로 남기는 데 초점을 둔다. Markdown은 마크업이 적고 토큰 효율이 높아 LLM 입력으로 쓰기 좋다. 대신 사람이 보는 고충실도 변환을 목표로 하지 않는다.

어떻게 쓰나

설치 후 `markitdown 파일.pdf > 문서.md` 형태로 실행한다. `-o`로 출력 파일을 지정하거나 표준 입력으로 내용을 파이프할 수 있다. Python에서는 convert_stream(), convert_local() 같은 API를 호출한다. 이미지 설명에 쓰는 llm_client / llm_model을 그대로 넘겨 OCR 플러그인을 붙일 수 있다. 플러그인은 기본 비활성이고 목록 조회와 활성화 플래그로 켠다. Azure Document Intelligence와 Azure Content Understanding은 클라우드 변환 백엔드로 연결된다.

전제와 한계

Python 3.10 이상이 필요하다. 포맷별 기능은 선택 의존성에 달려 있어 설치하지 않은 포맷은 변환되지 않는다. 변환은 현재 프로세스의 권한으로 I/O를 수행하므로 신뢰할 수 없는 입력에서는 입력을 정제하고 convert_stream(), convert_local()처럼 범위가 좁은 함수를 호출해야 한다.

유사 도구