# Microsoft MarkItDown - 파일 및 오피스 문서를 Markdown으로 변환하는 Python 도구

> Clean Markdown view of GeekNews topic #18260. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18260](https://news.hada.io/topic?id=18260)
- GeekNews Markdown: [https://news.hada.io/topic/18260.md](https://news.hada.io/topic/18260.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-14T16:33:09+09:00
- Updated: 2024-12-14T16:33:09+09:00
- Original source: [github.com/microsoft](https://github.com/microsoft/markitdown)
- Points: 31
- Comments: 2

## Summary

MarkItDown은 다양한 파일 형식을 Markdown으로 변환할 수 있는 유틸리티 도구입니다. 이 도구는 PDF, PowerPoint, Word, Excel, 이미지, 오디오, HTML 등 다양한 포맷을 지원하며, 간단한 API 사용법을 제공합니다. 사용자는 Python 코드를 통해 손쉽게 파일을 변환할 수 있습니다.

## Topic Body

- 다양한 파일을 Markdown으로 변환하는 유틸리티 도구  
- 지원포맷:   
  - PDF (.pdf), PowerPoint (.pptx), Word (.docx), Excel (.xlsx)  
  - 이미지 (EXIF 메타데이터 및 OCR), 오디오 (EXIF 메타데이터 및 음성 변환)  
  - HTML (특히 Wikipedia 등 특별 처리) 기타 다양한 텍스트 기반 형식 (csv, json, xml 등)  
- API 사용법은 간단함:  
    ```python  
    from markitdown import MarkItDown  
    markitdown = MarkItDown()  
    result = markitdown.convert("test.xlsx")  
    print(result.text_content)  
    ```

## Comments



### Comment 32400

- Author: kandk
- Created: 2024-12-16T11:22:37+09:00
- Points: 1

오 마소 내부에서도 오픈소스화시키려나보네요?

### Comment 32345

- Author: neo
- Created: 2024-12-14T16:33:10+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42410803) 
- `uv`를 설치한 경우, 파일에 대해 별도의 설치 없이 `uvx markitdown path-to-file.pdf` 명령어로 실행할 수 있음
  - 처음 실행 시 필요한 패키지를 캐시하고, 이후 실행 시 캐시된 패키지를 재사용함
  - HTML과 PDF에 대해 시도해본 결과 꽤 괜찮은 성능을 보임

- 회사에서 파일을 LLM 친화적인 텍스트로 변환하는 기능을 개발한 경험이 있음
  - 소스 코드를 읽어본 결과, 이 구현은 꽤 합리적임
  - 이미지나 스프레드시트에는 사용하지 않는 것이 좋음
  - 이미지의 경우 LLM 제공자가 직접 전달할 수 있으며, 스프레드시트는 Markdown 테이블 해석에 약함

- 많은 스타트업과 오픈 소스 프로젝트가 이 분야를 복잡하게 만들지만, 이해하기 쉽고 배포하기 쉬운 간단한 프로젝트가 최종 목표임

- PDF 처리에 있어 "얼마나 많은 처리를 원하는지" 조절할 수 있는 기능이 있었으면 좋겠음
  - PDF는 텍스트 추출 시, PDF 내보내기 방식에 민감한 휴리스틱을 사용하거나 OCR을 완전히 사용해야 함
  - 프로젝트가 한 가지 방법에만 고정되는 것은 불편함
  - 음성-텍스트 기능은 텍스트-텍스트 기능과 성능 특성이 다를 수 있어 사용하지 않을 것임

- PDF 처리에 있어 PDFMiner를 직접 통합하는 것이 더 나을 수 있음

- Pandoc을 사용하여 .docx 파일을 Markdown 및 다른 파일 형식으로 변환할 수 있음
  - Pandoc은 파워포인트와 엑셀 파일 변환은 불가능함

- PDF 형식의 복잡한 시각적 레이아웃과 많은 테이블을 가진 테이블탑 RPG 책을 색인화함
  - PDFMiner의 래퍼라면 이 도구의 추가 가치는 보이지 않음
  - 테이블을 인식하거나 처리하지 않지만, 최소한의 테이블 셀 인식은 있음
  - 가변 폭 열이나 복잡한 방식으로 감싸인 텍스트는 잘 처리함
  - 완전히 정렬된 텍스트에 불필요한 공백을 삽입하고, 중간 문장 열 분할 시 불필요한 줄 바꿈을 추가함
  - 가장 큰 문제는 제목을 완전히 놓치는 것임

- README에 LLM에 대한 언급이 없다는 점이 예상 밖이지만 긍정적임
  - 코드 읽기가 흥미로움
  - 대부분은 단일 1101줄 파일에 있는 글루 코드임

- 온라인 언어 수업에서 과제를 Slack으로 제출했을 때의 경험 공유
  - .md 파일로 과제를 제출했으나, 선생님이 이를 이해하지 못함
  - 이후로는 Word 문서를 선호하는 사람을 만날 줄 몰랐음

- docling과의 비교에 대한 호기심
  - docling은 LLM을 사용함

- Markdown에서 PDF나 .docx로 변환하는 좋은 라이브러리가 있는지 궁금함
  - Pandoc은 대부분의 경우 가능하지만, 테이블과 같은 특정 항목에서 어려움을 겪음

- Microsoft라면 Outlook HTML과 .docx에서 절반 정도는 괜찮은 결과를 낼 수 있을 것임
  - 대부분의 유료 솔루션도 평가했으나, 프로덕션에서 실행할 만큼 좋다고 생각한 것은 없음
  - 이 도구를 시도해볼 것임
