游乐游手机版
首页/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工具助你高效撰写年终总结轻松生成专业报告
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

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

同类最新

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

更多
手把手教你免费获取小米MiMo百万亿Token及Claude Code配置全流程
AI教程 · 2026-06-04

手把手教你免费获取小米MiMo百万亿Token及Claude Code配置全流程

前言:百万亿Token免费额度领取指南 近期,小米MiMo大模型推出了重磅福利——百万亿Token的免费额度,申请流程极为简便,额度也十分充足,并且支持直接接入Claude Code等主流工具。本文将完整演示从注册申请、获取API密钥,到最终在Claude Code中完成配置的全流程,跟着操作即可轻

Sentinel-3B OLCI L3全球降分辨率叶绿素数据2022.0版
AI教程 · 2026-06-04

Sentinel-3B OLCI L3全球降分辨率叶绿素数据2022.0版

Sentinel-3B OLCI Level-3 Global Mapped Earth-observation Reduced Resolution (ERR) Chlorophyll (CHL) Data, version 2022 0 叶绿素a浓度全球网格化数据集简介 叶绿素a浓度是衡量海洋浮

我每月省千元组建一支全天候云端AI团队
AI教程 · 2026-06-04

我每月省千元组建一支全天候云端AI团队

先说个有意思的现象。 前两天,我的视频生成团队“入职腾讯”了。在WorkBuddy专家团里,不少伙伴已经开始用这个工具做短视频。本来以为这事儿就这么定了,结果这两天,反而开始疯狂返工——我发现它只能生成文字驱动的视频,还不能像真正的视频团队那样,把配图的活儿也给干了。 于是,继续优化。 先给你看个好

如何编写合格的AI工作流指令:提升编辑技能
AI教程 · 2026-06-04

如何编写合格的AI工作流指令:提升编辑技能

如何编写一个合格的 Skill:AI 工作流核心指令集指南 在 AI 工作流的实际应用中,Skill(技能指令)常常被误解。许多人将其与普通提示词(Prompt)混淆,导致写出的指令过于宽泛或模糊,AI 难以精准执行。实际上,Skill 的本质是一套结构化的行为指令集,它引导 AI 助手在特定场景下

TRAE AI编程入门第三讲:Rules、Memory、MCP与Skills突破边界
AI教程 · 2026-06-04

TRAE AI编程入门第三讲:Rules、Memory、MCP与Skills突破边界

最近几天我会逐步公开自己策划的系统化 AI 编程入门课程大纲,欢迎各位提出宝贵建议。 这套课程暂定 4+1 节:4 节主课以 TRAE 为载体,带领大家零基础入门 AI 编程;外加 1 节扩展课,专门为非技术背景的学员补充软件工程基础知识。具体安排如下: 第一节:TRAE AI 编程入门——Vibe