1仕組みと動作原理
「Pandoc抽出+付加価値後処理」の2層構造で実装:SKILL.mdはアーキテクチャを明文化し、変換そのものではなく8項目のDOCX後処理に価値があると主張しています。
**Architecture**: Pandoc (best-in-class extraction) + 8 post-processing fixes (our value-add).
ツール選定はQuick/Heavyのデュアルモードでルーティング:Quickモードは単一ツールで高速実行し、Heavyモードは複数ツールを並列実行してセグメントごと(表/画像/見出し/リスト/段落)の品質スコアリングに基づいて最適結果を統合します。
| PDF | pymupdf4llm | pymupdf4llm + markitdown |
DOCX後処理はカテゴリごとにテストで裏付け:8項目のクレンジング(grid/simple表、画像パス、pandoc属性、CJK太字スペース、インデントコードブロック、エスケープされた括弧、二重括弧リンク)は、SKILL.md内の表でTestPostprocessPipelineやTestCjkBoldSpacing(15ケース)などのテストと1対1で対応しています。
| Grid tables (`+:---+`) | Single-column → blockquote, multi-column → pipe table | `TestPostprocessPipeline` |
PDF後処理(2026-08-30以降)は3つの処理を実行:Tesseract OCRのゴミブロック除去、複数ページにわたる重複ヘッダー/フッター/透かし行の除去(正規化された同一行が60%以上のページに出現した場合に判定)、絶対画像パスの相対パス化を行います。
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`
品質の閉ループはvalidate_output.pyによって担保:テキスト/表/画像の保持率に基づきPass/Warn/Failの閾値を提示し、HTMLレポートを出力可能です。
| Text Retention | >95% | 85-95% | <85% |
クラス最高(7.6/10)の主張はリポジトリ内のベンチマーク文書によって裏付け:Docling/MarkItDown/Pandoc/Mammothを項目別にスコアリングし、pandocベース+後処理層の優位性を結論付けています。
| 维度 | Docling (IBM) | MarkItDown (MS) | Pandoc | Mammoth | **doc-to-markdown(我们)** |
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | pandoc |
| cli | markitdown CLI(markitdown[pdf]) |
| package | pymupdf4llm / pymupdf(uv --with 拉取) |
| cli | pdftotext / pdftoppm(poppler,校验脚本用) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: python scripts/convert.py(ローカル解析+後処理)
- 外部端点: ローカルコンテンツまたは会話データのサードパーティクラウドストレージへの外部送信
- 本地工作目录: ファイルの読み書きと成果物の出力: -o によるMarkdown出力、--assets-dir による画像のディスク保存(media/ のフラット化)、extract_pdf_images/validate_out
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結論
71b6589924471f21…