ドキュメント&知識ベース · daymade/claude-code-skills

doc-to-markdown

DOCX/PDF/PPTXを自動後処理付きで高品質なMarkdownに変換します。pandocのグリッドテーブル、シンプルテーブル、画像パス、CJKの太字スペース、属性ノイズ、コードブロックを修正し、PDFに対してはpymupdf4llm出力からOCRゴミブロック、重複するヘッダー/フッター/透かし、絶対画像パスを除去します。Docling、MarkItDown、Pandoc raw、Mammothに対するベンチマークでクラス最高評価(7.6/10)を獲得しています。"convert document"、"docx to markdown"、"parse word"、"doc to markdown"、"解析word"、"转换文档"で起動します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行データ外部送信ネットワーク通信ファイル書き込みDual-pass Audit
Author daymadeGitHub daymade/claude-code-skills ↗Stars 1385License MIT(仓库根 LICENSE;Copyright (c) 2025 daymade;GitHub API spdx MIT)Commit d5c4678cb5
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

「Pandoc抽出+付加価値後処理」の2層構造で実装:SKILL.mdはアーキテクチャを明文化し、変換そのものではなく8項目のDOCX後処理に価値があると主張しています。

daymade-docs/doc-to-markdown/SKILL.md
**Architecture**: Pandoc (best-in-class extraction) + 8 post-processing fixes (our value-add).
convert.pyはまず拡張子に応じてツールを選択し(DOCX→pandoc、PDF→pymupdf4llm、PPTX/XLSX→markitdown)、pandoc/pymupdf4llmの出力に対して正規表現レベルのクレンジングを行い、エンジン固有の構文(grid table、{width=...}属性、media/media/パスのネストなど)を汎用Markdownへと標準化します。

ツール選定はQuick/Heavyのデュアルモードでルーティング:Quickモードは単一ツールで高速実行し、Heavyモードは複数ツールを並列実行してセグメントごと(表/画像/見出し/リスト/段落)の品質スコアリングに基づいて最適結果を統合します。

daymade-docs/doc-to-markdown/SKILL.md
| PDF | pymupdf4llm | pymupdf4llm + markitdown |
同一表の下部DOCX行はpandoc → pandoc+markitdownとなります。Heavyモードの並列実行とマージ基準は同文書の「Heavy Mode Workflow」セクション(「Parallel Execution: Run all applicable tools simultaneously」)に記載されています。

DOCX後処理はカテゴリごとにテストで裏付け:8項目のクレンジング(grid/simple表、画像パス、pandoc属性、CJK太字スペース、インデントコードブロック、エスケープされた括弧、二重括弧リンク)は、SKILL.md内の表でTestPostprocessPipelineやTestCjkBoldSpacing(15ケース)などのテストと1対1で対応しています。

daymade-docs/doc-to-markdown/SKILL.md
| Grid tables (`+:---+`) | Single-column → blockquote, multi-column → pipe table | `TestPostprocessPipeline` |
CJK太字スペースはDOCXのrunレベルスタイルとMarkdownレンダラー間の既知の不整合点であり、ここでは「スパンにCJK文字が含まれる場合は両側にスペースを補完する」というヒューリスティックルールで解決しています。これは中国語組版知識をコード化した典型例です。

PDF後処理(2026-08-30以降)は3つの処理を実行:Tesseract OCRのゴミブロック除去、複数ページにわたる重複ヘッダー/フッター/透かし行の除去(正規化された同一行が60%以上のページに出現した場合に判定)、絶対画像パスの相対パス化を行います。

daymade-docs/doc-to-markdown/SKILL.md
Repeated header/footer/watermark lines (same normalized line on ≥60% of pages, incl. diagonal watermarks) | Detected via pymupdf cross-page scan, removed from markdown; bold-wrapped and merged-with-page-number variants also caught | `TestRepeatingLines`
透かし/ヘッダーの除去はテキスト単体の処理ではなくpymupdfのページ間統計(_detect_repeating_lines)に依存します。SKILL.mdは既知の制限事項(段落の重複、リーダー点付き目次が表として認識される問題、複数ページにまたがる表が結合されない問題など)も率直に記載しています。

品質の閉ループはvalidate_output.pyによって担保:テキスト/表/画像の保持率に基づきPass/Warn/Failの閾値を提示し、HTMLレポートを出力可能です。

daymade-docs/doc-to-markdown/SKILL.md
| Text Retention | >95% | 85-95% | <85% |
このスクリプトはpdftotextを使用してPDFからテキストを抽出し、出力Markdownと比較することで(scripts/validate_output.py内のsubprocess.run(['pdftotext','-layout',...]))、「変換による欠落がないか」を定量化します。

クラス最高(7.6/10)の主張はリポジトリ内のベンチマーク文書によって裏付け:Docling/MarkItDown/Pandoc/Mammothを項目別にスコアリングし、pandocベース+後処理層の優位性を結論付けています。

daymade-docs/doc-to-markdown/references/benchmark-2026-03-22.md
| 维度 | Docling (IBM) | MarkItDown (MS) | Pandoc | Mammoth | **doc-to-markdown(我们)** |
SKILL.mdのdescriptionとベンチマークファイルは互いに整合しており、READMEではこのドキュメント群の位置づけを「benchmark-first」の開発文化と表現しています。

2コア機能

01DOCX/PDF/PPTX/XLSX → 高品質Markdownへの単一コマンド変換(デフォルトはQuickモード)
02pandoc出力の8項目自動クレンジング(grid/simple表、属性ノイズ、画像パス、CJK太字スペース、コードブロック、エスケープ、二重括弧リンク)
03PDFの透かし/ヘッダー/フッター/OCRゴミの自動除去と画像パスのポータブル化
04Heavyモードによる複数ツール並列実行+セグメント別品質マージ(表の行数/画像のalt属性/見出しレベルなどの基準)
05PDF画像抽出(ページ番号/座標/サイズメタデータおよびMarkdown参照ファイル付き)
06変換品質検証とHTMLレポート出力(テキスト/表/画像保持率の3段階閾値評価)
07Windows/WSLパス変換支援

3外部依存関係

KindDependency / Endpoint
clipandoc
climarkitdown CLI(markitdown[pdf])
packagepymupdf4llm / pymupdf(uv --with 拉取)
clipdftotext / pdftoppm(poppler,校验脚本用)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: python scripts/convert.py(ローカル解析+後処理)
  • 外部端点: ローカルコンテンツまたは会話データのサードパーティクラウドストレージへの外部送信
  • 本地工作目录: ファイルの読み書きと成果物の出力: -o によるMarkdown出力、--assets-dir による画像のディスク保存(media/ のフラット化)、extract_pdf_images/validate_out
監査ノート: 完全なローカル変換パイプラインです。ローカルのCLI/Pythonライブラリのみを呼び出し、ランタイムでのネットワーク外部送信やクレデンシャルの読み取りは行いません。ユーザー文書に対する読み書きは機能本来の性質です。初回の環境構築時のみPyPIへの接続(uv --with)が必要ですが、通信先は公式パッケージリポジトリであり想定内です。

5二重目の独立検証

  • [ok] 架构=Pandoc+8 后处理 — SKILL.md 原文与 convert.py 的 tool_map/pandoc 调用路径吻合;8 项清洗在 DOCX Post-Processing 表逐行列出。
  • [ok] CJK 加粗间距规则 — 规则原文(含 CJK 即两侧补空格)在 SKILL.md 'CJK Bold Spacing — why and how' 节,测试类 TestCjkBoldSpacing 存在。
  • [ok] PDF 水印剥离用 pymupdf 跨页扫描 — SKILL.md 声称 + convert.py _detect_repeating_lines 内 import pymupdf、doc=pymupdf.open(...) 属实。
  • [ok] Heavy 模式并行多工具 — SKILL.md 'Run all applicable tools simultaneously' + 分 segment 评分合并准则表均在。
  • [ok] 质量阈值 95/100% 等 — validate_output.py 存在 pdftotext 子进程调用,SKILL 阈值表为文档化契约。
  • [ok] 7.6/10 best-in-class 声明 — references/benchmark-2026-03-22.md 含 5 工具维度评分表与 '综合最优' 结论;评分口径为内部基准、非独立第三方评测——已注明。
  • [ok] 无网络外发/无凭证 — convert.py/validate_output.py/merge_outputs.py/extract_pdf_images.py 全量扫描:无 requests/urllib/http 调用点(仅测试 fixture 的 example.com 文本);无 environ 凭证读取。
  • [ok] 元数据核对 — GitHub API:MIT、1385 stars、pushed 2026-09-09T12:33:29Z;本地 git HEAD == d5c4678cb5d4 == pin。

6結論

  • エンジン選定は実測ベンチマークに裏付けられ、後処理は項目ごとにテストで固定されており、主張されている8+3項目のクレンジングはすべてコード上で特定可能です。
  • 中国語組版の知識(CJK太字スペース、コードブロック内のCJK)をコード化しており、同種の変換ツールでは稀なローカライズ付加価値を提供しています。
  • Heavyモードにより「複数ツールの競争と最適選択」を実行可能な機能に昇華させ、単一エンジンの弱点(表や画像の保持)を補完しています。
  • 既知の制限事項(62ページの調査レポートにおける自動修正対象外の5つの問題など)を率直に記録し、デリバリーの期待値管理が適切に行われています。
  • 最適な用途: 「ドキュメント→編集可能なMarkdown」への変換が必要で、中国語組版・表・画像の保持精度が求められるシーン(調査レポート、契約書、書籍原稿、技術文書の一括変換)に最適です。作者による積極的なメンテナンスとテストが整備されており、本番パイプラインへの組み込みにも適しています。Heavyモードはレイアウトが複雑な最終稿向けです。
    不向きな用途: ピクセル単位の再現性を重視するPDFレイアウト要件には不向きです(それはpdf-to-htmlやpdf-creatorの領域です)。uvやインターネット環境のないシステムには不向きです(初期環境構築のコストが高いため)。透かしが極端に多いPDFや純粋なスキャン文書(テキスト層なし)は対応範囲外であり、事前のOCR処理が必要です。
    Install Agent-Ready
    ① Verified Mirror 2026-09-09
    Option A · Direct DownloadDownload doc-to-markdown.tar.gz
    sha256: 71b6589924471f21…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit d5c4678cb5.