OpenSource-Hub

markitdown

CLI ツール

microsoft/markitdown

Python 工具,用于将文件转换为 Markdown。

概要

MarkItDown 转换多种文件格式为 Markdown,适用于 LLM 和文本分析。支持 PDF、Office 文档、图片、音频、HTML 等,保留标题、表格、链接等结构。

README プレビュー

# MarkItDown\n\n[](https://pypi.org/project/markitdown/)\n\n[](https://github.com/microsoft/autogen)\n\n> [!IMPORTANT]\n> MarkItDown performs I/O with the privileges of the current process. Like open() or requests.get(), it will access resources that the process itself can access. Sanitize your inputs in untrusted environments, and call the narrowest `convert_*` function needed for your use case (e.g., `convert_stream()`, or `convert_local()`). See the [Security Considerations](#security-considerations) section of the documentation for more information.\n\nMarkItDown is a lightweight Python utility for converting various files to Markdown for use with LLMs and related text analysis pipelines. To this end, it is most comparable to [textract](https://github.com/deanmalmgren/textract), but with a focus on preserving important document structure and content as Markdown (including: headings, lists, tables, links, etc.) While the output is often reasonably presentable and human-friendly, it is meant to be consumed by text analysis tools -- and may not be the best option for high-fidelity document conversions for human consumption.\n\nMarkItDown currently supports the conversion from:\n\n- PDF\n- PowerPoint\n- Word\n- Excel\n- Images (EXIF metadata and OCR)\n- Audio (EXIF metadata and speech transcription)\n- HTML\n- Text-based formats (CSV, JSON, XML)\n- ZIP files (iterates over contents)\n- Youtube URLs\n- EPubs\n- ... and more!\n\n## Why Markdown?\n\nMarkdown is extremely close to plain text, with minimal markup or formatting, but still\nprovides a way to represent important document structure. Mainstream LLMs, such as\nOpenAI's GPT-4o, natively "_speak_" Markdown, and often incorporate Markdown into their\nresponses unprompted. This suggests that they have been trained on vast amounts of\nMarkdown-formatted text, and understand it well. As a side benefit, Markdown conventions\nare also highly token-efficient.\n\n## Prerequisites\nMarkItDown requires Python 3.10 or high

FAQ (2)

トラブル対応
markitdown[all] をインストールする際に 'No matching distribution found for youtube-transcript-api~=1.0.0' というエラーが発生した場合の修正方法

markitdown[all]のextraはyoutube-transcript-apiを~=1.0.0に固定していますが、そのバージョンはPyPIに存在しません。回避策: extraなしでインストールし(pip install markitdown)、必要なパッケージを個別に追加してください(例: pip install youtube-transcript-api)。または、--no-depsで強制インストールし、手動で依存関係を解決してください。固定を修正する可能性のある新しいmarkitdownリリースを確認してください。

参照 Issue #1809
トラブル対応
なぜ markitdown 0.1.5 は大量のメモリを使用し、大きなPDFでOOMでクラッシュするのですか?

markitdown 0.1.4 にダウングレードしてください。この既知のリグレッション (PR #1499) により、メモリ使用量が急増します(例: 400ページのPDFで 200 MiB に対して 2.7 GiB)。issue #1611 の修正がリリースされたらアップグレードしてください。

参照 Issue #1611