1. プロジェクト概要
anydocは、Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDFファイルを、クリーンで一貫性のあるGitHub Flavored Markdownに変換する、高速なRustベースのライブラリです。開発者とAIエージェントに、あらゆるオフィス文書からLLM対応テキストへの単一の信頼できる経路を提供します。
2. 背景と位置づけ
Firecrawlによって開発されたanydocは、文書処理とAIパイプラインで常に発生する問題を解決するために存在します。オフィスファイルは、多数のレガシーおよび最新フォーマットで届き、既存の各コンバーターはその一部しか処理できず、出力品質と速度も大きく異なることがよくあります。anydocの中心的な使命は、2003年に保存された.docから昨日エクスポートされた.pptxまで、それらのすべてのフォーマットに、1つの共有ドキュメントモデルと1つのMarkdownシリアライザーを提供し、テーブルのエスケープや見出しアンカーの修正が、フォーマットごとに再実装されるのではなく、すべてのフォーマットに一度に反映されるようにすることです。
PandocやLibreOfficeのヘッドレス変換、markitdown、unstructured、doclingなどのPythonツールといった汎用コンバーターとは、3つの点で異なります。純粋なRustでありMLモデルや外部サービスを必要としないこと、拡張子を信頼するのではなくファイルの内容からフォーマットを検出すること、そしてanydoc自身が公開した6つの競合ツールに対するベンチマークによると、テストされた14のフォーマットすべてをカバーした唯一のツールであり、品質スコアも最高で、変換速度は次に速いツールより約1桁高速でした。anydocはまた、ホスト型のFirecrawl Parse APIを支えており、オープンソースライブラリが意図的に試みないスキャンされたページのOCRを追加します。
3. 機能カテゴリ
📄 フォーマット対応 — 8つのドキュメントファミリー、20以上の拡張子
.doc/.docx/.docm(Word)、.ppt/.pptx/.pptm/.pps/.ppsx/.ppsm/.pot(PowerPoint)、.xls/.xlsx/.xlsm/.xlsb(Excel)、.odt/.ods/.odp(OpenDocument)、さらに.rtf、.epub、.csv、.pdfを変換します。目的:単一フォーマットのコンバーターを多数置き換える1つのライブラリを提供します。
🧱 ドキュメント構造の忠実性 — 完全な忠実性を持つ構造要素
アンカー付き見出し、太字/斜体/取り消し線、インラインコードとコードブロック、リンクと相互参照、ネスト/番号付き/タスクリスト、結合セルを含むテーブル、ブロック引用、脚注/文末脚注、スピーカーノート。目的:ダウンストリームの解析に使用できる十分な構造をMarkdown出力が保持し、単なるテキストダンプにならないようにします。
🖼️ 埋め込みアセット — 画像と埋め込みオブジェクト
Markdown内の代替テキストで画像をレンダリングし、基になるドキュメントモデルで生のバイトとメディアタイプを利用できるようにします。外部画像URLは通常のMarkdown画像リンクになります。目的:呼び出し側がバイナリアセットを保持するか、再ホストするか、破棄するかを選択できるようにします。
🔌 言語バインディング — 4つのランタイムターゲット
ネイティブRustクレート、Node.jsパッケージ(libuvスレッドプールによるノンブロッキング)、Pythonパッケージ(GILを解放)、ブラウザ用のWebAssemblyビルド。目的:同じ変換ロジックをバックエンドサービス、CLI、ノートブック、または完全にクライアントサイドで実行できるようにします。
🤖 エージェント統合 — 1つのファーストクラスのAgent Skill
Claude Code、Codex、Cursor、OpenCode、その他のスキル対応エージェントと互換性のある、インストール可能なAgent Skill(npx skills add firecrawl/anydoc)として提供されます。目的:コーディングエージェントが、カスタムグルーコードなしで遭遇したオフィス文書を読み取れるようにします。
4. 主なハイライト
- 1つのドキュメントモデル、1つのシリアライザー。 すべてのフォーマットが同じ内部
Document表現に解析され、単一のGFMシリアライザーを通じてレンダリングされるため、フォーマットのバグはパーサーごとではなく、すべてのフォーマットに対して一度に修正されます。 - コンテンツベースのフォーマット検出。 anydocは、バイト自体からPDFヘッダー、RTFオープングループ、OLEストリーム名、またはZIPパッケージのmimetypeを読み取るため、ラベルが間違っているファイルや拡張子のないファイルでも正しく変換されます(
Format::from_bytes)。 - 中央値5ms未満の変換。 MLモデルやネットワーク呼び出しのない純粋なRust。公開されたベンチマークでは、中央値4.4msの変換時間を報告しており、LibreOffice、Pandoc、Pythonベースの代替手段よりもはるかに高速です。
- 独立してベンチマークされた品質リーダー。 14のフォーマットの100の実文書に対する他の6つのコンバーターとの比較で、anydocは完全なフォーマットカバレッジと、評価されたすべてのフォーマットで最高の品質スコア(ページレンダリングされたグラウンドトゥルースに対するLLM判定)を持つ唯一のツールでした。
- 組み込みのPDFサポート。 テキストベースのPDFは、コンパニオンであるpdf-inspectorクレートを通じてローカルで変換されます。このパスには外部OCRサービスは必要ありません。
- 型付きのバリアント別エラー処理。
ConvertError列挙型(Unsupported、Malformed、Encrypted、ResourceLimit、MissingPart、Io)により、呼び出しコードは「このファイルをスキップ」するケースと実際の障害を区別でき、Node/Wasmではerror.codeとして、Pythonでは型付き例外としてミラーリングされます。
5. 役割別のユースケース
- 一般開発者 — anydocをドキュメント取り込みパイプライン(Rust、Node.js、Python、またはブラウザ/WASM)に組み込み、フォーマットごとに個別のパーサーを維持することなく、混合フォーマットのアップロードをMarkdownに正規化します。
- データ/研究科学者(およびAI/MLエンジニア) — anydocを使用して、異種コーパス(レポート、スライドデッキ、スプレッドシート、CSV、PDF)を、埋め込み、RAGインデックス作成、またはLLMコンテキストウィンドウに適した、クリーンで構造的に一貫性のあるMarkdownに変換します。
- プロジェクトマネージャー/ツールチーム — Agent Skillを採用して、コーディングエージェント(Claude Code、Cursor、Codex、OpenCode)がセッション中にネイティブオフィス形式で渡された設計ドキュメント、仕様書、会議メモを読み取れるようにします。
6. はじめに
必要なものを見つける
サポートされているフォーマットの表と、バインディングごとのAPIリファレンス(node/README.md、python/README.md、wasm/README.md)を確認して、フォーマットとランタイムがカバーされていることを確認します。
インストール/統合
# CLI(インストール不要、プリビルドバイナリを実行)
npx @firecrawl/anydoc report.docx
# Node.js
npm install @firecrawl/anydoc
# Python
pip install firecrawl-anydoc
# Rust
cargo add anydoc
# ブラウザ / WebAssembly
npm install @firecrawl/anydoc-wasm
貢献
git clone https://github.com/firecrawl/anydoc.git
cd anydoc
cargo test
GitHubリポジトリで直接issueまたはプルリクエストを開いてください。プロジェクトはまた、フォーマットサポートを追加する貢献者のために、tests/とfuzz/の下にフィクスチャベースのスナップショットテスト、ミューテーションテスト、cargo-fuzzターゲットを維持しています。
7. プロジェクト構造
anydoc/
├── src/ # コアRustライブラリ:フォーマットパーサー + ドキュメントモデル + GFMシリアライザー
├── node/ # Node.jsバインディング(npmパッケージ、TypeScript型)
├── python/ # Pythonバインディング(maturinによるPyPIホイール)
├── wasm/ # WebAssembly / ブラウザバインディング
├── skills/ # Agent Skill定義(convert-documents-to-markdown)
├── bench/ # 速度と品質のベンチマークハーネス
├── tests/ # フィクスチャコーパス、スナップショットおよびロバストネステスト
├── fuzz/ # フォーマットごとのcargo-fuzzターゲット
├── examples/ # 使用例
└── Cargo.toml # クレートマニフェスト(公開バージョンのソースオブトゥルース)
src/にはフォーマットごとに1つのパーサーがあり、レンダリング前にすべてが共有Documentモデルに集約されます。これは、リポジトリの残りの部分(バインディング、ベンチ、テスト)が構築されるアーキテクチャの核です。
8. 関連エコシステム
- Firecrawl — 親プラットフォーム。anydocの変換ロジックは、ホスト型のFirecrawl Parse APIを支えており、スキャン/画像のみのページにOCRを追加します。
- pdf-inspector — anydocがローカルでの非OCR PDFテキスト抽出に使用するコンパニオンRustクレート。
- Agent Skills — anydocのAgent Skillが公開されるエコシステム/仕様。Claude Code、Codex、Cursor、OpenCodeで検出可能になります。
- Crates.io / npm / PyPI — anydocは公式パッケージを
anydoc(クレート)、@firecrawl/anydocおよび@firecrawl/anydoc-wasm(npm)、firecrawl-anydoc(PyPI)として公開しています。
9. ライセンス
✅ 商用およびクローズドソース製品を含め、自由に使用、変更、配布できます(MITライセンス)。
✅ 独自のソースコードを公開することなく、プロプライエタリなパイプラインやSaaS製品に自由に組み込めます。
❌ 保証は提供されません。著者は使用から生じる損害について責任を負いません。
ℹ️ MITライセンスのテキストと著作権表示は、ソフトウェアのコピーまたは実質的な部分に保持する必要があります。
10. FAQ
Q: anydocはどのドキュメントフォーマットをサポートしていますか?
A: Word(.doc/.docx/.docm)、PowerPoint(.ppt/.pptx/.pptm/.pps/.ppsx/.ppsm/.pot)、Excel(.xls/.xlsx/.xlsm/.xlsb)、OpenDocument(.odt/.ods/.odp)、RTF、EPUB、CSV、PDFです。
Q: anydocはスキャンされたPDFや画像に対してOCRを行いますか?
A: いいえ — anydocはpdf-inspectorを介してテキストベースのPDFをローカルで変換しますが、OCRは含まれていません。スキャンされたドキュメントについては、ホスト型のFirecrawl Parse APIが同じ変換エンジンの上にOCRモデルを追加します。
Q: 何もインストールせずにanydocを使用できますか?
A: はい、npx @firecrawl/anydoc report.docxを実行して、プリビルドバイナリを使用してファイルを即座に変換するか、WebAssemblyを介して完全にクライアントサイドで実行されるブラウザデモを試すことができます。
Q: anydocはファイルフォーマットをどのように検出しますか?
A: 拡張子ではなくファイルの内容から検出します — PDFヘッダー、RTFオープングループマーカー、OLEストリーム名、またはZIPパッケージのmimetype/コンテンツタイプを読み取ります。CSVにはそのようなマーカーがないため、拡張子または明示的なフォーマット引数に依存します。
Q: anydocは商用利用に対してどのようにライセンスされていますか?
A: MITライセンスであるため、商用およびプロプライエタリソフトウェアで自由に使用できます。詳細はセクション9を参照してください。
11. クイックリンク
- リポジトリ: github.com/firecrawl/anydoc
- ライブデモ / ホームページ: firecrawl.github.io/anydoc
- Node.js APIリファレンス: node/README.md
- Python APIリファレンス: python/README.md
- WebAssembly APIリファレンス: wasm/README.md
- ベンチマーク方法論: bench/README.md
- Agent Skill定義: skills/convert-documents-to-markdown/SKILL.md
12. まとめ
anydocは、Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDFファイルを、クリーンで構造的に忠実なMarkdownに変換する、単一の高速で依存関係の少ない方法をチームに提供します。これは以前は、品質が不均一なフォーマット固有のツールをいくつか組み合わせる必要があったタスクです。ドキュメント取り込みパイプラインを構築する開発者、埋め込みやLLMコンテキスト用のコーパスを準備するデータ/AIチーム、そしてオフィス文書をその場で読み取る必要があるコーディングエージェントに最適であり、これらすべてが、広範なフォーマットカバレッジ、ベンチマークされた出力品質、ミリ秒レベルの変換速度の組み合わせの恩恵を受けます。