📝
MarkItDownでPDFをMarkdownに変換してみる
これはなに
Microsoftが公開した、さまざまなファイルをMarkdownに変換するユーティリティです。
業務でPDFやエクセルに格納されている情報を抜き出して、データベースへ登録する機能を作っており、ちょうどタイムリーな話題でしたので試してみました。
準備
環境
当方の環境は下記の通りです。
OS:macOS(15.1.1(24B91))
brew:4.4.14
Python:3.13.1
Pip:24.3.1
仮想環境の構築
まずは仮想環境を用意します。
python3 -m venv .venv
仮想環境の起動
さきほど作成した仮想環境を起動します。
source .venv/bin/activate
依存関係の更新と導入
仮想環境のPipを更新します。
python3 -m pip install --upgrade pip
MarkItDownをインストールします。
pip3 install markitdown
実行
コマンドラインからの実行
手元に用意したPDFを、コマンドラインからMarkdown形式に変換するには以下のように実行します。
markitdown test.pdf > document.md
-o
オプションを利用して、出力先を指定することも可能です。
markitdown test.pdf -o document.md
パイプを利用して変換結果を閲覧することもできます。
cat test.pdf | markitdown
Python APIによる実行
main.py
を作成しコードからも実行してみました。
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("test.pdf")
print(result.text_content)
結果
入力
今回は、個人アカウントのGoogle Cloudの請求書がありましたので、こちらを利用してみました。
個人情報の箇所はモザイクにしてます🙏
1ページ目 | 2ページ目 |
---|---|
出力
一部段落がずれてしまっている箇所がありますが、内容は網羅されていますね。
Google Cloud Japan GK
Shibuya STREAM,
3-21-3 Shibuya, Shibuya-ku
Tokyo, 150-0002
Japan
登録番号: T6010003022051
請求書
請求書番号: **********
請求先
**********
**********
**********
**********
**********
詳細
請求書番号
..............................................................
**********
請求書発行日
2024年11月30日
..............................................................
請求 ID
..............................................................
**********
Google Cloud
合計(JPY)
アカウント ID
..............................................................
**********
2024年11月1日 - 2024年11月30日 の概要
小計(JPY)
消費税(10%)
合計(JPY)
お支払い金額は自動請求されます。
¥0
¥0
¥0
¥0
1/2 ページ
請求書
請求書番号: **********
Google Cloud Platform の料金表(console.cloud.google.com/billing/**********/reports/tabular)を使用すると、プロジェ
クトあたりの費用など、詳細な請求書データを表示およびダウンロードできます。
摘要
Google Cloud - 2024年11月の料金
小計(JPY)
消費税(10%)
合計(JPY)
金額(¥)
0
¥0
¥0
¥0
2/2 ページ
おまけ
出力したMarkdownのファイルを、claudeに入力しJSON形式に変換してみました。
LLMに入力する際のテキストデータに変換する手段として、MarkItDownが有効な気配を感じます。
業務で取り扱うPDFファイルなども読み込んでみて、精度などを検証してみようと思います。
{
"company": {
"name": "Google Cloud Japan GK",
"address": {
"street": "Shibuya STREAM, 3-21-3 Shibuya",
"city": "Shibuya-ku",
"prefecture": "Tokyo",
"postalCode": "150-0002",
"country": "Japan"
},
"registrationNumber": "T6010003022051"
},
"invoice": {
"number": "***************",
"date": "2024-11-30",
"id": "***************",
"accountId": "***************",
"period": {
"start": "2024-11-01",
"end": "2024-11-30"
}
},
"billTo": {
"name": "***************",
"address": {
"street": "***************",
"building": "***************",
"city": "***************",
"prefecture": "***************",
"postalCode": "***************",
"country": "***************"
}
},
"billing": {
"subtotal": 0,
"tax": {
"rate": 10,
"amount": 0
},
"total": 0
},
"notes": {
"paymentMethod": "自動請求",
"additionalInfo": "Google Cloud Platform の料金表(console.cloud.google.com/billing/***************/reports/tabular)を使用すると、プロジェクトあたりの費用など、詳細な請求書データを表示およびダウンロードできます。"
}
}
Discussion