Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Fast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.
| Date | Stars |
|---|---|
| 2026-07-24 | 1641 |
| 2026-07-25 | 1644 |
| 2026-07-28 | 1644 |
| 2026-07-30 | 1644 |
| 2026-08-06 | 1644 |
| 2026-08-09 | 13666 |
| 2026-08-18 | 16074 |
| 2026-08-19 | 16225 |
| 2026-08-20 | 16323 |
| 2026-08-21 | 16422 |
| 2026-08-22 | 16469 |
| 2026-08-23 | 16524 |
| 2026-08-24 | 16597 |
| 2026-08-25 | 16670 |
| 2026-08-26 | 16727 |
| 2026-08-27 | 16786 |
| 2026-08-28 | 16832 |
| 2026-08-29 | 16861 |
| 2026-08-30 | 16915 |
| 2026-08-31 | 17141 |
| 2026-09-01 | 17678 |
| 2026-09-02 | 18258 |
| 2026-09-03 | 18737 |
| 2026-09-04 | 18799 |
| 2026-09-05 | 18844 |
| 2026-09-06 | 18875 |
| 2026-09-07 | 18912 |
| 2026-09-08 | 18941 |
| 2026-09-09 | 18970 |
| 2026-09-10 | 18998 |
| 2026-09-11 | 19028 |
| 2026-09-12 | 19049 |
| 2026-09-13 | 19074 |
| 2026-09-14 | 19096 |
| 2026-09-15 | 19122 |
| 2026-09-16 | 19146 |
| 2026-09-17 | 19174 |
| 2026-09-18 | 19208 |
| 2026-09-19 | 19231 |
| 2026-09-20 | 19251 |
Today
+20 stars today
This week
+177 stars this week
This month
+2.8k stars this month
Momentum
317.0
growth rate 0.93%/day
# pdf-inspector [](https://crates.io/crates/pdf-inspector) [](https://www.npmjs.com/package/@firecrawl/pdf-inspector) [](https://pypi.org/project/pdf-inspector/) [](LICENSE) Fast Rust library for PDF classification and text extraction. By default it detects whether a PDF is text-based or scanned, extracts text with position awareness, and converts to clean Markdown without OCR. Native Rust and CLI consumers can opt into selective OCR. Includes bindings for [Python](docs/python.md), [Node.js](napi/README.md), and [browser WebAssembly](wasm/README.md). Built by [Firecrawl](https://firecrawl.dev) to handle text-based PDFs locally in under 200ms, skipping expensive OCR services for the ~54% of PDFs that don't need them. ## Features - **Smart classification** — Detect TextBased, Scanned, ImageBased, or Mixed PDFs in ~10-50ms by sampling content streams. Returns a confidence score (0.0-1.0) and per-page OCR routing. - **Text extraction** — Position-aware extraction with font info, X/Y coordinates, and automatic multi-column reading order. Rotated runs (margin stamps, chart axis titles) keep a true axis-aligned box and report their `rotation` angle instead of collapsing to zero width. - **Markdown conversion** — Headings (H1-H4 via font size ratios), bullet/numbered/letter lists, code blocks (monospace font detection), tables (rectangle-based and heuristic), bold/italic formatting, URL linking, and page breaks. - **Table detection** — Dual-mode: rectangle-based detection from PDF drawing ops, plus heuristic detection from text alignment. Handles financial tables, footnotes, and continuation tables across pages. - **CID font support** — ToUnicode CMap decoding for Type0/Identity-H fonts, UTF-16BE, UTF-8, and Latin-1 encodings. - **Multi-column layout** — Automatic detection of newspaper-style columns, sequential reading order, and RTL text support. - **Encoding issue detection** — Automatically flags broken font encodings so callers can fall back to OCR. - **Selective OCR** — Rust, CLI, Python, and Node can render only pages that need OCR, run PP-OCRv6 Small locally, and preserve per-page provenance and hosted-fallback recommendations. - **Single document load** — The document is parsed once and shared between detection and extraction, avoiding redundant I/O. - **Browser WebAssembly** — Run the same Rust parser locally in browsers and Web Workers, with embedded CMaps and no server round trip. - **Lightweight by default** — The default Rust and browser builds remain pure extraction. Native Python and Node packages include the OCR integration, but PDFium, ONNX Runtime, and model files remain external and are touched only when a page is routed to OCR. ## Benchmark Evaluated on the [opendataloader-bench](https://github.com/opendataloader-project/opendataloader-bench) corpus (200 PDFs). Only local engines without model-based PDF parsing are shown; OCR was disabled. Scores are 0-1, higher is better. | Engine | Overall | Reading Order (NID) | Tables (TEDS) | Headings (MHS) | Speed (200 docs) | |---|---|---|---|---|---| | pdf-inspector | **0.875** | **0.915** | **0.814** | 0.788 | **0.470s** | | liteparse | 0.873 | 0.913 | 0.693 | **0.811** | 0.750s | | opendataloader | 0.831 | 0.902 | 0.489 | 0.739 | 2.569s | | pymupdf4llm | 0.735 | 0.886 | 0.401 | 0.424 | 17.117s | | markitdown | 0.589 | 0.844 | 0.273 | 0.000 | 16.165s | Results were refreshed on July 31, 2026, on an Apple M4 Pro. Engine versions were pdf-inspector 0.2.6, LiteParse 2.10.1, OpenDataLoader 2.2.1, PyMuPDF4LLM 0.2.0, and MarkItDown 0.1.5. Speed is the median of five alternating or rotating complete corpus runs after an excluded warm-up run, with each parser processing documents sequentially in a single process. The complet
Excerpt of 13,470 characters
Read on GitHubAbimael Martell · @firecrawl · Mexico
414
Roman Yurchak · France
2
Sheroy Cooper
1
Nathan · @Microsoft · China
1
1
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:6d2d29527f4a41f5, topic:pdf-parser, readme:document parsing, readme:ocr