firecrawl/anydoc
Convert Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF to clean Markdown. Built in Rust, with Node.js and Python bindings.
anydoc が行うこと
anydoc は高速な純 Rust ライブラリで、さまざまなオフィス形式のファイル(Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、PDF)を、クリーンで GitHub フォーマットの Markdown に変換します。どの形式から始めても同じ変換結果を提供し、構造(見出し、表、リスト、脚注、数式、埋め込み画像など)を保持し、一貫した Markdown 表現を出力します。
コアライブラリは以下の4つの環境向けにパッケージ化されています:
| 言語 / プラットフォーム | 使用方法 | 通常のエントリポイント |
|---|---|---|
| Rust (crate) | cargo add anydoc して anydoc::to_markdown… を呼び出す |
anydoc::to_markdown("file.docx")? |
| Node.js (npm) | npm install @firecrawl/anydoc |
await toMarkdown("file.pptx") |
| Python (PyPI) | pip install firecrawl-anydoc |
anydoc.to_markdown("file.xlsx") |
| Web (Wasm) | npm install @firecrawl/anydoc-wasm + await init() |
toMarkdownBytes(bytes) |
小さな CLI(npx @firecrawl/anydoc …)と Agent Skill を使って、コマンドラインまたは AI エージェントフレームワークから1つのコマンドで変換を実行できます。
AI / LLM パイプラインにとってなぜ重要か
大規模言語モデルは、見出し、表、コードブロックを保持する Markdown を含むプレーンテキストで最も効果的に動作します。ユーザーがアップロードしたドキュメントを処理するあらゆるワークフロー(知識ベース構築、検索拡張生成、データ抽出、チャットアシスタントのファイル読み取りなど)は、異種形式を一貫したテキスト表現に変換する信頼できる手段が必要です。anydoc は以下の点を提供します:
- 高速性 – 1ドキュメントあたりの中央値 < 5 ms(純 Rust、MLモデルなし)。
- カバレッジ – 14形式。ベンチマークでこれらすべてをサポートする唯一のオープンソースツール。
- 構造の保持 – 見出し、リスト、表、脚注、LaTeX数式、埋め込みアセットが保持されるため、下流の LLM がドキュメントの階層を理解できます。
- ローカル処理 – 変換はクライアントマシン上で実行されます。スキャンされた PDF に OCR が必要な場合のみ、オプションで Firecrawl のホスト OCR サービスに送信されます。
これらの特徴により、任意のオフィスファイルから「LLM対応」テキストを供給するシステムの堅実な構成要素となります。
動作原理(概要)
- 形式検出 – マジックバイト(PDFヘッダー、OLEストリーム、ZIP MIMEタイプなど)を読み取り、ファイルタイプを推定します。ファイル拡張子は無視されます。
- 形式別パーサー – 各対応形式に対して専用のパーサーが、共通のドキュメントモデル(ブロック、インライン、表、脚注、アセット)を抽出します。
- 統一シリアライザー – モデルは1つの GitHub フォーマット Markdown シリアライザーに渡され、一貫したエスケープ、見出しアンカー、表フォーマットなどを保証します。
- PDF処理 – テキストベースの PDF は
pdf-inspectorcrate でローカル処理されます。スキャンされた PDF はNeedsOcrエラーを発生させます。オプションで Firecrawl Parse(ホスト OCR)に送信し、同じ Markdown を返却できます。
すべての形式が同じモデルを経由するため、バグ修正や機能改善はすべての形式に自動的に適用されます。
セットアップ方法(簡単な例)
CLI(インストール不要)
npx @firecrawl/anydoc report.docx # stdout に Markdown を出力
npx @firecrawl/anydoc slides.pptx -o out.md
npx @firecrawl/anydoc scan.pdf --ocr hosted # スキャンされた PDF にホスト OCR を使用
Node.js
import { toMarkdown } from '@firecrawl/anydoc';
const md = await toMarkdown('report.docx');
Python
import anydoc
md = anydoc.to_markdown('report.docx')
Rust
let md = anydoc::to_markdown("report.docx")?;
制限事項と注意点
- 組み込み OCR なし – 純 Rust 変換はテキストベースの PDF のみ対応。スキャンされた PDF はオプションのホスト OCR サービス(
ocr: "hosted")に送信する必要があります。 - 暗号化 / パスワード保護されたファイル は
Encryptedエラーを発生させ、変換できません。 - リソース制限 – 非常に深くネストされたまたは巨大なアーカイブは、安全上限(展開、ノード数)に達し、
ResourceLimitを返す可能性があります。 - Rust crate は OCR を公開していません。Node/Python バインディングのみがホストサービスに転送できます。
どんな人が使うか?
- ユーザーがアップロードしたドキュメントを読み取る必要がある LLM ベースのアシスタント(例:ChatGPT プラグイン、Claude エージェント)。
- 混在したオフィスファイルから検索可能な知識ベースを構築する RAG パイプライン。
- 表、フォーム、レポートを構造化テキストに変換する データ抽出ツール。
- インデックス作成、要約、翻訳のためにドキュメントを一括処理する 自動化スクリプト。
ライセンス
MIT – 商用・非商用問わず自由に利用可能。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト