Lleva tus documentos a pipelines de IA — directamente desde Python, on‑premise, con un solo pip install.
Hoy lanzamos la primera versión pública de GroupDocs.Markdown para Python vía .NET en PyPI. La biblioteca convierte PDF, Word, Excel, EPUB y más de 20 formatos adicionales a Markdown limpio y semántico — el formato con el que LLMs, pipelines RAG y generadores de sitios estáticos trabajan mejor.
Si has estado siguiendo el lanzamiento .NET de septiembre (o la revisión completa de la API en la 26.3), la razón es la misma: el formato del documento lleva semántica, y preservar esa estructura semántica es lo que permite a un sistema RAG dar buenas respuestas. La publicación anterior cubre el problema (OCR aplana la estructura, los LLMs necesitan markdown) y la solución (un renderizador basado en DOM que recorre el documento y genera Markdown) en profundidad — no repetiremos esa historia aquí.
En su lugar, centrémonos en lo nuevo para los desarrolladores de Python.
Qué obtienes
- Una única rueda, sin dependencias en tiempo de ejecución.
pip install groupdocs-markdown-netdescarga una rueda autocontenida que incluye el runtime de .NET y todas las bibliotecas nativas que necesita. No hay instalación dedotnet, ni Microsoft Office, ni Adobe Acrobat, ni servicios en la nube. - Multiplataforma. Windows x64/x86, Linux x64, macOS x64 y Apple Silicon (ARM64). Python 3.5 a 3.14.
- Una API pythonica. Las clases usan
PascalCase, los métodos y propiedades usansnake_case, los valores de enumeración usanUPPER_SNAKE_CASE. Los administradores de contexto liberan los documentos cargados de forma determinista. - Verdaderamente async. Cada método estático e de instancia tiene una contraparte
_async. La E/S de archivos es asíncrona y la conversión intensiva en CPU se ejecuta en un hilo de trabajo — tu bucle de eventosasynciopermanece libre. - Amigable para agentes de IA. La rueda instalada incluye un archivo
AGENTS.mdpara que los asistentes de codificación (Claude Code, Cursor, GitHub Copilot, Codex) descubran automáticamente la superficie de la API, los patrones de uso idiomáticos y los consejos de solución de problemas. La documentación también se publica comollms.txt, un corpus de un solo archivo (llms-full.txt), Markdown por página y un servidor MCP — consulta la sección Amigable con IA por diseño para más detalles.
Comenzar
pip install groupdocs-markdown-net
La conversión más simple es una sola línea:
from groupdocs.markdown import MarkdownConverter
# Convertir a una cadena
md = MarkdownConverter.to_markdown("business-plan.docx")
# O escribir directamente a un archivo
MarkdownConverter.to_file("business-plan.docx", "business-plan.md")
Eso es todo — sin configuración, sin opciones, sin código boilerplate. El modo de evaluación procesa las primeras 3 páginas y añade una marca de agua. Para eliminar los límites, aplica una licencia:
from groupdocs.markdown import License
License().set_license("path/to/license.lic")
O establece GROUPDOCS_LIC_PATH como variable de entorno y se aplicará automáticamente al importar.
Formatos compatibles
El paquete Python maneja la misma amplitud de formatos que la biblioteca .NET:
- PDF —
.pdf - Word / Rich Text —
.doc,.docx,.docm,.dot,.dotx,.dotm,.rtf,.odt,.ott - Hojas de cálculo —
.xls,.xlsx,.xlsb,.xlsm,.csv,.tsv,.ods,.ots - eBooks —
.epub,.mobi - Texto / Marcado / Ayuda —
.txt,.xml,.chm
Ejemplos pythonicos
Opciones de conversión y estrategias de imágenes
from groupdocs.markdown import (
MarkdownConverter,
ConvertOptions,
MarkdownFlavor,
ExportImagesToFileSystemStrategy,
)
strategy = ExportImagesToFileSystemStrategy("output/images")
strategy.images_relative_path = "images" # 
options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.heading_level_offset = 1 # # Title -> ## Title
options.include_front_matter = True # prepend YAML metadata
options.image_export_strategy = strategy
MarkdownConverter.to_file("report.docx", "output/report.md", convert_options=options)
Inspección de documento sin conversión
from groupdocs.markdown import MarkdownConverter
info = MarkdownConverter.get_info("business-plan.docx")
print(f"{info.file_format}, {info.page_count} pages, author: {info.author}")
Cargando un archivo protegido con contraseña
from groupdocs.markdown import MarkdownConverter, LoadOptions, FileFormat
load_opts = LoadOptions(FileFormat.DOCX)
load_opts.password = "secret"
MarkdownConverter.to_file("protected.docx", "output.md", load_options=load_opts)
Streams y administradores de contexto
from groupdocs.markdown import MarkdownConverter
with open("document.docx", "rb") as stream:
with MarkdownConverter(stream) as converter:
converter.convert("document.md")
API async — convirtiendo muchos documentos concurrentemente
Como la E/S de archivos es asíncrona, asyncio.gather() permite que un solo trabajador procese muchos documentos sin bloquear:
import asyncio
from groupdocs.markdown import MarkdownConverter
async def convert_many():
await asyncio.gather(
MarkdownConverter.to_file_async("a.docx", "a.md", None),
MarkdownConverter.to_file_async("b.pdf", "b.md", None),
MarkdownConverter.to_file_async("c.xlsx", "c.md", None),
)
asyncio.run(convert_many())
Esto hace que la biblioteca encaje de forma natural en frameworks ASGI como FastAPI — un solo trabajador puede atender muchas solicitudes de conversión concurrentes sin contención de hilos.
Manejo de errores
Todos los métodos de conversión lanzan excepciones en caso de fallo, con tipos específicos para escenarios comunes:
from groupdocs.markdown import (
MarkdownConverter,
DocumentProtectedException,
InvalidFormatException,
GroupDocsMarkdownException,
)
try:
MarkdownConverter.to_file("annual-report.docx", "annual-report.md")
except DocumentProtectedException:
print("Wrong or missing password.")
except InvalidFormatException:
print("File is corrupt or unsupported.")
except GroupDocsMarkdownException as ex:
print(f"Conversion failed: {ex}")
Construido para pipelines RAG y LLM
Markdown es el formato de entrada preferido para modelos de incrustación y pipelines de recuperación — preserva encabezados, listas, tablas y énfasis mientras es fácil de dividir y tokenizar. Una ingestión RAG típica se ve así:
import re
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy, MarkdownFlavor
options = ConvertOptions()
options.image_export_strategy = SkipImagesStrategy() # solo texto para RAG
options.flavor = MarkdownFlavor.COMMON_MARK
MarkdownConverter.to_file("business-plan.pdf", "business-plan.md", convert_options=options)
with open("business-plan.md", "r", encoding="utf-8") as f:
markdown = f.read()
# Dividir por encabezados de nivel superior, luego incrustar/indexar cada fragmento
chunks = [c for c in re.split(r"\n#{1,2} ", markdown) if c.strip()]
Como la biblioteca se ejecuta completamente on‑premise, los documentos sensibles nunca abandonan tu entorno — un requisito común en industrias reguladas, equipos legales y bases de conocimiento internas.
Amigable con IA por diseño
La mayoría de los SDK de Python tratan a los asistentes de codificación de IA como una idea posterior — el desarrollador aún debe apuntar al agente a la documentación, pegar ejemplos o depurar mediante prueba y error. GroupDocs.Markdown para Python vía .NET invierte eso: la biblioteca está diseñada para que agentes como Claude Code, Cursor, GitHub Copilot y Codex la adopten sin configuración manual.
AGENTS.md se incluye dentro del wheel
Este es el primer paquete GroupDocs que incluye un archivo AGENTS.md directamente dentro del wheel instalado. El archivo sigue la emergente convención AGENTS.md — un README en Markdown plano escrito específicamente para asistentes de codificación de IA en lugar de humanos.
Al ejecutar pip install groupdocs-markdown-net, el archivo queda en:
site-packages/groupdocs/markdown/AGENTS.md
Un asistente de IA que abra tu proyecto puede leerlo y aprender de inmediato:
- La superficie completa de la API pública (clases, métodos, enums, excepciones) y sus relaciones.
- Patrones de uso idiomáticos para los escenarios más comunes — API estática vs instancia, sync vs async, estrategias de imágenes, front matter, manejo de errores.
- Trampas comunes y cómo evitarlas — por ejemplo, qué sobrecargas de
ConvertOptionsaceptanNone, cómo manejar archivos protegidos con contraseña, cómo capturar advertencias de conversión. - Solución de problemas para cuestiones específicas de plataforma (libSkiaSharp en macOS, ICU en Linux).
En la práctica, esto significa que puedes decir “usa groupdocs-markdown-net para convertir esta carpeta de PDFs a Markdown para mi pipeline RAG” y el agente escribe código funcional en el primer intento — sin nombres de método alucinados, sin orden de argumentos incorrecto, sin importaciones adivinadas.
Documentación legible por máquinas
Para los agentes que necesiten buscar algo que no esté en AGENTS.md, la documentación completa del producto también se publica en forma legible por máquinas:
- Corpus de un solo archivo — la documentación completa como un único archivo Markdown, listo para colocar en la ventana de contexto de un agente:
https://docs.groupdocs.com/markdown/python-net/llms-full.txt - Markdown por página — agrega
.mda cualquier URL de docs para obtener el origen crudo:
https://docs.groupdocs.com/markdown/python-net/quick-start-guide.md - Índice
llms.txt— una tabla de contenidos estilo llms.txt que dirige a los agentes a las páginas que necesitan:
https://docs.groupdocs.com/markdown/python-net/llms.txt
Servidor MCP para búsquedas de documentación en vivo
Para los agentes que hablen Model Context Protocol, exponemos la documentación como un servidor MCP. Añade esto a la configuración de tu Claude Code o Cursor:
{
"mcpServers": {
"groupdocs-docs": {
"url": "https://docs.groupdocs.com/mcp"
}
}
}
Después, tu agente podrá consultar la documentación bajo demanda en lugar de depender de datos de entrenamiento que pueden estar desactualizados.
Markdown entra, Markdown sale
Hay una agradable simetría aquí: la salida de la biblioteca es Markdown — el formato que los LLMs procesan mejor para RAG — y su documentación también es Markdown, servida como un solo archivo para una fácil ingestión en la ventana de contexto. Ya sea que le pidas a un agente que escriba código que use la biblioteca, o que comprenda tus documentos mediante la biblioteca, Markdown es el medio común.
Ejemplo de exportación
Los fragmentos anteriores están cerca del programa útil más corto que puedes escribir con la biblioteca. Aquí tienes la misma idea empaquetada como un proyecto ejecutable — documento fuente, script Python, salida pre‑generada, requirements.txt y un Dockerfile — para que lo pruebes de extremo a extremo sin escribir nada desde cero.
DOCX de origen
El archivo fuente business-plan.docx es un breve plan de negocio rico en formato, con encabezados, tablas, imágenes y metadatos.
Script Python
from groupdocs.markdown import MarkdownConverter, ConvertOptions, MarkdownFlavor
def quick_example():
"""Convertir un documento Word a Markdown con sabor GitHub y front matter YAML."""
# One-liner — devuelve una cadena Markdown
md = MarkdownConverter.to_markdown("business-plan.docx")
# Con opciones — escribe a un archivo
options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.include_front_matter = True
options.heading_level_offset = 1
MarkdownConverter.to_file("business-plan.docx", "quick-example.md", convert_options=options)
if __name__ == "__main__":
quick_example()
Markdown de salida
El archivo de salida quick-example.md comienza con un bloque de front‑matter YAML extraído automáticamente de los metadatos del documento, seguido del contenido convertido con tablas al estilo GitHub y una jerarquía de encabezados desplazada (listo para incrustarse dentro de un documento mayor).
Aplicación de ejemplo ejecutable
Todo empaquetado junto: sample-app.zip. Descomprime y luego:
cd src
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
python quick_example.py
O ejecútalo en Docker — el Dockerfile incluido configura la dependencia ICU que necesita el runtime .NET empaquetado en Linux:
cd src
docker build -t groupdocs-markdown-python-example .
docker run --rm -v "$(pwd)/output:/app/output" groupdocs-markdown-python-example
Resumen
GroupDocs.Markdown para Python vía .NET lleva el motor completo de conversión documento‑a‑Markdown a Python como una rueda autocontenida — sin runtime externo, sin nube, sin sorpresas. Una API pythonica, soporte async y una integración de herramientas de IA de primera clase la convierten en una opción práctica para equipos Python que construyen sistemas RAG, generadores de sitios estáticos o pipelines de procesamiento de documentos.
Más información
- Paquete PyPI: https://pypi.org/project/groupdocs-markdown-net/
- Página del producto: https://products.groupdocs.com/markdown/python-net/
- Documentación: https://docs.groupdocs.com/markdown/python-net/
- Notas de la versión: https://releases.groupdocs.com/markdown/python-net/release-notes/
- Ejemplos de código en GitHub: https://github.com/groupdocs-markdown/GroupDocs.Markdown-for-Python-via-.NET
- Información de licencia: https://about.groupdocs.com/legal/
- Publicación relacionada del lanzamiento .NET: GroupDocs.Markdown for .NET — First Public Release
Soporte y comentarios
Para preguntas o asistencia técnica, utiliza nuestro Free Support Forum — estaremos encantados de ayudar.