mrkeyoor.com_
Mon 02 Nov 01:12 UTC
Dataevaluationupdated 31 Oct 2026

pdf-inspector review

Choose PDF Inspector for local PDF classification and Markdown extraction when you can validate the output and manage a separate OCR runtime. PDF Inspector provides position-aware text extraction and selective local OCR through its native entry points. Our run on October 4, 2026, at commit ef52f77 completed successfully in our Python sandbox; it did not establish extraction accuracy, throughput, or deployment readiness for every binding.

+63stars / 7d
Verdict

Use PDF Inspector when local classification, positioned text, and Markdown extraction fit your pipeline and you can prepare the OCR runtime separately. Our October 4, 2026, run at ef52f77 completed successfully, but its stored parser summaries do not prove extraction quality or coverage of every binding. Before adopting it, compare output with representative PDFs and test both OCR provisioning failures and unusable page results. Choose MarkItDown for broader file conversion, and evaluate OpenDataLoader PDF when Tagged PDF generation is required.

We ran it

Lab card: what happened when we ran pdf-inspectorScreenshot of pdf-inspector (firecrawl.github.io/pdf-inspector)
Departure-board graphic showing what PDF Inspector can and cannot do, plus measured install, build, and test results.
Install✓ · 624s36 packages · 54 MB
Build✓ · 1s
Tests✓ · 62s142 passed · 0 failed of 142 (pytest)
Known vulns0(pip-audit)
Repo374 files~157,022 lines of source · 18 MB · 6 CI workflows · tests dir

Answers from our run

Does pdf-inspector build from source?

Dependencies installed in 624 seconds (36 packages), and the build succeeded in 1 seconds. We cloned commit ef52f77 into a clean Debian container with 3 CPUs and no project-specific setup.

Do pdf-inspector's tests pass?

Yes. The project's own test command finished in 62 seconds and reported 142 passed, 0 failed (pytest).

Does pdf-inspector have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use pdf-inspector?

Browser applications requiring the package itself to perform OCR: the README describes the browser build as pure extraction.

What are the alternatives to pdf-inspector?

MarkItDown, OpenDataLoader PDF. Use PDF Inspector when local classification, positioned text, and Markdown extraction fit your pipeline and you can prepare the OCR runtime separately.

Setup3/5On the visible setup rubric, successful installation with substantial provisioning work earns 3. Our install took 624 seconds; selective OCR additionally requires external libraries and models.
Docs5/5On the visible documentation rubric, core API guidance plus deployment limits and failure handling earns 5. The supplied Python and OCR guides cover platform support, offline operation, external artifacts, and error boundaries.
CommunityN/AThe supplied evidence does not establish contributor responsiveness, participation breadth, or maintenance continuity.
MaturityN/AOne successful Python sandbox run does not establish behavior across releases, bindings, or representative production workloads.

Discussed on

  1. hnPdf-inspector: Rust lib for PDF inspection, classification, and text extraction5 points
  2. hnFast Rust Library for PDF text extraction5 points
  3. hnPdf-inspector: The rust-powered open-source PDF parser for AI3 points

Who it’s for

Developers building PDF pipelines that need classification, Markdown, and positioned text.
Python teams willing to provision external libraries and models for scanned pages.
Teams that can compare extracted output with representative documents before deployment.
Browser developers whose extraction workflow can handle OCR separately.

Who it’s NOT for

Browser applications requiring the package itself to perform OCR: the README describes the browser build as pure extraction.
Teams expecting the Python wheel to include the OCR models, PDFium, and ONNX Runtime.
Workflows that need verified extraction accuracy or runtime performance from this review. Our sandbox run measured command outcomes, not those properties.
Deployments that cannot handle OCR setup or execution errors before a page-quality result exists.

Setup reality

Our run on October 4, 2026, used commit ef52f77 in a Python 3.12 Debian Bookworm sandbox with 3 CPUs and 8 GB of memory. The stored harness reports a successful install in 624 seconds, a successful build step in 1 second, and a successful test command in 62 seconds. Each command returned exit code 0 without timing out. The dependency footprint was 36 packages and 54 MB.

The stored parser summary reports 142 passed, 0 failed, 0 skipped, and 0 errors. These are recorded parser counts, not verified exhaustive counts of unique tests. The raw pytest footer separately reports 142 passed and 9 passing subtests in 58.90 seconds; the subtests are not added to the stored total.

The Python guide documents prebuilt wheels for supported platforms and a Rust toolchain requirement for source builds elsewhere. Routed OCR needs external PDFium and ONNX Runtime libraries plus model files. Successful sandbox commands do not demonstrate that this external OCR path, the CLI, or the Node and browser bindings were deployed or exercised.

What our run establishes

Our run on October 4, 2026, at commit ef52f77 used the Python path in our sandbox. Its stored parser summary reports 142 passed and 0 failed tests. The harness also records command success, exit codes, elapsed time, and timeout status: install, build, and test all returned 0 without timing out.

Installation took 624 seconds and produced a dependency footprint of 36 packages and 54 MB. The build step took 1 second and the test command took 62 seconds. The raw pytest footer reports 142 passed and 9 passing subtests in 58.90 seconds. That footer measures pytest's reported duration; the harness records elapsed time for the command. We retain both and do not add the subtests to the stored total.

These stored parser summaries do not establish exhaustive unique test coverage. The attached record contains no separately named failure to diagnose and does not establish whether protected PDFs, real OCR workloads, or production CLI deployments were tested. We performed no new execution for this correction.

The recorded pip-audit advisory total is 0. Scan coverage is unknown because the supplied record has no scannedPackages value; the packages field does not establish coverage. This result is not a security assessment.

How MrKeyoor tests explains the publisher's approach to recording command outcomes and its limits. That methodology page was retrieved later than this run and does not establish which procedure version the October 4 run used.

Extraction and OCR have different setup requirements

PDF Inspector provides position-aware text extraction and selective local OCR through its native entry points. The README describes classification into text-based, scanned, image-based, or mixed documents, followed by extraction into Markdown. Positioned text exposes coordinates and font information for applications that need to relate extracted content to a page.

The native Python and Node packages include OCR integration, but the external runtime remains separate. Routed OCR requires PDFium, ONNX Runtime, and the pinned PP-OCRv6 Small model set. The Python guide says the wheel embeds none of those artifacts. Clean native-text requests can complete without loading them.

The OCR runtime guide distinguishes two failure paths. A completed local OCR result can recommend a hosted fallback for empty, low-confidence, or incomplete pages. Missing libraries, failed model acquisition, and execution errors occur before that result exists and return an error. A downstream pipeline must handle that error separately if it has a hosted fallback.

For offline deployment, stage the model files and compatible libraries before processing scans. The guide documents offline operation with a populated cache or model directory. It identifies Linux x64 as the platform with an end-to-end OCR CI path; macOS and Windows external-runtime paths are described as preview. Intel macOS requires a compatible custom ONNX Runtime build for local OCR.

Classification needs an output check

The README's default classification strategy samples eight pages. It also documents full scanning, early exit, and caller-selected pages. Sampling is useful when speed matters more than classification precision; choose full scanning when a missed scanned insert would change how you route the document.

Classification alone should not be your acceptance test. Compare extracted text, reading order, and table cells with your own PDFs, and handle empty or unusable output explicitly. This is an adoption check, not a defect observed in our sandbox. The supplied evidence does not independently verify the old page's encrypted-fixture or table-issue allegations, so those allegations do not determine this verdict.

The README includes a vendor benchmark with OCR disabled. It is separate from our sandbox run and does not establish current-version performance on your documents. This review makes no runtime speed or extraction-accuracy claim for version 1.25.2.

When another tool fits the job

MarkItDown converts PDFs and other file formats to Markdown for text analysis pipelines. Consider it when Word, Excel, PowerPoint, images, or audio belong in the same ingestion workflow. It can replace a PDF-only conversion stage when broad format support is the priority, or complement PDF Inspector by handling other formats. Its README warns that the output may not suit high-fidelity conversion for human consumption.

OpenDataLoader PDF provides auto-tagging from untagged PDFs to Tagged PDFs; PDF/UA export is an enterprise feature. Consider it when writing accessibility structure is part of the requirement, rather than only extracting text. That can be a separate remediation stage alongside extraction. Its documented hybrid mode also routes complex pages to an AI backend, but the supplied material does not establish comparative accuracy on your documents.

The supplied PyMuPDF4LLM repository extract describes an empty compatibility package whose former code now lives in PyMuPDF 2.x. It does not support retaining the previous page's extraction and OCR recommendations for that package.

How the editorial scores work

These scores are editorial judgments, separate from the sandbox measurements. For setup ease, 1 means blocked setup, 3 means successful setup with substantial time or provisioning work, and 5 means a straightforward documented setup with little extra provisioning. Intermediate scores fall between those anchors. PDF Inspector receives 3 because installation succeeded, took 624 seconds, and OCR requires additional artifacts.

For documentation, 1 means insufficient installation guidance, 3 means installation and core API coverage, and 5 means those plus deployment limits and failure handling. Intermediate scores reflect partial coverage. The supplied Python and OCR guides earn 5 by documenting platform support, external artifacts, offline operation, provenance, and error boundaries. This rates the supplied guidance, not every example or binding.

Community and maturity remain unassessed. The supplied evidence does not establish contributor responsiveness, maintenance continuity, or behavior across releases and representative production workloads.

Alternatives

ProjectWhat it isPick it when
MarkItDown gh↗A Python utility that converts PDFs and other file formats to Markdown for text analysis.Choose it when a single ingestion workflow must handle Office files, images, or audio as well as PDFs. It can replace a PDF-only conversion stage or complement PDF Inspector for other formats; its README does not promise high-fidelity output for human consumption.
OpenDataLoader PDF gh↗A PDF extraction tool with local and hybrid modes plus Tagged PDF generation.Evaluate it when you need to generate Tagged PDFs or want its documented hybrid processing path for complex pages. Accessibility remediation can complement extraction; PDF/UA export is an enterprise feature, separate from free auto-tagging.

What people are saying

  1. [github-trending] firecrawl/pdf-inspector

Sources

  1. PDF Inspector repository and README
  2. PDF Inspector Python guide
  3. PDF Inspector OCR runtime guide
  4. PDF Inspector Node guide
  5. Issue 554: text-based classification with zero extracted text
  6. Issue 537: merged and complex table cells
  7. Issue 588: table cells split across pages lose text
  8. PDF Inspector v1.25.2 release

More data reviews

spektrafilm · jq · pgx · HowToLiveLonger · ip2region · dbdelve · the whole board →