Firecrawl 오픈 소스 pdf 검사기: PDF를 밀리초 단위로 마크다운으로 변환, OCR 없음
웹 스크래핑 도구로 유명한 Y Combinator 스타트업인 Firecrawl은 PDF가 텍스트 기반인지 스캔인지 밀리초 단위로 파악하고 OCR 없이 텍스트 기반 문서를 깨끗한 마크다운으로 바꾸는 Rust 라이브러리인 PDF-inspector를 오픈 소스로 제공합니다. 팀의 추정에 따르면 실제 작업 부하에서 PDF의 약 54%가 텍스트 기반이므로 느리고 비용이 많이 드는 OCR을 통해 실행하는 것은 의미가 없습니다.
계약서, 보고서, 책 등 모델에 PDF를 공급해 본 적이 있다면 파일이 잘 열리지만 텍스트가 복사되지 않거나 가비지로 복사되는 느낌을 아실 것입니다. 클래식 파서는 테이블을 질식시키거나 OCR을 통해 모든 페이지를 푸시하여 시간과 비용을 소모합니다. pdf-inspector는 바로 그 문제점을 해결합니다. 파일이 무엇인지 빠르게 확인하고 실제로 스캔한 경우에만 OCR에 도달합니다.
먼저 분류하고 두 번째로 추출
단일 패스에서 라이브러리는 PDF를 텍스트 기반, 스캔, 이미지 기반 또는 혼합의 네 가지 유형 중 하나로 정렬하고 0에서 1까지의 신뢰도 점수와 페이지별 경로(텍스트로 읽을 페이지, OCR로 보낼 페이지)를 반환합니다. 분류에는 10~50밀리초가 걸립니다. 텍스트 페이지의 경우 좌표, 글꼴, 읽기 순서로 추출하고 제목, 목록, 표 및 링크가 포함된 마크다운을 출력합니다.
눈에 띄는 숫자
200개의 PDF로 구성된 opendataloader-bench 자료에서 pdf-inspector는 0.47초 만에 전체 세트를 처리했습니다. 비교를 위해 pymupdf4llm은 17초, markitdown은 16초가 걸렸습니다. 그리고 품질에서는 여전히 가장 높은 점수를 받았습니다. 전체 0.875 대 pymupdf4llm의 경우 0.735, markitdown의 경우 0.589입니다. 테이블에서는 0.814 대 0.401 및 0.273으로 실제로 앞서 나가고 있습니다.
또 무슨 일을 하는지
다중 열 신문 레이아웃, 오른쪽에서 왼쪽 텍스트, CID 글꼴, 손상된 인코딩 감지. 선택적 OCR: PDF에 몇 개의 스캔 페이지가 섞여 있는 경우 전체 문서 대신 PP-OCRv6 Small을 통해 로컬에서 OCR을 통해 해당 페이지만 실행할 수 있습니다.
부족한 곳
솔직히 말해서 문서의 실제 스캔과 사진에는 여전히 OCR이 필요하며 pdf-inspector는 마술이 아닙니다. 필요하지 않은 파일에 OCR을 낭비하지 않습니다. 수식과 조판이 텍스트와 혼합된 복잡한 레이아웃도 문제를 일으킬 수 있습니다. 그리고 이는 기성 서비스가 아닌 라이브러리입니다. 이를 사용하려면 약간의 코드를 작성해야 합니다.

Python, Node.js 및 브라우저 WebAssembly에 대한 바인딩이 있습니다. 동일한 Rust 파서는 서버 없이 브라우저에서 바로 실행됩니다. GitHub 레포는 이미 별 17,000개를 넘었습니다. 정기적으로 PDF를 모델에 공급한다면 한 번 살펴볼 가치가 있습니다.