如何加载 PDF 文件
便携式文档格式 (PDF),标准化为 ISO 32000,是一种由 Adobe 于 1992 年开发的文件格式,用于以独立于应用程序软件、硬件和操作系统的形式呈现文档,包括文本格式和图像。
本文介绍了如何将 PDF
文档加载到我们在下游使用的文档格式中。
默认情况下,将为 PDF 文件中的每个页面创建一个文档。您可以通过将 splitPages
选项设置为 false
来更改此行为。
设置
- npm
- Yarn
- pnpm
npm install pdf-parse
yarn add pdf-parse
pnpm add 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
对象。
在以下示例中,我们使用 pdfjs-dist
的“遗留” (请参阅 pdfjs 文档) 构建,其中包含默认构建中未包含的几个 polyfill。
- npm
- Yarn
- pnpm
npm install pdfjs-dist
yarn add pdfjs-dist
pnpm add 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();