49.llama_index-文档加载(LLamaParse高精度文档解析) 📅 2026/7/9 4:14:32 内容参考于图灵AI大模型全栈LLamaindex提供了一个叫LLamaParse东西它是一个在线的收费的每个月有免费额度它上一章里写的是本地加载文档PDFReader、DocxReader 等本地加载文档它有缺陷不是很智能LLamaParse就比较智能LLamaParse官网地址https://cloud.llamaindex.ai/如下图登录后账号如果不会申请可以去某宝、某鱼去买如下图红框免费使用的额度申请一个key如下图红框官网也提供了Python调用的代码示例它的库安装地址https://developers.llamaindex.ai/llamaparse/?gl1pip install llama-cloud2.1代码效果图代码# 导入操作系统标准模块用于读取环境变量、处理文件路径 import os # 导入 Python 标准异步IO库用于管理异步事件循环、运行异步函数 import asyncio # 从 llama_cloud 包导入异步版 LlamaCloud 客户端 # 模块说明LlamaCloud 是 LlamaIndex 官方推出的云端文档解析服务核心能力为 LlamaParse # 主打高精度 PDF/文档解析可智能识别表格、版式、目录、公式、跨页内容解析效果远优于本地解析工具 # AsyncLlamaCloud 是异步版本的客户端适合批量处理、高并发场景对应还有同步版 LlamaCloud from llama_cloud import AsyncLlamaCloud # 导入环境变量加载函数用于读取 .env 文件中的配置避免 API 密钥等敏感信息硬编码在代码中 from dotenv import load_dotenv # 执行加载 .env 配置文件将文件内的键值对写入系统环境变量 # 执行后 os.getenv() 才可读取到 LLamaParseKey 等自定义配置项 load_dotenv() # 初始化异步 LlamaCloud 客户端实例 # 必填入参 # api_keyLlamaCloud 服务的 API 密钥需从 LlamaCloud 官网申请获取 # 此处从环境变量 LLamaParseKey 中读取对应 .env 文件里的同名配置项 client AsyncLlamaCloud(api_keyos.getenv(LLamaParseKey)) # 定义异步主函数包含完整的「文件上传 → 云端解析 → 结果处理 → 本地保存」全流程 async def main(): # 第一步上传本地文件到 LlamaCloud 云端 # 方法名client.files.create # 作用将本地文档文件上传到 LlamaCloud 服务器返回文件对象后续解析任务基于返回的文件 ID 执行 # 必填入参 # filestr 类型本地待解析文件的路径支持相对路径/绝对路径 # purposestr 类型文件用途标识固定传 parse 表示该文件用于文档解析 # 返回值文件对象包含 id文件唯一标识、文件名、文件大小等元数据属性 file_obj await client.files.create(file./data_file/财务管理文档.pdf, purposeparse) # 打印文件唯一 ID可用于任务追溯、问题排查 print(file_obj.id) # 第二步发起文档解析请求等待解析完成 # 方法名client.parsing.parse # 作用根据文件 ID 发起云端解析任务await 会阻塞等待解析完成后返回完整结果 # 必填入参 # file_idstr 类型上传文件得到的唯一 ID指定本次要解析的目标文件 # 常用可选入参 # tierstr 类型解析等级模式 # - standard标准模式速度快、成本低适合版式简单的普通文字版 PDF # - agentic智能模式调用 Agent 能力处理复杂版式、嵌套表格、跨页内容、扫描件解析质量更高成本也更高 # versionstr 类型解析引擎版本latest 表示使用最新稳定版也可指定具体版本号保证一致性 # expandlist[str] 类型指定需要返回的解析结果格式支持多选 # - markdown返回分页的 Markdown 内容结果包含 pages 数组每页独立对应一段 Markdown # - markdown_full返回完整拼接好的全文 Markdown直接得到单段完整文本无需手动拼接 # - text返回纯文本内容 # - json返回结构化 JSON 结果包含段落、表格、标题层级等详细语义结构 # 返回值解析结果对象包含 expand 指定的对应内容属性 result await client.parsing.parse( file_idfile_obj.id, tieragentic, versionlatest, # 此处指定返回分页 Markdown后续需手动遍历每页拼接全文 expand[markdown], ) # 打印 Markdown 结果的完整结构对象调试时可用于校验返回格式 print(result.markdown) # 第三步遍历分页结果逐页写入本地 Markdown 文件 # 以追加模式打开本地文件指定 utf-8 编码避免中文乱码 # 注意使用 a 追加模式多次运行代码会重复追加内容若只需单次生成建议改为 w 覆盖模式 with open(财务管理文档.md, a, encodingutf-8)as f: # 遍历分页 Markdown 列表enumerate 同时获取索引和单页对象 # result.markdown.pages 是列表类型每个元素对应一页的解析结果 for i, page in enumerate(result.markdown.pages): # 打印分页分隔线与页码索引 i 从 0 开始1 后符合人类阅读的页码习惯 print(f 第 {i1} 页 ) # 以 repr 形式打印当前页的 Markdown 内容可看到换行符、特殊字符等原始格式用于调试校验 print(repr(page.markdown)) # 将当前页的 Markdown 内容写入本地文件逐页拼接成完整文档 f.write(page.markdown) # 脚本入口保护仅直接运行该脚本时执行逻辑被其他文件导入时不执行 if __name__ __main__: # 启动异步事件循环运行 main 异步函数 # asyncio.run() 是 Python 3.7 提供的标准异步入口会自动创建、管理、关闭事件循环 asyncio.run(main())上面的是异步的方式下方是同步的# 导入操作系统标准模块用于读取环境变量、处理文件路径 import os # 导入环境变量加载函数用于读取 .env 配置文件避免密钥硬编码 from dotenv import load_dotenv # 导入 LlamaCloud 同步客户端类 # 模块说明LlamaCloud 是 LlamaIndex 官方的云端文档解析服务核心能力为 LlamaParse # 主打高精度 PDF 解析可智能还原表格、版式、目录、公式、跨页内容效果远优于本地开源解析工具 # 本类为同步版本客户端调用方式简单直观适合单文件处理、简单脚本场景对应还有 AsyncLlamaCloud 异步版 from llama_cloud import LlamaCloud # 加载 .env 文件中的配置到系统环境变量 # 执行后 os.getenv() 可读取到 LLamaParseKey 等自定义配置项 load_dotenv() # 初始化 LlamaCloud 同步客户端实例 # 必填入参 # api_keyLlamaCloud 服务的 API 密钥需在 LlamaCloud 官网申请获取 # 此处从环境变量 LLamaParseKey 读取对应 .env 文件中的同名配置 client LlamaCloud(api_keyos.getenv(LLamaParseKey)) # 第一步上传本地文件到云端 # 方法client.files.create # 作用将本地文档文件上传至 LlamaCloud 服务器生成唯一文件 ID后续解析基于该 ID 执行 # 必填入参 # file字符串类型本地待解析文件的相对路径或绝对路径 # purpose字符串类型文件用途标识解析场景固定传 parse # 返回值文件对象包含 id文件唯一标识、文件名、文件大小等元数据属性 file client.files.create( file./data/财务管理文档.pdf, # 本地文件路径 purposeparse, # 固定写法表示用于解析 ) print(f文件上传成功file_id: {file.id}) # 第二步发起云端解析并获取结果 # 方法client.parsing.parse # 作用根据文件 ID 发起文档解析任务同步阻塞等待解析完成后返回完整结果 # 必填入参 # file_id字符串类型上传文件返回的唯一 ID指定本次解析的目标文件 # 常用可选入参 # tier字符串类型解析精度等级 # - standard标准模式速度快、成本低适合版式简单的普通文字版 PDF # - agentic智能增强模式通过 Agent 能力处理复杂版式、嵌套表格、跨页内容、扫描件解析准确率更高成本也更高 # version字符串类型解析引擎版本latest 表示使用最新稳定版也可指定具体版本号保证结果一致性 # expand列表类型指定需要返回的解析结果格式支持多选 # - markdown返回分页 Markdown结果包含 pages 数组每页对应独立 Markdown 内容粒度灵活 # - markdown_full返回完整拼接好的全文 Markdown直接得到单段完整文本无需手动拼接 # - text返回纯文本内容 # - json返回结构化 JSON包含段落、表格、标题层级、版式信息等详细语义结构 # 返回值解析结果对象包含 expand 指定的对应内容属性 result client.parsing.parse( file_idfile.id, tieragentic, # 解析层级推荐 agentic最高精度 versionlatest, # 使用最新版本的解析引擎 expand[markdown], # 返回 Markdown 格式 ) # print(result) # 调试时可打开查看完整结果对象结构 # 第三步分页写入本地 Markdown 文件 # 以追加模式打开本地文件指定 utf-8 编码避免中文乱码 # 注意a 为追加模式多次运行脚本会向文件尾部重复追加内容若只需单次生成建议改为 w 覆盖模式 with open(财务管理文档.md, a, encodingutf-8)as f: # 遍历分页 Markdown 列表enumerate 同时获取页索引和单页对象 # result.markdown.pages 为列表类型每个元素对应一页的解析结果 for i, page in enumerate(result.markdown.pages): # 打印分页分隔线与页码索引从 0 开始1 后符合人类阅读的页码习惯 print(f 第 {i1} 页 ) # 以 repr 形式打印单页 Markdown 内容可直观看到换行符、特殊字符等原始格式用于调试校验 print(repr(page.markdown)) # 将当前页的 Markdown 内容写入本地文件逐页拼接成完整文档 f.write(page.markdown) # print()