ブログ一覧に戻る

DOCXからMarkdownへ:フローチャートを保持

SimplifyAI Team

Wordの技術文書をMarkdownへ変換する際、本文や表は比較的確認しやすい一方、フローチャートでは別の問題が起こりがちです。図が消えてノードの文字列だけが残ったり、画像として出力されても、モデルがボックス間の接続関係を理解できなかったりします。

文書プレビューでは「図が見える」ことが重要です。一方で、検索、RAG、ナレッジベースでは「図の意味を読み取れる」ことも同じく重要です。どちらか一方だけを残しても、後続の作業ではフローチャートの価値が失われる可能性があります。

Wordのフローチャートが文字だけになる理由

Wordのフローチャートは、DrawingMLの図形で構成されている場合があります。各ボックス、接続線、矢印、テキストボックスはそれぞれ独立したオブジェクトです。ページ上では一つの図に見えますが、一般的なDOCXのテキスト抽出では、段落とテキストボックスだけを走査することが少なくありません。

その結果、通常は次のいずれかになります。

  • ノードの文字は抽出されるものの、Markdownの先頭または末尾にまとめて並ぶ。
  • 接続線と矢印が完全に失われ、意味を読み取れないラベル一覧だけが残る。
  • 図全体が画像になるため見た目は残るが、文字を検索できず、モデルもノード間の関係を把握できない。

これは単なる「画像の出力漏れ」ではありません。視覚オブジェクトと意味的な構造が、一緒に引き継がれていないことが原因です。

SVGとMermaidを両方出力する理由

SVGとMermaidは、それぞれ異なる課題に対応します。

SVGで元の視覚レイアウトを保持する

SVGは、Markdownのプレビューでボックスの位置、矢印の向き、全体のレイアウトを表示するのに適しています。一般的なビットマップ画像よりも鮮明で、拡大してもぼやけにくい点が特長です。

人がレビューする際には、SVGによって「この図はWordで見えていたものと一致しているか」をすばやく確認できます。

Mermaidで検索可能な接続関係を保持する

Mermaidは、ノードと接続関係をテキストで表現します。たとえば次のようになります。

flowchart LR
    n0["Transaction"]
    n1["Public Key"]
    n2["Signature"]
    n0 --> n1
    n1 --> n2

この内容は検索やバージョン管理に利用でき、RAGのチャンク化やモデルによる理解にも適しています。MarkdownリーダーがMermaidをレンダリングしない場合でも、コードブロック自体には図のノード、方向、ラベルが保持されます。

そのため、ナレッジベース向けにはSVGかMermaidかを二者択一にするのではなく、次のように使い分けるのが適切です。

SVGで「図がどう見えるか」を保持し、Mermaidで「図がどのような関係を表すか」を保持します。

bitcoin DOCX の元図と Markdown の SVG フローチャートの左右比較

DOCXを保存して再アップロードしても、フローの関係は残る?

Word内に認識可能なDrawingML図形が保持されている場合、SimplifyAIはボックス、接続線、矢印、文字からフローの関係を復元し、Markdown内のMermaidコードブロックとして生成を試みます。

これは文書を往復して扱う場合に重要です。一般的な流れは次のとおりです。

  1. PDFを、編集可能な図形を含むDOCXへ変換する。
  2. ユーザーがダウンロード後、Wordで保存、レビュー、編集する。
  3. その後DOCXを再アップロードし、ナレッジベース用のMarkdownへ変換する。

重要なのは、この処理が元のPDFに依存しないことです。Wordでノードの文字を修正したり、ボックスを移動したりしてから再アップロードした場合、復元されるのは元の図ではなく、現在の文書の状態です。出力されたMarkdownは、同じ成果物内にあるSVGファイルを相対パスで参照し、その直後にMermaidコードブロックが続きます。そのため、両方をまとめて移動・登録できます。

現在の対象範囲と注意点

特に適しているケース:

  • 長方形のノード、接続線、矢印、テキストラベルで構成されたDrawingMLのフローチャート。
  • SimplifyAIから出力した、編集可能なWord図形を再アップロードするケース。
  • Wordの技術文書をMarkdown、RAG、ナレッジベースに取り込むケース。
  • 視覚的なプレビューと機械可読な関係の両方を残したいチーム。

人による確認が必要、または復元できない可能性があるケース:

  • SmartArt、複雑なグループ化オブジェクト、またはサードパーティ製ソフトウェアで作成された特殊なDrawingML。
  • 編集可能な図形ではなく、画像だけで構成されたフローチャート。
  • 接続線の端点がノードから離れている、または図形間の関係自体が不明確な図。
  • データチャート、自由形式のイラスト、スキャン画像。これらはMermaidのフローチャートとして扱うべきではありません。
  • 複雑な表のセル内に配置された浮動図形。出力位置の追加確認が必要になる場合があります。

システムは、通常のテキストボックスをフローチャートと誤認しないよう優先的に判断します。関係を確実に復元できない場合、Mermaidを生成するために誤った接続を補うことは適切ではありません。

実際のワークフロー

  1. 編集可能なフローチャートを含むDOCXをアップロードします。
  2. 「Markdownを抽出」を選択します。
  3. プレビューでSVGが完全に表示され、ノードの文字が重複して散在していないか確認します。
  4. Mermaidコードブロックで、ノード、矢印の向き、接続線ラベルを確認します。
  5. ナレッジベースへ取り込む前に、複雑な図を2〜3件、人手でサンプル確認します。

元ファイルがPDFで、先に編集可能なWord図形を取得したい場合は、PDFフローチャートをWordで編集可能に変換をご覧ください。文書の中心が本文と表である場合は、DOCXをMarkdownに変換して表と見出し階層を保持する方法も参考になります。

次のステップ

代表的なフローチャートを含むWord文書を1つ選び、まず変換を試してください。RAGの用途では、Mermaidがノードと矢印の関係を正確に表せているかどうかが、画像の見た目以上に、その後の検索や質問応答の品質に影響することがあります。

関連記事

DOCXからMarkdown変換Word フローチャート抽出Mermaid フローチャートSVG出力RAG 文書解析

関連記事 / 関連記事

ドキュメントを自動化する準備はできていますか?

InDesign、Word、PDFをアップロードして、レイアウトを保持した自動翻訳と構造化抽出をお試しください。

SimplifyAIを無料で試す