---
title: "MarkItDownを使ってみた"
url: "https://blog.101ta28.com/posts/tried-using-markitdown/"
language: "ja"
description: "多彩なファイルをMarkdownに変換するツール紹介"
---

# MarkItDownを使ってみた

> 多彩なファイルをMarkdownに変換するツール紹介

## MarkItDownについて

2024-12-14にMicrosoftから面白そうなものが公開されていた。

その名も**MarkItDown**というソフトウェアだ。

色々なファイルをMarkdownという形式に変換するという内容である。  
[公式リポジトリ](https://github.com/microsoft/markitdown)から、変換可能な形式を引用すると

```md
- PDF (.pdf)
- PowerPoint (.pptx)
- Word (.docx)
- Excel (.xlsx)
- Images (EXIF metadata, and OCR)
- Audio (EXIF metadata, and speech transcription)
- HTML (special handling of Wikipedia, etc.)
- Various other text-based formats (csv, json, xml, etc.)
- ZIP (Iterates over contents and converts each file)
```

と多種多様なファイルを扱っている。

## 役に立ちそうなのは...

`神は「光あれ」と言われた。すると光があった`という聖書の一説がある。  
現代、神ではないが神のように扱われているものがある。AIだ。  
`AIは「データあれ」と言われた。すると情報があった`というのが今だろう。

そのAIにデータを用意するとして、全てがテキストで保存されてるわけではない。

何かしらでAIが読み込める形にする必要があるが、ここでMarkItDownの出番だ。  
PDFで保存されている文章をMarkdownに変換するとAIも大喜びだろう。  
仕事で扱うために、実際に動かしてみた。

## 実際の利用編

この[リポジトリ](https://github.com/101ta28/pdf2md)にコードを公開している。  
uvというツールを用いて、環境構築も極力楽に出来る設計だ。  
公開しているプログラムの中身はこんな感じ。

```python
from pathlib import Path
from markitdown import MarkItDown


def convert_pdfs_to_markdown(src: str, dest: str):
    """
    PDFファイルを指定したディレクトリ内でMarkdown形式に変換し、出力先ディレクトリに保存する。

    Args:
        src (str): 入力PDFファイルが格納されているディレクトリ。
        dest (str): 変換したMarkdownファイルの出力先ディレクトリ。
    """
    # 入力ディレクトリと出力ディレクトリのパスを設定
    src_dir = Path(src)
    dest_dir = Path(dest)

    # 出力先ディレクトリが存在しない場合は作成
    dest_dir.mkdir(parents=True, exist_ok=True)

    # PDFファイルを探索してMarkdownに変換
    for pdf_file in src_dir.glob("*.pdf"):
        mid = MarkItDown()
        result = mid.convert(str(pdf_file))

        # 出力先ファイル名を設定
        md_file = dest_dir / (pdf_file.stem + ".md")

        # Markdownファイルとして保存
        with open(md_file, "w", encoding="utf8") as f:
            f.write(result.text_content)
        print(f"{pdf_file.name} -> {md_file.name} に変換完了")


# 使用例
if __name__ == "__main__":
    src_dir = "./src"  # 入力元ディレクトリ
    dest_dir = "./dest"  # 出力先ディレクトリ
    convert_pdfs_to_markdown(src=src_dir, dest=dest_dir)
```

そんなに複雑なプログラムではない。

大事な部分としては

1. `result = mid.convert(str(pdf_file))`で変換の処理
2. `result.text_content`でテキストの中身を取り出す

この2点だ。

## 終わりに

多用するプログラムではないかもしれないが、新しいツールを使うというのは楽しい体験だった。

ちまちま今回のような記事を書くのも楽しいかもしれない。
