Publicado el
MarkItDown

¿Alguna vez has querido convertir tus documentos a Markdown? Evaluando MarkItDown con casos prácticos

Imagen del post

Este post evalúa MarkItDown, una herramienta de código abierto de Microsoft diseñada para facilitar la conversión de contenido a formato Markdown. Desde PDFs hasta archivos de Excel, e incluso imágenes, MarkItDown permite a los usuarios optimizar sus flujos de trabajo con su interfaz intuitiva y características robustas. Ya seas un desarrollador, creador de contenido o investigador, esta guía demostrará sus aplicaciones prácticas a través de ejemplos del mundo real.

Explora más sobre herramientas de Markdown en mi entrada de blog aquí.

Introducción a MarkItDown

MarkItDown es una herramienta de línea de comandos diseñada para convertir diversos formatos de contenido a Markdown. Su flexibilidad y facilidad de uso la convierten en un recurso indispensable para aquellos que trabajan frecuentemente con documentación en Markdown. Al soportar formatos como PDFs, hojas de Excel e imágenes, MarkItDown asegura que la conversión de contenido a archivos Markdown estructurados sea sencilla y eficiente.

Instrucciones de instalación

Configurar MarkItDown es rápido y sin complicaciones. Sigue estos pasos para comenzar:

  1. Crea un entorno virtual de Python y actívalo:
python3 -m venv venv
source venv/bin/activate
  1. Instala MarkItDown con pip:
pip install markitdown

Para instrucciones más detalladas, consulta la página oficial de GitHub.

Casos prácticos de uso para MarkItDown

A continuación, se presentan ejemplos prácticos que demuestran cómo aprovechar MarkItDown para convertir diferentes tipos de contenido a Markdown. Estos ejemplos resaltan las capacidades y flexibilidad de la herramienta.

Caso 1: Convertir un archivo PDF a Markdown

El primer caso de uso demuestra la conversión de un PDF de especificaciones de NVIDIA a formato Markdown. Puedes descargar el PDF aquí. Ejecuta el siguiente comando para lograrlo:

markitdown data/jetson-orin-datasheet-nano-developer-kit-3575392-r2.pdf > data/jetson-orin-datasheet-nano-developer-kit-3575392-r2.md

Utilizando las capacidades de línea de comandos de MarkItDown, el PDF se convertirá en un archivo Markdown bien estructurado. A continuación, se muestra una representación visual del PDF original y el archivo Markdown convertido.

PDF original

Figura 1: PDF original de especificaciones de NVIDIA.

Archivo Markdown convertido

Figura 2: Archivo Markdown convertido a partir del PDF de especificaciones de NVIDIA.

Caso 2: Convertir un archivo de Excel a Markdown

El segundo caso de uso implica la conversión de una hoja de Excel que detalla características de LLM a formato Markdown. Ejecuta el siguiente comando para realizar la conversión:

markitdown data/LLM_Models_Info.xlsx > data/LLM_Models_Info.md

La capacidad de MarkItDown para manejar datos tabulares asegura que la salida conserve su estructura y legibilidad. A continuación, se muestran las imágenes del archivo de Excel original y el archivo Markdown convertido.

Archivo de Excel original

Figura 3: Archivo de Excel original con características de LLM.

Archivo Markdown convertido

Figura 4: Archivo Markdown convertido a partir de la hoja de Excel.

Caso 3: Convertir un archivo de Word a Markdown

El tercer caso de uso implica la conversión de un documento de Word que detalla características de LLM con una tabla de contenido a formato Markdown. Ejecuta el siguiente comando para realizar la conversión:

markitdown data/LLMs_features_with_TOC.docx > data/LLMs_features_with_TOC.md

La capacidad de MarkItDown para manejar texto estructurado asegura que la salida conserve su formato, incluyendo la tabla de contenido y los encabezados anidados, lo que la hace altamente legible y organizada. A continuación, se muestran las imágenes del archivo de Word original y el archivo Markdown convertido.

Archivo de Word original

Figura 5: Archivo de Word original con características de LLM y tabla de contenido.

Archivo Markdown convertido

Figura 6: Archivo Markdown convertido a partir del documento de Word con tabla de contenido y encabezados anidados.

Caso 4: Extraer texto de una imagen

MarkItDown también soporta la extracción de texto de imágenes. Para este caso, usaremos el PDF de especificaciones de NVIDIA renderizado como una imagen para comparar el texto extraído con el original.

Para mejorar esta funcionalidad, usaremos el modelo GPT-4o de OpenAI a través de la API de OpenAI, aprovechando un script para la extracción de texto. El script procesa la imagen y genera contenido en Markdown.

Nota: Necesitas tener una clave de API de OpenAI para usar esta función. Asegúrate de haber configurado tu clave de API de OpenAI en tu entorno antes de ejecutar el script.

El siguiente script se utiliza siguiendo el ejemplo del script en el repositorio de GitHub de MarkItDown.

"""
Script: convert_image_to_text.py

Description:
This script converts the text content from an input image file to plain text using the MarkItDown library and OpenAI's GPT-4o model. The input image file and the output text file are specified as command-line arguments.

Usage:
    python convert_image_to_text.py <input_image> <output_file>

Arguments:
    <input_image>: Path to the image file to be processed.
    <output_file>: Path to the file where the extracted text will be saved.

Dependencies:
    - markitdown
    - openai
    - Python 3.x

Example:
    python convert_image_to_text.py example.jpg output.txt
"""

import sys
from markitdown import MarkItDown
from openai import OpenAI

# Ensure command-line arguments are provided
if len(sys.argv) != 3:
    print("Usage: python script.py <input_image> <output_file>")
    sys.exit(1)

input_image = sys.argv[1]  # Input image file
output_file = sys.argv[2]  # Output text file

# Initialize the LLM client and MarkItDown
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")

try:
    # Convert the image to text
    result = md.convert(input_image)

    # Write the result to the output file
    with open(output_file, "w", encoding="utf-8") as f:
        f.write(result.text_content)

    print(f"Conversion successful. Output written to {output_file}")

except Exception as e:
    print(f"Error: {e}")

Ejecuta el siguiente comando para realizar la conversión:

python convert_image_to_text.py data/jetson-orin-datasheet-nano-developer-kit-3575392-r2.png data/jetson-orin-datasheet-nano-developer-kit-3575392-r2_jpg.md

A continuación, se muestran las imágenes de la imagen original y el contenido Markdown extraído.

Imagen original

Figura 7: Imagen renderizada a partir del PDF de especificaciones de NVIDIA.

Markdown extraído

Figura 8: Contenido Markdown extraído de la imagen.

¡Desbloquea el poder de MarkItDown hoy!

  • Ventaja de código abierto: La naturaleza de código abierto de MarkItDown asegura accesibilidad y mejoras continuas impulsadas por la comunidad.
  • Versatilidad en formatos: Ya sean PDFs, hojas de Excel o imágenes, MarkItDown simplifica el proceso de conversión manteniendo la integridad del contenido original.
  • Potenciado con IA: Combinar MarkItDown con herramientas de IA como GPT-4o de OpenAI desbloquea funcionalidades adicionales, como la extracción precisa de texto de imágenes.
  • Eficiente y fácil de usar: Su interfaz de línea de comandos asegura un uso sencillo tanto para usuarios técnicos como no técnicos.
  • Instalación fácil: Configurar MarkItDown es rápido y sin complicaciones, lo que lo hace accesible para usuarios de todos los niveles.
  • Resultados satisfactorios: En los casos demostrados en este tutorial, MarkItDown produjo consistentemente archivos Markdown precisos y bien formateados, preservando la estructura y legibilidad del contenido original, incluyendo secciones, encabezados y tablas de contenido.

¡Descubre el poder de MarkItDown e intégralo en tus flujos de trabajo de conversión de contenido hoy mismo!

Consulta otros tutoriales en mi blog

Si este tutorial te resultó útil, también podrías disfrutar de estos:


¿Disfrutaste este post? ¿Te resultó útil? No dudes en dejar un comentario a continuación para compartir tus pensamientos o hacer preguntas. Se requiere una cuenta de GitHub para unirse a la discusión.

Sigue leyendo

Posts relacionados