Libreria Gratis Activo

pdf-inspector

Para detectar si un PDF es texto, escaneado, imagen o mixto y extraer su contenido sin lanzar OCR innecesario.

Librería en Rust que clasifica PDFs y extrae su texto a Markdown de forma muy rápida, con bindings para Python y Node.js.

Notas y contexto

Qué es

pdf-inspector es una librería open source de Firecrawl escrita en Rust para inspeccionar y procesar PDFs. Su función principal es clasificar un documento como basado en texto, escaneado, basado en imágenes o mixto muestreando sus flujos de contenido, y a partir de ahí extraer el texto con su posición y convertirlo a Markdown. Se distribuye como crate de Rust y ofrece bindings para Python (vía PyO3) y Node.js (vía napi-rs). Se publica bajo licencia MIT.

Para qué sirve

  • Decidir si un PDF necesita OCR o no antes de procesarlo, evitando trabajo costoso e innecesario.
  • Extraer texto de PDFs conservando la posición, la información de fuentes y las coordenadas.
  • Convertir un PDF a Markdown con cabeceras, listas, tablas, código y formato de negrita o cursiva.
  • Integrar la inspección de documentos en pipelines de scraping o ingestión que usan Python o Node.js.

Cuándo usarlo

Encaja cuando procesas grandes volúmenes de PDFs y quieres enrutar de forma inteligente: aplicar extracción directa a los documentos de texto y reservar el OCR solo para los escaneados. La clasificación de un documento ronda los 10-50 ms, así que es adecuada para casos donde el rendimiento importa. Si solo necesitas leer texto de PDFs sencillos en Python sin clasificación, alternativas como pdfplumber o PyMuPDF pueden bastar; pdf-inspector destaca cuando el routing y la velocidad son críticos.

Ejemplo

Uso como crate de Rust:

cargo add pdf-inspector
use pdf_inspector::process_pdf;

let result = process_pdf("documento.pdf")?;
println!("Tipo: {:?}", result.pdf_type);
if let Some(markdown) = &result.markdown {
    println!("{}", markdown);
}

Uso desde Node.js con el paquete @firecrawl/pdf-inspector:

npm install @firecrawl/pdf-inspector
import { processPdf } from '@firecrawl/pdf-inspector';
import { readFileSync } from 'fs';

const result = processPdf(readFileSync('documento.pdf'));
console.log(result.pdfType); // "TextBased", "Scanned", "ImageBased", "Mixed"
console.log(result.markdown); // cadena Markdown o null

Puntos clave

  • Clasifica un PDF como texto, escaneado, imagen o mixto en milisegundos muestreando los flujos de contenido.
  • Extracción de texto consciente de la posición, con detección de columnas múltiples y orden de lectura.
  • Detección de tablas mediante enfoques basados en rectángulos y heurísticas, con salida a Markdown.
  • Soporte de fuentes CID (UTF-16BE, UTF-8, Latin-1) y arquitectura ligera en Rust puro con pocas dependencias.

Ten en cuenta

Es un proyecto joven; conviene revisar la versión publicada en crates.io y npm antes de fijarla en producción. pdf-inspector clasifica y extrae texto, pero no realiza OCR por sí mismo: para PDFs escaneados sigues necesitando un motor de OCR aparte (la librería precisamente te ayuda a decidir cuándo lanzarlo). Los bindings de Python se generan con maturin, por lo que su instalación requiere el toolchain de Rust.

Volver al directorio
Volver al directorio