Maison >développement back-end >Tutoriel Python >Plongez en profondeur dans Microsoft 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 ! ?
MarkItDown offre une prise en charge robuste pour un large éventail de types de fichiers, tels que :
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.
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 :
Même les feuilles de calcul Excel à plusieurs onglets sont gérées facilement :
Archives ZIP ? Aucun problème! La bibliothèque analyse tous les fichiers qu'elle contient de manière récursive :
Au départ, l'extraction d'images peut ne donner aucun résultat :
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 :
Remarque : LLM ne traitera pas les PDF basés sur des images. Les PDF nécessitent un prétraitement OCR pour extraire le contenu.
Cependant, les PDF perdent leur formatage lors de l'extraction, donc les titres et le texte brut ne sont pas distingués :
MarkItDown n'est pas sans limites :
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.
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.
Les fichiers Office sont transformés en HTML à l'aide de bibliothèques comme mammoth, pandas ou pptx, puis convertis en Markdown avec BeautifulSoup.
L'audio est transcrit avec la bibliothèque Speech_recognition, qui utilise l'API de Google.
(Microsoft, pourquoi pas Azure ici ? ?)
Le traitement d'image consiste à générer une légende via une invite LLM :
"Écrivez une description détaillée de cette image."
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.
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()) # ...
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 :
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 ! ?
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!