便携式文档格式(PDF) (opens in a new tab),简称ISO 32000,是Adobe于1992年开发的文件格式,用于呈现文档,包括文字格式和图像,与应用软件,硬件和操作系统无关。
本篇介绍如何将PDF文档加载到我们后续使用的文档格式中。
使用PyPDF
使用pypdf将PDF加载到文档数组中,每个文档包含页面内容和具有page编号的元数据。
pip install pypdffrom langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("example_data/layout-parser-paper.pdf")
pages = loader.load_and_split()pages[0]提取图像
使用rapidocr-onnxruntime包可以将图像提取为文本:
pip install rapidocr-onnxruntimeloader = PyPDFLoader("https://arxiv.org/pdf/2103.15348.pdf", extract_images=True)
pages = loader.load()
pages[4].page_content使用MathPix
受Daniel Gross的https://gist.github.com/danielgross/3ab4104e14faccc12b49200843adab21 (opens in a new tab)的启发
from langchain_community.document_loaders import MathpixPDFLoaderloader = MathpixPDFLoader("example_data/layout-parser-paper.pdf")data = loader.load()使用无结构化
from langchain_community.document_loaders import UnstructuredPDFLoaderloader = UnstructuredPDFLoader("example_data/layout-parser-paper.pdf")data = loader.load()保留元素
底层,Unstructured为不同的文本块创建不同的“元素”。默认我们将它们组合在一起,但是您可以通过指定mode="elements"来保留此分隔。
loader = UnstructuredPDFLoader("example_data/layout-parser-paper.pdf", mode="elements")data = loader.load()data[0]获取远程PDF使用无结构化
这包括如何将在线PDF加载到我们可以在下游使用的文档格式中。这可用于各种在线PDF站点,如https://open.umn.edu/opentextbooks/textbooks/和https://arxiv.org/archive/。 (opens in a new tab)
请注意:所有其他PDF加载程序也可以用于获取远程PDF,但OnlinePDFLoader是一个遗留函数,专门与UnstructuredPDFLoader一起使用。
from langchain_community.document_loaders import OnlinePDFLoaderloader = OnlinePDFLoader("https://arxiv.org/pdf/2302.03803.pdf")data = loader.load()print(data)使用MathPix
在OpenAIEmbeddings下我们想使用OpenAI API Key。
import os
import getpass
os.environ['OPENAI_API_KEY'] = getpass.getpass('OpenAI API Key:')使用Unstructured
from langchain_community.document_loaders import OnlinePDFLoaderloader = OnlinePDFLoader("https://arxiv.org/pdf/2302.03803.pdf")data = loader.load()with open("example_data/layout-parser-paper.pdf", "rb") as f:
pdf = f.read()
pdf