Heim >Backend-Entwicklung >Python-Tutorial >Tauchen Sie tief in Microsoft MarkItDown ein

Tauchen Sie tief in Microsoft MarkItDown ein

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 16:14:20368Durchsuche

Was ist MarkItDown?

MarkItDown ist ein von Microsoft entwickeltes Python-Paket, das zum Konvertieren einer Vielzahl von Dateiformaten in Markdown entwickelt wurde.

Seit ihrem Debüt ist die Popularität der Bibliothek sprunghaft angestiegen und hat innerhalb von nur zwei Wochen über 25.000 GitHub-Sterne gewonnen! ?

Deep Dive into Microsoft MarkItDown

Was macht MarkItDown so beliebt?

MarkItDown bietet robuste Unterstützung für eine Vielzahl von Dateitypen, wie zum Beispiel:

  • Office-Formate: Word, PowerPoint, Excel
  • Mediendateien: Bilder (mit EXIF-Daten und Beschreibungen), Audio (mit Transkriptionsunterstützung)
  • Web- und Datenformate: HTML, JSON, XML, CSV
  • Archive: ZIP-Dateien

Es zeichnet sich durch seine Fähigkeit aus, nicht nur Standardformate wie Word, sondern auch multimodale Daten zu verarbeiten. Es nutzt beispielsweise OCR und Spracherkennung, um Inhalte aus Bildern und Audiodateien zu extrahieren.

Die Möglichkeit, alles in Markdown umzuwandeln, macht MarkItDown zu einem leistungsstarken Tool für das LLM-Training. Durch die Verarbeitung domänenspezifischer Dokumente bietet es umfassenden Kontext für die Generierung genauerer und relevanterer Antworten in LLM-basierten Anwendungen.

Erste Schritte mit MarkItDown

Die Verwendung von MarkItDown ist unglaublich einfach – es werden nur 4 Zeilen Code benötigt:

from markitdown import MarkItDown

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

Hier sind einige Anwendungsfälle von MarkItDown.

Das Konvertieren eines Word-Dokuments generiert einen sauberen und genauen Markdown:

Deep Dive into Microsoft MarkItDown

Selbst Excel-Tabellen mit mehreren Registerkarten werden problemlos gehandhabt:

Deep Dive into Microsoft MarkItDown

ZIP-Archive? Kein Problem! Die Bibliothek analysiert alle darin enthaltenen Dateien rekursiv:

Deep Dive into Microsoft MarkItDown

Anfangs führt die Bildextraktion möglicherweise zu keinen Ergebnissen:

Deep Dive into Microsoft MarkItDown

Das liegt daran, dass MarkItDown zur Generierung von Bildbeschreibungen auf ein LLM angewiesen ist. Durch die Integration eines LLM-Clients können Sie diese Funktion aktivieren:

from openai import OpenAI

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

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

Mit der vorhandenen Konfiguration können Bilddateien erfolgreich verarbeitet werden:

Deep Dive into Microsoft MarkItDown

Hinweis: LLM kann keine bildbasierten PDFs verarbeiten. PDFs benötigen eine OCR-Vorverarbeitung, um Inhalte zu extrahieren.

Deep Dive into Microsoft MarkItDown

PDFs verlieren jedoch beim Extrahieren ihre Formatierung, daher wird nicht zwischen Überschriften und reinem Text unterschieden:

Deep Dive into Microsoft MarkItDown

Einschränkungen

MarkItDown ist nicht ohne Einschränkungen:

  • PDF-Dateien ohne OCR können nicht verarbeitet werden.
  • Formatierung ist beim Extrahieren aus PDF-Dateien nicht verfügbar.

Dennoch ist es als Open-Source-Projekt in hohem Maße anpassbar. Entwickler können die Funktionalität aufgrund der sauberen Codebasis problemlos erweitern.

So funktioniert MarkItDown

Die Architektur von MarkItDown ist unkompliziert und modular.

Es verfügt über eine DocumentConverter-Klasse, die eine generische Convert()-Methode definiert:

from markitdown import MarkItDown

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

Einzelne Konverter erben von dieser Basisklasse und werden dynamisch registriert:

from openai import OpenAI

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

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

Dieser modulare Ansatz macht es einfach, Unterstützung für neue Dateitypen hinzuzufügen.

Dateikonvertierungs-Workflows

Office-Dokumente

Office-Dateien werden mithilfe von Bibliotheken wie Mammoth, Pandas oder PPTX in HTML umgewandelt und dann mit BeautifulSoup in Markdown konvertiert.

Deep Dive into Microsoft MarkItDown

Audiodateien

Audio wird mit der Speech_recognition-Bibliothek transkribiert, die die API von Google nutzt.

(Microsoft, warum nicht Azure hier? ?)

Deep Dive into Microsoft MarkItDown

Bilder

Bei der Bildverarbeitung wird eine Bildunterschrift über eine LLM-Eingabeaufforderung generiert:
„Schreiben Sie eine detaillierte Beschreibung für dieses Bild.“

Deep Dive into Microsoft MarkItDown

PDFs

PDFs werden von der pdfminer-Bibliothek verarbeitet, es fehlt jedoch die integrierte OCR. Sie müssen PDFs für die Textextraktion vorverarbeiten.

Deep Dive into Microsoft MarkItDown

Bereitstellung von MarkItDown als API

MarkItDown kann lokal ausgeführt werden, aber das Hosten als API eröffnet zusätzliche Flexibilität und erleichtert die Integration in Workflows wie Zapier und n8n.

Hier ist ein einfaches Beispiel für die MarkItDown-API mit FastAPI:

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

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

So rufen Sie die API auf:

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())
# ...

Kostenloses Hosten der API

Das Hosten von Python-APIs kann schwierig sein. Herkömmliche Dienste wie AWS EC2 oder DigitalOcean erfordern die Anmietung eines gesamten Servers, was immer kostspielig ist.

Aber jetzt können Sie Leapcell verwenden.

Es handelt sich um eine Plattform, die die Python-Codebasis serverlos hosten kann – sie berechnet nur pro API-Aufruf, mit einer großzügigen kostenlosen Nutzung.

Verbinden Sie einfach Ihr GitHub-Repository, definieren Sie Build- und Startbefehle, und schon kann es losgehen:

Deep Dive into Microsoft MarkItDown

Jetzt verfügen Sie über eine MarkItDown-API, die in der Cloud gehostet wird, bereit für die Integration in Ihren Workflow ist und, was am wichtigsten ist, nur dann aufgeladen wird, wenn sie wirklich aufgerufen wird.


Beginnen Sie noch heute mit dem Aufbau Ihrer eigenen MarkItDown-API auf Leapcell! ?

Deep Dive into Microsoft MarkItDown

Das obige ist der detaillierte Inhalt vonTauchen Sie tief in Microsoft MarkItDown ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn