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 는 다양한 사무용 파일(Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, PDF)을 깔끔하고 GitHub 형식의 Markdown 으로 빠르게 변환하는 순수 Rust 라이브러리입니다. 어떤 형식에서 시작하든 동일한 변환 결과를 제공하며, 구조(제목, 표, 목록, 각주, 수식, 임베디드 이미지 등)를 유지하고 단일 일관된 Markdown 표현을 생성합니다.
핵심 라이브러리는 네 가지 환경에 맞게 패키징되어 있습니다:
| 언어 / 플랫폼 | 사용 방법 | 일반적인 진입점 |
|---|---|---|
| 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 에이전트 프레임워크에서 단일 명령으로 변환기를 호출할 수 있습니다.
AI / LLM 파이프라인에 왜 중요한가
대규모 언어 모델은 특히 제목, 표, 코드 블록을 유지하는 Markdown 같은 순수 텍스트에서 가장 잘 작동합니다. 사용자 업로드 문서를 처리하는 모든 워크플로우(지식 기반 구축, 검색 증강 생성, 데이터 추출, 챗 어시스턴트 파일 읽기 등)는 비일관적인 형식을 일관된 텍스트 표현으로 변환할 수 있는 신뢰할 수 있는 방법이 필요합니다. anydoc 은 다음과 같은 특징을 제공합니다:
- 속도 – 문서당 중앙값 < 5ms (순수 Rust, ML 모델 없음).
- 포괄성 – 14개 형식. 벤치마크에서 모두 지원하는 유일한 오픈소스 도구.
- 구조 유지 – 제목, 목록, 표, 각주, LaTeX 수식, 임베디드 자산이 유지되어 하류 LLM 이 문서의 계층 구조를 이해할 수 있습니다.
- 로컬 처리 – 변환은 클라이언트 기계에서 실행되며, 스캔된 PDF 에서만 OCR 을 위해 Firecrawl 의 호스팅 OCR 서비스에 선택적으로 전송됩니다.
이러한 특성은 임의의 사무 파일에서 "LLM 준비" 텍스트를 공급해야 하는 모든 시스템의 견고한 구성 요소를 만듭니다.
작동 방식 (개요)
- 형식 감지 – 마법의 바이트(PDF 헤더, OLE 스트림, ZIP MIME 타입 등)를 읽어 파일 형식을 추론하며, 파일 확장자를 무시합니다.
- 형식별 파서 – 각 지원 형식에 대해 전용 파서가 공통 문서 모델(블록, 인라인, 표, 각주, 자산)을 추출합니다.
- 통합 직렬화기 – 모델은 단일 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 – 상용 및 비상용 모두 자유롭게 사용 가능.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트