firecrawl/pdf-inspector
Fast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.
pdf-inspector – 빠르고 스마트한 PDF 분류 및 추출
주요 기능
- PDF가 텍스트 기반, 스캔본, 이미지 기반 또는 혼합형인지 빠르게 판단(10-50 ms)하고 신뢰도 점수를 제공합니다.
- 텍스트 기반 PDF의 경우, 레이아웃 정보(글꼴, X/Y 좌표, 회전)를 포함한 텍스트를 추출하여 문서를 깔끔한 Markdown으로 변환합니다.
- 제목, 목록, 코드 블록, 표(사각형 기반 및 휴리스틱), 굵게/기울임꼴, URL, 페이지 나누기 등을 감지합니다.
- 선택적 선택적 OCR: 추출 가능한 텍스트가 없는 페이지만 로컬 PP-OCRv6 모델로 전송하여 전체 문서 OCR로 인한 지연을 방지합니다.
- 네이티브 Rust crate, CLI (
pdf2md/detect-pdf), Python 및 Node.js 패키지, 브라우저용 WebAssembly 빌드로 제공됩니다.
중요한 이유
- 웹상의 PDF 중 약 절반은 이미 텍스트 기반입니다. 모든 문서에 OCR을 실행하면 CPU와 비용이 낭비됩니다. pdf-inspector를 사용하면 실제로 스캔이 필요한 페이지만 OCR로 라우팅하여 비용과 지연 시간을 줄일 수 있습니다.
- 이 라이브러리는 PDF를 한 번만 파싱하고 감지와 추출 과정에서 해당 표현을 공유하므로 전체 파이프라인이 가속화됩니다.
- 200개의 PDF 코퍼스 벤치마크에서 전체적인 품질, 읽기 순서, 표 처리, 속도(대체 도구가 수 초 걸리는 반면 전체 세트 처리 시 0.47초) 면에서 유사 도구보다 뛰어난 성능을 보입니다.
사용 방법
- Rust:
cargo add pdf-inspector;process_pdf("file.pdf")를 호출하여pdf_type및 선택적 Markdown을 가져옵니다. - Python:
pip install pdf-inspector;pdf_inspector.process_pdf("file.pdf"). - Node:
npm install @firecrawl/pdf-inspector;processPdf(buffer). - 브라우저: WASM 패키지를 가져와
processPdf(uint8Array)를 호출합니다. - CLI:
pdf2md file.pdf로 Markdown 추출,detect-pdf file.pdf로 분류만 수행합니다.
기술적 세부 사항
- 분류는 몇 페이지를 샘플링하여 텍스트(
Tj/TJ)와 이미지(Do) 연산자를 확인합니다. - 추출은 PDF 콘텐츠 스트림을 탐색하여 글꼴 메트릭과 위치가 포함된
TextItem을 구축한 다음, 이를 행, 열, 표로 그룹화합니다. - 표 감지는 그리기 명령의 사각형 감지와 텍스트의 휴리스틱 정렬을 결합합니다.
- Markdown 변환은 글꼴 크기 비율을 사용하여 제목 수준을 결정하고, 글꼴 이름 패턴을 사용하여 굵게/기울임꼴을 결정합니다.
사용 권장 사례
- 대량의 PDF(보고서, 연구 논문, 청구서, 법률 문서)를 빠르고 로컬에서 처리해야 할 때.
- 클라우드 OCR 서비스 비용을 지불하지 않고 표와 올바른 읽기 순서가 포함된 구조화된 Markdown을 원할 때.
- Rust, Python, Node 또는 브라우저를 사용할 수 있는 환경에서 실행 중이며, 필요에 따라 선택적 PDFium/ONNX Runtime 라이브러리를 설치할 수 있을 때.
라이선스: MIT.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트