萌えハッカーニュースリーダー

2025/08/25 23:26 Doc2MD: An LLM powered document to Markdown conversion utility

出典: https://github.com/robert-mcdermott/doc2md
hakase
博士

やっほー、ロボ子!今日は画像やPDFからテキストを抽出するDOC2MDについて話すのじゃ!

roboko
ロボ子

DOC2MDですか、博士。面白そうですね!画像やPDFからテキストを抽出するユーティリティなのですね。

hakase
博士

そう!しかも、ローカルまたはリモートのOpenAI互換APIエンドポイントを使えるのがミソなのじゃ。ビジョン対応のマルチモーダルモデルを使うから、画像の内容も理解できるぞ。

roboko
ロボ子

なるほど。PDFの場合は、各ページを画像としてレンダリングして処理するんですね。そして、最終的にMarkdownドキュメントに連結する、と。

hakase
博士

その通り!例えば、古い論文のPDFをMarkdownに変換して、編集しやすくしたりできるのじゃ。便利だと思わない?

roboko
ロボ子

確かに便利ですね!ところで、使うにはOpenAI互換APIサーバーが必要なんですね。デフォルトでは`http://localhost:11434/v1/chat/completions`になっているんですね。

hakase
博士

そう!そして、ビジョン対応モデルも必要じゃ。デフォルトは`qwen2.5vl`だぞ。Python 3.12+とuvパッケージマネージャーも忘れずに!

roboko
ロボ子

インストールは`uv sync`でできるんですね。基本的な使い方は、`uv run doc2md.py image_path`や`uv run doc2md.py document.pdf`ですね。

hakase
博士

そうそう!モデルやエンドポイントをカスタムしたい場合は、`uv run doc2md.py --model model_name --endpoint endpoint_url image_or_pdf_path`のように指定するのじゃ。

roboko
ロボ子

認証もできるんですね。APIキーをBearerトークンとして提供するんですね。設定ファイルか環境変数で設定できるんですね。

hakase
博士

その通り!出力の保存も簡単じゃ。`uv run doc2md.py --output output_file image_or_pdf_path`で指定できるぞ。

roboko
ロボ子

コマンドラインオプションも色々ありますね。`input_path`は必須で、`--model`や`--endpoint`、`--config`、`--output`などがありますね。

hakase
博士

サポートされている形式は、JPG/JPEG、PNG、GIF、BMP、WebP、PDFじゃ。PDFは各ページをPNG画像としてレンダリングするのじゃ。

roboko
ロボ子

なるほど。画像の場合は、base64形式でエンコードするんですね。そして、構造化されたコンテンツでOpenAI互換APIリクエストを送信するんですね。

hakase
博士

そう!ビジョンモデルが画像を分析して、Markdownでテキストを抽出してくれるのじゃ。エラー処理も色々あるから、安心して使えるぞ。

roboko
ロボ子

依存関係としては、requestsとpymupdfが必要なんですね。pymupdfはPDFレンダリング用なんですね。

hakase
博士

そういうこと!DOC2MDを使えば、どんな画像やPDFもMarkdownに変換できるから、もう手作業でテキストを打ち込む必要はないのじゃ!

roboko
ロボ子

素晴らしいですね、博士!私も早速使ってみます!

hakase
博士

ところでロボ子、DOC2MDを使って、私の秘密のレシピをMarkdown化してくれないかのじゃ?

roboko
ロボ子

えっ、博士の秘密のレシピですか?それは一体どんな…

hakase
博士

うっそぴょーん!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search