跳到主要内容

如何加载 PDF 文件

可移植文档格式 (PDF),标准化为 ISO 32000,是由 Adobe 于 1992 年开发的文件格式,用于以独立于应用程序软件、硬件和操作系统的方式呈现文档,包括文本格式和图像。

本文介绍如何将 PDF 文档加载到我们下游使用的文档格式中。

默认情况下,将为 PDF 文件中的每一页创建一个文档。您可以通过将 splitPages 选项设置为 false 来更改此行为。

设置

npm install pdf-parse

用法,每页一个文档

import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";
// Or, in web environments:
// import { WebPDFLoader } from "@langchain/community/document_loaders/web/pdf";
// const blob = new Blob(); // e.g. from a file input
// const loader = new WebPDFLoader(blob);

const loader = new PDFLoader("src/document_loaders/example_data/example.pdf");

const docs = await loader.load();

用法,每个文件一个文档

import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";

const loader = new PDFLoader("src/document_loaders/example_data/example.pdf", {
splitPages: false,
});

const docs = await loader.load();

用法,自定义 pdfjs 构建

默认情况下,我们使用与 pdf-parse 捆绑的 pdfjs 构建,它与大多数环境兼容,包括 Node.js 和现代浏览器。如果您想使用更新版本的 pdfjs-dist,或者您想使用 pdfjs-dist 的自定义构建,您可以通过提供自定义的 pdfjs 函数来实现,该函数返回一个 Promise,该 Promise 解析为 PDFJS 对象。

在以下示例中,我们使用 "legacy" (参见 pdfjs 文档) 构建的 pdfjs-dist,其中包括默认构建中未包含的几个 polyfill。

npm install pdfjs-dist
import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";

const loader = new PDFLoader("src/document_loaders/example_data/example.pdf", {
// you may need to add `.then(m => m.default)` to the end of the import
pdfjs: () => import("pdfjs-dist/legacy/build/pdf.js"),
});

消除多余空格

PDF 有多种变体,这使得读取它们成为一项挑战。加载器解析单个文本元素,并默认使用空格将它们连接在一起,但如果您看到过多的空格,这可能不是所需的行为。在这种情况下,您可以像这样使用空字符串覆盖分隔符

import { PDFLoader } from "@langchain/community/document_loaders/fs/pdf";

const loader = new PDFLoader("src/document_loaders/example_data/example.pdf", {
parsedItemSeparator: "",
});

const docs = await loader.load();

此页内容对您有帮助吗?


您也可以留下详细的反馈 在 GitHub 上.