MarkItDown
Microsoft 에서 만든 파일 및 오피스 문서를 Markdown으로 변환하는 Python 도구
다양한 파일을 Markdown으로 변환하는 유틸리티 도구.
지원포맷
- PDF (.pdf), PowerPoint (.pptx), Word (.docx), Excel (.xlsx)
- 이미지 (EXIF 메타데이터 및 OCR), 오디오 (EXIF 메타데이터 및 음성 변환)
- HTML (특히 Wikipedia 등 특별 처리) 기타 다양한 텍스트 기반 형식 (csv, json, xml 등)
Usage
API 사용법은 간단함:
from markitdown import MarkItDown
markitdown = MarkItDown()
result = markitdown.convert("test.xlsx")
print(result.text_content)
Hacker News 의견
- MarkItDown: Python tool for converting files and office documents to Markdown | Hacker News
- uv를 설치한 경우, 파일에 대해 별도의 설치 없이 uvx markitdown path-to-file.pdf 명령어로 실행할 수 있음
- 처음 실행 시 필요한 패키지를 캐시하고, 이후 실행 시 캐시된 패키지를 재사용함
- HTML과 PDF에 대해 시도해본 결과 꽤 괜찮은 성능을 보임
- 소스 코드를 읽어본 결과, 이 구현은 꽤 합리적임
- 이미지나 스프레드시트에는 사용하지 않는 것이 좋음
- 이미지의 경우 LLM 제공자가 직접 전달할 수 있으며, 스프레드시트는 Markdown 테이블 해석에 약함
- PDF는 텍스트 추출 시, PDF 내보내기 방식에 민감한 휴리스틱을 사용하거나 OCR을 완전히 사용해야 함
- 프로젝트가 한 가지 방법에만 고정되는 것은 불편함
- 음성-텍스트 기능은 텍스트-텍스트 기능과 성능 특성이 다를 수 있어 사용하지 않을 것임
- Pandoc은 파워포인트와 엑셀 파일 변환은 불가능함
- PDFMiner의 래퍼라면 이 도구의 추가 가치는 보이지 않음
- 테이블을 인식하거나 처리하지 않지만, 최소한의 테이블 셀 인식은 있음
- 가변 폭 열이나 복잡한 방식으로 감싸인 텍스트는 잘 처리함
- 완전히 정렬된 텍스트에 불필요한 공백을 삽입하고, 중간 문장 열 분할 시 불필요한 줄 바꿈을 추가함
- 가장 큰 문제는 제목을 완전히 놓치는 것임
- 코드 읽기가 흥미로움
- 대부분은 단일 1101줄 파일에 있는 글루 코드임
- .md 파일로 과제를 제출했으나, 선생님이 이를 이해하지 못함
- 이후로는 Word 문서를 선호하는 사람을 만날 줄 몰랐음
- docling은 LLM을 사용함
- Pandoc은 대부분의 경우 가능하지만, 테이블과 같은 특정 항목에서 어려움을 겪음
- 대부분의 유료 솔루션도 평가했으나, 프로덕션에서 실행할 만큼 좋다고 생각한 것은 없음
- 이 도구를 시도해볼 것임