pdf-inspector: Rust-библиотека для PDF

источник ↗ ·

Быстрая Rust-библиотека для классификации PDF и извлечения текста без OCR с поддержкой Python, Node.js и WebAssembly.

privacy

Эта заметка участвует в semantic memory.

AI Summary

🚀 TL;DR: pdf-inspector — это чисто Rust-библиотека для быстрой классификации PDF (TextBased/Scanned/ImageBased/Mixed) и извлечения текста с координатами, конвертации в Markdown без OCR. Работает за <200 мс, создан Firecrawl для обработки ~54% PDF без OCR.

🔑 Ключевые факты: Smart classification за 10-50 мс с confidence score 0.0-1.0 и per-page OCR routing; position-aware extraction с font info, X/Y координатами и multi-column reading order; Markdown conversion с H1-H4, списками, таблицами, code blocks, bold/italic, URL; dual-mode table detection (rectangle-based + heuristic); CID font support (ToUnicode CMap); encoding issue detection; single document load; WebAssembly для браузера; pure Rust без ML.

📌 Важные детали: Benchmark на 200 PDF (opendataloader-bench) показал 0.875 overall score, 0.915 reading order, 0.814 tables, 0.470s на Apple M4 Pro (лучше liteparse, opendataloader, pymupdf4llm, markitdown); архитектура: detector → PdfType, extractor → fonts/content_stream/xobjects/links/layout → tables/markdown; Scan strategies: EarlyExit (default), Full, Sample(n), Pages(vec); поддержка RTL, CJK, ligatures; CLI команды: pdf2md, detect-pdf с флагами --json, --items-json, --compact, --pages, --select-pages; зависимости: только lopdf.

💡 Вывод и значение: Лучше всего подходит для native-text PDF (reports, research papers, financial docs, invoices, legal PDFs), где важны скорость, reading order и структура таблиц; рекомендуется как local default для smart PDF routing (классификация → TextBased → локальная экстракция, иначе OCR); использовать paired benchmark harness для сравнения; MIT license.

Мои мысли

graph

Карта связей