Skip to main content

giove-pdf

PDF → Markdown. Un motor, dos formas de llamarlo: como sidecar desde Rust (que es como lo usa giovefolio) y como rueda de Python (que es como lo usa Colab).

No es un framework de conversión. Es un motor que sabe leer una capa de texto.

Qué hace y qué no

✅ hace ❌ no hace (y no promete)
Texto con CMap: Identity-H, chino, árabe, coreano Orden de lectura en columnas → lo resuelve indra en el camino lento
Acentos y scripts mixtos Separación de palabras en el camino rápido → la resuelve indra
Clasificación digital / escaneado / mixto, con la confianza de cada página Tablas (no implementado)
OCR de lo que falta, page a page (14 de 284 páginas en 1984, no el libro) HTML, Tagged PDF, PDF/UA, DOCX
Rango de páginas Interfaz gráfica
Firma (en camino)

Se enumera lo que no hace a propósito: es mejor decir que no que fingir. Cada línea de esa columna es una tarea del plan, no un olvido.

⚠️ Bug abierto y medido (2026-10-15): en el camino rápido, las ligaduras se borran. Rectified sale Rectied y fight sale ght: 167 palabras desaparecen en 1984. Es un glifo sin /ToUnicode que pdfboss no resuelve. El camino lento (indra) sí los lee. Ver docs/ODL-COMPARATIVA.md §2.

Instalar

pip install giove-pdf            # el nombre de distribución

El nombre de distribución es giove-pdf y el nombre de importación es giove-pdf: giove-pdf ya existe en PyPI y es de otro proyecto (giove-pdf-project/giove-pdf). Ruedas abi3 (cp38-abi3): una sola sirve para Python 3.8 en adelante, así que en Colab funciona sin compilar nada.

Con OCR:

pip install "giove-pdf[ocr]"      # trae indra-ocr (~18 MB de modelos, la 1ª vez necesita red)

Desde el código:

maturin build --release --out dist

En Windows hace falta el enlazador de MSVC en el PATH (cmd /c 'vcvars64.bat && maturin build --release --out dist').

Usar

Python

from giove-pdf import GiovePDFCore

core = GiovePDFCore()
resultado = core.convert("libro.pdf")
print(resultado["page_count"])

# Solo unas páginas, para no pagar el libro entero
resultado = core.convert("libro.pdf", pages=[1, 3, 5])

# OCR: "auto" sube a indra SOLO las páginas que no se leen bien
print(core.available_ocr_engines())        # ['indra'] o []
resultado = core.convert("libro.pdf", ocr="auto")
core.paginas_flojas("libro.pdf")           # qué páginas no se Cree: [{'page': 1, ...}]

Para procesar un corpus: examples/python/batch/. Un PDF corrupto no tumba el lote — el error queda en su documento y el resto se convierte igual.

Para trocear en chunks con página y posición (lo que necesita giovefonte para citar): examples/python/rag/.

Como sidecar (lo que hace giovefolio)

giove-pdf-cli libro.pdf

Proceso aparte a propósito: el core depende de pyo3, y enlazado arrastraría Python al binario. Así el .exe de la app se queda en 9,9 MB y giove-pdf se puede subir sin recompilar el casco.

Medido, no supuesto

1984 (284 pág.) 43 ms
Cien años de soledad (173 pág., acentos) 87 ms
1984 con OCR: 284 pág., 14 flojas → indra solo esas 23 s
Cien años con OCR, 6,9 pág/s 25,1 s
Contra OpenDataLoader (Java 2.5.13) 60-140× más rápido, y con OCR

Comparación completa con sondas y muestras: docs/ODL-COMPARATIVA.md. Análisis de indra: docs/INDRA.md. Usar a indra como profesor para entrenar un modelo propio: docs/DISTILACION.md.

De dónde viene

giove_pdf_rust_core/ (22 KB) y python/giove-pdf/ son nuestros. El proyecto nació de un fork de OpenDataLoader-PDF cuyo backend de Java se usó para probar rendimiento y no funcionó: solo quedó Rust. El resto del fork (Java, C++, Node, servidor híbrido, arnés de tests) se eliminó en 2026-10-15. En competencia/ queda el material de referencia por si algún día hace falta mirar.

Dependencias Rust, todas permisivas: pdfboss-text (MIT/Apache-2.0), lopdf (MIT), rayon (MIT/Apache-2.0), oar-ocr (Apache-2.0, opcional).

Licencia

Apache-2.0 (ver LICENSE). Giovefolio es MIT: compatible en una sola dirección, pero Apache obliga a conservar el aviso y otorga patente.

Ver también

Metadata

Release files for giove-pdf 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for giove-pdf 0.3.0
File Interpreter ABI Platform Actions
giove_pdf-0.3.0-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details for giove_pdf-0.3.0-cp38-abi3-win_amd64.whl

Release files / giove_pdf-0.3.0-cp38-abi3-win_amd64.whl

Download URL giove_pdf-0.3.0-cp38-abi3-win_amd64.whl
Size 2.2 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
767f070e0309ac94202b0634bc12b8fa914eac58c8415b033b4bf98ae0ac9490
BLAKE2b-256 checksum
How to use checksums
9678af17d9cb04b508bd5a9f65881549e84e53c60fd0fdb3b6c3a09a78650410
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for giove-pdf 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page