Maison >développement back-end >Tutoriel Python >Plongez en profondeur dans Microsoft MarkItDown

Plongez en profondeur dans Microsoft MarkItDown

Linda Hamilton
Linda Hamiltonoriginal
2024-12-26 16:14:20296parcourir

Qu'est-ce que MarkItDown ?

MarkItDown est un package Python développé par Microsoft, conçu pour convertir une variété de formats de fichiers en Markdown.

Depuis ses débuts, la bibliothèque a gagné en popularité, gagnant plus de 25 000 étoiles GitHub en seulement deux semaines ! ?

Deep Dive into Microsoft MarkItDown

Qu'est-ce qui rend MarkItDown si populaire ?

MarkItDown offre une prise en charge robuste pour un large éventail de types de fichiers, tels que :

  • Formats bureautiques : Word, PowerPoint, Excel
  • Fichiers multimédia : images (avec données EXIF ​​et descriptions), audio (avec prise en charge de la transcription)
  • Formats Web et données : HTML, JSON, XML, CSV
  • Archives : fichiers ZIP

Sa capacité à gérer non seulement des formats standards comme Word, mais également des données multimodales le distingue. Par exemple, il utilise l'OCR et la reconnaissance vocale pour extraire le contenu des images et des fichiers audio.

La possibilité de convertir n'importe quoi en Markdown fait de MarkItDown un outil puissant pour la formation LLM. En traitant des documents spécifiques à un domaine, il fournit un contexte riche pour générer des réponses plus précises et pertinentes dans les applications basées sur LLM.

Premiers pas avec MarkItDown

L'utilisation de MarkItDown est incroyablement simple : seules 4 lignes de code sont nécessaires :

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("test.xlsx")
print(result.text_content)

Voici quelques cas d'utilisation de MarkItDown.

La conversion d'un document Word génère un Markdown propre et précis :

Deep Dive into Microsoft MarkItDown

Même les feuilles de calcul Excel à plusieurs onglets sont gérées facilement :

Deep Dive into Microsoft MarkItDown

Archives ZIP ? Aucun problème! La bibliothèque analyse tous les fichiers qu'elle contient de manière récursive :

Deep Dive into Microsoft MarkItDown

Au départ, l'extraction d'images peut ne donner aucun résultat :

Deep Dive into Microsoft MarkItDown

C'est parce que MarkItDown s'appuie sur un LLM pour générer des descriptions d'images. En intégrant un client LLM, vous pouvez activer cette fonctionnalité :

from openai import OpenAI

client = OpenAI(api_key="i-am-not-an-api-key")

md = MarkItDown(llm_client=client, llm_model="gpt-4o")

Une fois la configuration en place, les fichiers image peuvent être traités avec succès :

Deep Dive into Microsoft MarkItDown

Remarque : LLM ne traitera pas les PDF basés sur des images. Les PDF nécessitent un prétraitement OCR pour extraire le contenu.

Deep Dive into Microsoft MarkItDown

Cependant, les PDF perdent leur formatage lors de l'extraction, donc les titres et le texte brut ne sont pas distingués :

Deep Dive into Microsoft MarkItDown

Limites

MarkItDown n'est pas sans limites :

  • Les fichiers PDF sans OCR ne peuvent pas être traités.
  • Le formatage n'est pas disponible lors de l'extraction à partir de fichiers PDF.

Néanmoins, en tant que projet open source, il est hautement personnalisable. Les développeurs peuvent facilement étendre ses fonctionnalités grâce à sa base de code propre.

Comment fonctionne MarkItDown

L'architecture de MarkItDown est simple et modulaire.

Il possède une classe DocumentConverter, qui définit une méthode générique convert() :

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("test.xlsx")
print(result.text_content)

Les convertisseurs individuels héritent de cette classe de base et sont enregistrés dynamiquement :

from openai import OpenAI

client = OpenAI(api_key="i-am-not-an-api-key")

md = MarkItDown(llm_client=client, llm_model="gpt-4o")

Cette approche modulaire facilite l'ajout de la prise en charge de nouveaux types de fichiers.

Flux de travail de conversion de fichiers

Documents de bureau

Les fichiers Office sont transformés en HTML à l'aide de bibliothèques comme mammoth, pandas ou pptx, puis convertis en Markdown avec BeautifulSoup.

Deep Dive into Microsoft MarkItDown

Fichiers audio

L'audio est transcrit avec la bibliothèque Speech_recognition, qui utilise l'API de Google.

(Microsoft, pourquoi pas Azure ici ? ?)

Deep Dive into Microsoft MarkItDown

Images

Le traitement d'image consiste à générer une légende via une invite LLM :
"Écrivez une description détaillée de cette image."

Deep Dive into Microsoft MarkItDown

PDF

Les PDF sont gérés par la bibliothèque pdfminer mais ne disposent pas d'OCR intégré. Vous devez prétraiter les PDF pour l'extraction de texte.

Deep Dive into Microsoft MarkItDown

Déployer MarkItDown en tant qu'API

MarkItDown peut s'exécuter localement, mais l'héberger en tant qu'API offre une flexibilité supplémentaire, ce qui facilite son intégration dans des flux de travail comme Zapier et n8n.

Voici un exemple simple d'API MarkItDown utilisant FastAPI :

class DocumentConverter:
    """Base class for all document converters."""

    def convert(
        self, local_path: str, **kwargs: Any
    ) -> Union[None, DocumentConverterResult]:
        raise NotImplementedError()

Pour appeler l'API :

self.register_page_converter(PlainTextConverter())
self.register_page_converter(HtmlConverter())
self.register_page_converter(DocxConverter())
self.register_page_converter(XlsxConverter())
self.register_page_converter(Mp3Converter())
self.register_page_converter(ImageConverter())
# ...

Hébergement de l'API sans frais

L'hébergement des API Python peut être délicat. Les services traditionnels comme AWS EC2 ou DigitalOcean nécessitent la location d'un serveur entier, ce qui est toujours coûteux.

Mais maintenant, vous pouvez utiliser Leapcell.

C'est une plate-forme qui peut héberger la base de code Python sans serveur - elle ne facture que par appel d'API, avec une utilisation généreuse de niveau gratuit.

Connectez simplement votre référentiel GitHub, définissez les commandes de build et de démarrage, et vous êtes prêt :

Deep Dive into Microsoft MarkItDown

Vous disposez désormais d'une API MarkItDown hébergée dans le cloud, prête à être intégrée dans votre flux de travail et, plus important encore, qui ne facture que lorsqu'elle est réellement appelée.


Commencez à créer votre propre API MarkItDown sur Leapcell dès aujourd'hui ! ?

Deep Dive into Microsoft MarkItDown

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn