游乐游手机版
首页/AI教程/文章详情

使用LlamaIndex库将PDF文件正确转换为文档的操作步骤

时间:2026-06-02 11:44
LlamaIndex 中 PDF 文件读取的最佳实践与正确方法 默认情况下,SimpleDirectoryReader 可以处理多种文件格式,但对于 PDF 这类特殊文档,它往往无法准确筛选内容,会将格式标记一并读取,导致输出杂乱。理想目标是仅提取纯净的正文文本,然而目前尚无内置的 Reader 能

LlamaIndex 中 PDF 文件读取的最佳实践与正确方法

默认情况下,SimpleDirectoryReader 可以处理多种文件格式,但对于 PDF 这类特殊文档,它往往无法准确筛选内容,会将格式标记一并读取,导致输出杂乱。理想目标是仅提取纯净的正文文本,然而目前尚无内置的 Reader 能完美实现这一功能。

学习AI Agent编程-第三天-LlamaIndex - 如何将PDF文件正确转成Document

LlamaIndex 其实提供了一个名为 liteparse 的开源免费解析器。不过为了推广其付费 Reader 产品,官方并未将 liteparse 直接封装成 Reader 公开。那么,我们完全可以自行封装一个。

准备工作

首先需要安装 liteparse 库,执行以下命令:

pip install liteparse

实现自定义 Reader

接下来,我们编写一个自定义类,继承 LlamaIndex 的 BaseReader,借助 liteparse 解析 PDF 文件,并将结果转换为 Document 对象。代码逻辑简洁明了,核心是重写 lazy_load_data 方法,在其中实例化 LiteParse,然后对每个文件路径调用 parser.parse() 方法,提取文本内容和元数据。

from datetime import datetime
from typing import Any, Iterable
from liteparse import LiteParse
from llama_index.core import SimpleDirectoryReader, Document
from llama_index.core.readers.base import BaseReader

# 继承BaseReader
class PDFReader(BaseReader):
    """using liteparse to parse PDF files"""
    def lazy_load_data(self, *args: Any, **load_kwargs: Any) -> Iterable[Document]:
        documents = []
        # 实例化一个liteparser,用于把pdf文件的内容文本读取出来
        parser = LiteParse()
        # 其实args是一个path和tuple
        for path in args:
            # 读取文本内容
            result = parser.parse(str(path))
            # 生成document
            document = Document(
                name=path.name,
                text=result.text,
                metadata={
                    "author": "Kurt Johnson",
                    "file_type": "application/pdf",
                    "file_path": str(path),
                    "file_name": path.name,
                    "creation_date": datetime.now().strftime("%Y-%m-%d"),
                    "last_modified_date": datetime.now().strftime("%Y-%m-%d"),
                }
            )
            documents.append(document)
        return documents

测试运行

编写一个 __main__ 块进行快速测试:

if __name__ == '__main__':
    # 实例一个pdf reader
    parser = PDFReader()
    # 设置pdf类型文件的reader
    pdf_file_extractor = {
        ".pdf": parser
    }
    reader = SimpleDirectoryReader("./data", file_extractor=pdf_file_extractor)
    # 开始处理文件
    documents = reader.load_data()
    for document in documents:
        print(f'{document.metadata['file_name']} - {document.metadata['file_type']}')
        print('-' * 80)
        print(document.text)
        print('-' * 80)
        print('n')

运行过程中可能会输出一些警告日志,尽管不影响核心功能,但会影响体验。这是因为 liteparse 底层依赖 OCR 功能,需要下载对应的语言数据文件。解决方案如下:

  1. 下载以下两个语言数据文件:
https://github.com/tesseract-ocr/tessdata/raw/main/eng.traineddata
https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata
  1. 将下载的两个文件放置到目录 ~/.tesseract-rs/tessdata 下。

完成上述配置后,再次运行就不会出现烦人的警告了。如果不需要中文 OCR 支持,仅下载 eng.traineddata 文件即可满足需求。

如此一来,我们便拥有了一份能够干净提取 PDF 文本内容的自定义 Reader,今后使用 SimpleDirectoryReader 处理 PDF 文件时,它将按照预期正常工作。

来源:https://juejin.cn/post/7646041647046918190
上一篇信息爆炸时代用AI高效撰写论文指南 下一篇AI工具助你高效撰写年终总结轻松生成专业报告
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软Copilot插件安装全流程:浏览器与扩展市场配置
AI教程 · 2026-07-01

微软Copilot插件安装全流程:浏览器与扩展市场配置

围绕MicrosoftCopilot在浏览器、编辑器和扩展市场中的安装与配置,梳理账号准备、安装步骤、权限检查、常见故障及安全使用边界,适合新手快速完成AI办公工具部署。

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置
AI教程 · 2026-07-01

Microsoft Copilot Docker 一键部署指南:镜像拉取、端口映射与数据目录配置

围绕Copilot类AI办公工具的Docker部署流程,说明镜像选择、拉取校验、端口映射、数据目录挂载、环境变量配置、更新回滚与常见故障处理。

微软Copilot API密钥注册获取与国内网络配置
AI教程 · 2026-07-01

微软Copilot API密钥注册获取与国内网络配置

围绕MicrosoftCopilot相关接口接入流程,梳理账号准备、Azure资源创建、密钥获取、环境变量配置、国内网络连通性优化、常见报错处理与安全管理要点。

微软Copilot Linux部署:环境准备到后台运行全流程
AI教程 · 2026-07-01

微软Copilot Linux部署:环境准备到后台运行全流程

MicrosoftCopilot不适合按本地模型方式安装,Linux服务器更常见的是部署企业入口或集成服务。流程需完成账号授权、运行环境、服务配置、反向代理、进程守护与日志监控,并注意数据权限、访问控制和合规边界。

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤
AI教程 · 2026-07-01

Microsoft Copilot macOS安装教程:Apple Silicon与Intel配置步骤

MicrosoftCopilot在Mac上可通过网页应用、Edge侧边栏或Microsoft365组件使用,AppleSilicon与Intel机型重点在系统版本、浏览器、账号授权和隐私设置。