Firecrawl's open-source pdf-inspector classifies PDFs and extracts text-based ones into clean Markdown without OCR in under 200ms, letting teams skip paid per-page extraction APIs for the roughly 54% of PDFs that don't need them.

Here's a number worth sitting with: Firecrawl says roughly 54 percent of the PDFs that move through a typical business document pipeline are already text underneath. No scanning, no OCR required. And yet most teams still route every PDF, contracts, invoices, financial reports, through the same paid extraction API, because until now there hasn't been a fast, free way to sort the text-based ones from the scanned ones before the invoice shows up.

Firecrawl's new open-source library, pdf-inspector, does exactly that sorting job locally, in under 200 milliseconds, for free, before a single page touches a paid pipeline like Unstructured, which charges $0.03 a page once you're past its 15,000 free pages a month (capped at $3,000 a month, after which pages go free again up to a million a month), or LlamaParse, which runs on a credit system starting at $50 a month for 40,000 credits, with basic parsing priced as low as one credit a page and its more capable "agentic" tier costing meaningfully more per page.

pdf-inspector is a Rust library with Python, Node.js, and browser WebAssembly bindings that does two jobs. First, it classifies a PDF as text-based, scanned, image-based, or mixed by sampling its content streams, a process that takes 10 to 50 milliseconds and returns both a confidence score and a page-by-page list of exactly which pages still need OCR. Second, for the pages that don't need it, the library extracts text with full position awareness, font info, X/Y coordinates, automatic multi-column reading order, and converts it straight into clean Markdown: headings sized off font ratios, tables built two different ways (from the PDF's own drawing operations, and from text alignment when there's nothing to draw from), lists, bold and italic, even the dotted leader lines in a table of contents collapsed into something readable.

None of this touches a model. There's no OCR engine and no vision-language model in the loop, just a parser walking the PDF's own internal structure, built on a single dependency (the lopdf crate). That's the whole pitch: for the majority of PDFs that already carry machine-readable text, you don't need an AI-powered extraction service at all. You need something that recognizes the document doesn't need one and gets out of the way in twenty milliseconds.

On Firecrawl's own benchmark, run against a 200-document corpus of reports, invoices, and legal filings, pdf-inspector scored highest overall against four other local, non-model parsers, and posted the fastest total runtime of the group. Worth treating as a vendor-reported number rather than an independent audit, though the repo does publish the evaluation harness and per-document results for anyone who wants to check the math themselves.

This is a tool for whoever owns the document pipeline, not whoever's shipping the customer-facing feature. Think the engineer or ops lead building internal search over contracts and financial filings, or a smaller SaaS company ingesting user-uploaded PDFs for a feature that doesn't justify a five-figure document-AI contract. If your volume currently sits inside LlamaParse's free tier or Unstructured's 15,000 free monthly pages, the savings here are close to theoretical. The math changes once you're paying for real volume: a company processing a few hundred thousand pages a month, where roughly half of that is already text-based, can cut its paid-API bill by close to that same proportion just by inserting a free routing step in front of it.

pdf-inspector doesn't do OCR, and it isn't trying to replace Unstructured or LlamaParse outright. It decides which pages still need them. If your document pile is mostly scanned contracts and faxed intake forms, this gets you close to nothing, you're still paying for OCR on the same volume you always were. It's also young: 18 tagged releases and seven contributors, with a maintenance history that includes a same-day fix for a denial-of-service bug in its PDF-parsing dependency, the kind of thing worth seeing caught fast, but also a reminder this is still actively hardening rather than a decade-old, battle-tested parser. And self-hosting it means owning another piece of the pipeline: someone still has to wire its classification output into an actual OCR fallback, monitor it, and keep it updated. Free as in license, not free as in zero engineering time.

The interesting move here isn't the Markdown conversion, plenty of tools already do that. It's the quiet admission, baked directly into the architecture, that a chunk of what businesses pay per-page extraction APIs to do was never actually a hard problem. Half your document bill might just be for a decision that takes twenty milliseconds to make correctly.