{ "cells": [ { "cell_type": "markdown", "id": "39af9ecd", "metadata": {}, "source": [ "# Microsoft PowerPoint\n", "\n", ">[Microsoft PowerPoint](https://en.wikipedia.org/wiki/Microsoft_PowerPoint) is a presentation program by Microsoft.\n", "\n", "This covers how to load `Microsoft PowerPoint` documents into a document format that we can use downstream." ] }, { "cell_type": "code", "execution_count": 1, "id": "721c48aa", "metadata": { "tags": [] }, "outputs": [], "source": [ "from langchain_community.document_loaders import UnstructuredPowerPointLoader" ] }, { "cell_type": "code", "execution_count": 2, "id": "9d3d0e35", "metadata": { "tags": [] }, "outputs": [], "source": [ "loader = UnstructuredPowerPointLoader(\"example_data/fake-power-point.pptx\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "06073f91", "metadata": { "tags": [] }, "outputs": [], "source": [ "data = loader.load()" ] }, { "cell_type": "code", "execution_count": 4, "id": "c9adc5cb", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[Document(page_content='Adding a Bullet Slide\\n\\nFind the bullet slide layout\\n\\nUse _TextFrame.text for first bullet\\n\\nUse _TextFrame.add_paragraph() for subsequent bullets\\n\\nHere is a lot of text!\\n\\nHere is some text in a text box!', metadata={'source': 'example_data/fake-power-point.pptx'})]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "id": "525d6b67", "metadata": {}, "source": [ "### Retain Elements\n", "\n", "Under the hood, `Unstructured` creates different \"elements\" for different chunks of text. By default we combine those together, but you can easily keep that separation by specifying `mode=\"elements\"`." ] }, { "cell_type": "code", "execution_count": 2, "id": "064f9162", "metadata": {}, "outputs": [], "source": [ "loader = UnstructuredPowerPointLoader(\n", " \"example_data/fake-power-point.pptx\", mode=\"elements\"\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "id": "abefbbdb", "metadata": {}, "outputs": [], "source": [ "data = loader.load()" ] }, { "cell_type": "code", "execution_count": 4, "id": "a547c534", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Document(page_content='Adding a Bullet Slide', lookup_str='', metadata={'source': 'example_data/fake-power-point.pptx'}, lookup_index=0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0]" ] }, { "cell_type": "markdown", "id": "b97180c2", "metadata": {}, "source": [ "## Using Azure AI Document Intelligence\n", "\n", ">[Azure AI Document Intelligence](https://aka.ms/doc-intelligence) (formerly known as `Azure Form Recognizer`) is machine-learning \n", ">based service that extracts texts (including handwriting), tables, document structures (e.g., titles, section headings, etc.) and key-value-pairs from\n", ">digital or scanned PDFs, images, Office and HTML files.\n", ">\n", ">Document Intelligence supports `PDF`, `JPEG/JPG`, `PNG`, `BMP`, `TIFF`, `HEIF`, `DOCX`, `XLSX`, `PPTX` and `HTML`.\n", "\n", "This current implementation of a loader using `Document Intelligence` can incorporate content page-wise and turn it into LangChain documents. The default output format is markdown, which can be easily chained with `MarkdownHeaderTextSplitter` for semantic document chunking. You can also use `mode=\"single\"` or `mode=\"page\"` to return pure texts in a single page or document split by page.\n" ] }, { "cell_type": "markdown", "id": "11851fd0", "metadata": {}, "source": [ "## Prerequisite\n", "\n", "An Azure AI Document Intelligence resource in one of the 3 preview regions: **East US**, **West US2**, **West Europe** - follow [this document](https://learn.microsoft.com/azure/ai-services/document-intelligence/create-document-intelligence-resource?view=doc-intel-4.0.0) to create one if you don't have. You will be passing `` and `` as parameters to the loader." ] }, { "cell_type": "code", "execution_count": null, "id": "381d4139", "metadata": {}, "outputs": [], "source": [ "%pip install --upgrade --quiet langchain langchain-community azure-ai-documentintelligence" ] }, { "cell_type": "code", "execution_count": null, "id": "077525b8", "metadata": {}, "outputs": [], "source": [ "from langchain_community.document_loaders import AzureAIDocumentIntelligenceLoader\n", "\n", "file_path = \"\"\n", "endpoint = \"\"\n", "key = \"\"\n", "loader = AzureAIDocumentIntelligenceLoader(\n", " api_endpoint=endpoint, api_key=key, file_path=file_path, api_model=\"prebuilt-layout\"\n", ")\n", "\n", "documents = loader.load()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }