如何加载 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
函数来做到这一点,该函数返回一个解析为 PDFJS
对象的 promise。
在下面的示例中,我们使用 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();