Advertisement

(17-2-04)检索增强生成(RAG):PDF文档加载器(PDFLoader)

阅读量:

5.2.8 PDF文档加载器(PDFLoader)

Portable Document Format(PDF)作为一种标准化文件格式,在全球范围内得到了广泛应用。它是由Adobe公司于1992年开发出来的一种文件格式,在跨平台环境下能够提供一致的数据呈现效果。其特点在于能够实现一种与应用软件、硬件以及操作系统的不同平台之间兼容的数据呈现方式,并包含文字内容以及图片等多样的表现形式。在LangChain中加载PDF文档的方法如下所示

1. 使用 PyPDF

PyPDF 是一个专为管理 PDF 文件而设计的 Python 库。它集成了多种功能模块,并支持从头到尾完成对 PDF 文件的操作流程包括读取、编写以及解析与编辑等环节。在 LangChain 框架中,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下 getDefaultLoader() 的方式被用来加载并形成一个列表形式的 PDF 文档集合。其中每个 PDF 文档对象都包含其页面内容以及带有页码信息的元数据字段。

复制代码
 from langchain_community.document_loaders import PyPDFLoader

    
 loader = PyPDFLoader("example_data/layout-parser-paper.pdf")
    
 pages = loader.load_and_split()
    
 print(pages[0]

)

2. 提取图像

在LangChain中,可以使用 rapidocr-onnxruntime 包提取图像和文本。

复制代码
 from langchain_community.document_loaders import PyPDFLoader

    
  
    
 loader = PyPDFLoader("https://arxiv.org/pdf/2103.15348.pdf", extract_images=True)
    
 pages = loader.load()
    
 print(pages[4].page_content)

3. 使用 Mathpix

Mathpix 是一家专注于通过图像识别技术处理文档并提取文字与数学符号的公司。Mathpix 能够高效识别并解析图像中的文本内容以及复杂的数学符号,并将其转化为精确的文字与公式结构。该软件开发团队推出了名为 Mathpix Snip 的应用程序工具,支持用户通过其 Mathpix Snip 应用程序直接捕获并获取文档图像截面。利用其先进的 OCR 技术识别文档中的文字与数学符号,并将其转换为便于编辑的文字格式。

该技术提供了一个名为 Mathpix PDF Loader 的工具,它是集成于 LangChain 框架中的一个加载器,旨在从 PDF 文件中提取相关信息.该加载器不仅能够处理文档中的文本、图像以及数学公式,还将其转换为适合 LangChain 处理的形式.

Mathpix PDF Loader 的主要优点在于其精确识别并有效处理复杂的数学信息的能力。这种功能对依赖于从PDF文档提取高度专业化的数学内容的应用程序而言具有重要意义。例如,在教育技术应用领域中, 该系统能够将教科书中的数学问题转化为便于分析的数据形式, 从而实现深入分析与解决方案的开发。

要在 LangChain 中使用 Mathpix PDF Loader,需要首先安装相关的包:

复制代码
    pip install mathpix

例如,在一段代码中:
首先导入MathpixPDFLoader类。
然后,在实际运行时会创建一个该类的具体实例,并传递一个指向PDF文件路径的对象。
随后调用该实例的方法(或通过该实例调用load方法),返回的结果是一个包含多个文档对象的对象集合;每个文档对象内部则包含了对应页面的具体内容信息。

复制代码
 from langchain_community.document_loaders import MathpixPDFLoader

    
 # 创建 Mathpix PDF Loader 实例
    
 loader = MathpixPDFLoader("example_data/layout-parser-paper.pdf")
    
  
    
 # 加载 PDF 文档
    
 data = loader.load()
    
  
    
 # 打印加载的文档内容
    
 for doc in data:
    
     print(doc.page_content)

4. 使用 Unstructured

UnstructuredPDFLoader 属于 LangChain 框架中的一个加载器类, 旨在加载及解析 PDF 文件内容. 如同 PyPDFLoader 一样, 该类能够将 PDF 文件的内容被转换为 LangChain 能够处理的文档格式表达形式, 并且主要擅长于非结构化或半结构化的文档内容.

在使用 UnstructuredPDFLoader 时,借助不同的配置选项能够调控加载流程的具体表现。例如,在希望保留 PDF 文件中的结构信息时,默认设置即可满足需求;若需获取更高层次的内容组织,则可配置 mode 为 "blocks" 或 "elements" 等选项以实现不同层级的信息提取效果。以下将详细展示如何通过 LangChain 框架中的 UnstructuredPDFLoader 实现 PDF 文件的高效加载与处理过程

5. 使用 PyMuPDF

该加载器类属于LangChain框架下的工具,在文档管理领域具有重要地位。它负责读取与处理 PDF 文件内容,并依赖于PyMuPDF库作为其运行基础。该工具依赖于PyMuPDF库作为一个广受欢迎的Python库,并允许以快速方式访问文件内细节

当使用 PyMuPDFLoader 运行时

这段代码依次展示了如何创建加载器、调用 load 方法获取页面列表以及遍历每个页面进行操作

复制代码
 from langchain_community.document_loaders import PyMuPDFLoader

    
  
    
 # 指定 PDF 文件的路径
    
 pdf_path = "path/to/your/document.pdf"
    
  
    
 # 创建 PyMuPDFLoader 实例
    
 loader = PyMuPDFLoader(pdf_path)
    
  
    
 # 加载文档
    
 documents = loader.load()
    
  
    
 # 遍历文档对象并打印内容
    
 for document in documents:
    
     print(document.page_content)  # 打印文档的文本内容
    
     print(document.metadata)    # 打印文档的元数据信息

运行给定的代码块后,请您提取到每个PDF页面的具体文本内容以及相关的元数据。这些元数据通常包含页面编号、总页数、文档标题以及作者信息等详细信息。

6. 使用 PDFPlumber

该加载器类属于 LangChain 框架系统中的一员,在其内部功能实现上主要依赖于另一组件——PDFPlumber库的支持。该库负责从 PDF 文档中提取文本与表格信息,并且作为一个纯粹基于Python开发的应用程序,在性能优化方面有着显著的优势。当调用该加载器时需初始化该对象,并指定目标文件路径位置参数;随后可通过调用其 load 方法获取所需信息即可完成整个流程操作

复制代码
 from langchain_community.document_loaders import PDFPlumberLoader

    
 loader = PDFPlumberLoader("example_data/layout-parser-paper.pdf")
    
 data = loader.load()
    
 print(data[0])

执行上述代码后, 您将看到每个 PDF 文件的具体内容以及与之相关的元数据. 这些元数据可能包含页面编号. 总页数. 文档标题以及作者等详细信息.

7. 使用 Amazon Textract PDF Parser

AmazonTextractPDFLoader 属于 LangChain 框架中的一个内容加载器类。该类通过亚马逊 Textract 服务实现对 PDF 文件内容的解析与提取。 AmazonTextract 则是一项基于云端的服务,能够执行扫描文档的光学字符识别(OCR)操作,并提取文本信息及相关的数据。其功能覆盖范围广泛,在处理过程中不仅能够获取文字描述的内容,在输出时还包含表格、表单等关键信息。

为了利用 AmazonTx tract PDF Loader ,必须拥有一个 AWS 账户 ,并配置好相应的访问密钥和秘密密钥 。同时 ,请确保您的账户具有足够的权限来访问 Textract 服务 。The process of using AmazonTx tract PDF Loader involves the creation of a loader instance and the provision of an AWS terminal node URL, API key, and the file path to be processed 。The following steps can then be executed:

复制代码
 from langchain_community.document_loaders import AmazonTextractPDFLoader

    
  
    
 # AWS 终端节点 URL、API 密钥和文件路径
    
 endpoint = "<your-aws-endpoint>"
    
 access_key = "<your-access-key>"
    
 secret_key = "<your-secret-key>"
    
 file_path = "path/to/your/document.pdf"
    
  
    
 # 创建 AmazonTextractPDFLoader 实例
    
 loader = AmazonTextractPDFLoader(endpoint, access_key, secret_key, file_path)
    
  
    
 # 加载文档
    
 documents = loader.load()
    
  
    
 # 遍历文档对象并打印内容
    
 for document in documents:
    
     print(document.page_content)  # 打印文档的文本内容
    
     print(document.metadata)    # 打印文档的元数据信息

8. 使用********AzureAIDocumentIntelligenceLoader

该服务采用机器学习技术,并能从数字化文档或扫描生成的 PDF 文件以及图像等多类型数据中识别并提取包括手写在内的文本内容。 Azure AIDocumentIntelligenceLoader 作为 LangChain 框架的数据加载器类,在处理和解析文档信息方面发挥着关键作用。 该AI驱动的服务具备强大的多模态分析能力,在多种文件格式间实现高效的数据转换与整合,并支持提取丰富多样的信息要素如数据表格以及文档层次结构(如标题...)。 适用文件类型涵盖 PDF/JPEG/JPG/PNG/BMP/TIFF/HEIF 等多种常见格式以及 DOCX/XLSX/PPTX 等办公文件类型,并提供对 HTML 格式的直接解析能力。

在 AzureAIDocumentIntelligenceLoader 的使用过程中,在实现特定功能时,需要先创建一个加载器实例,并包括 Azure AI Document Intelligence 的终端节点 URL、API 密钥以及指定的文件路径。接着,在完成上述配置后,则可以调用 load 方法来执行文件的加载与处理。

复制代码
 from langchain_community.document_loaders import AzureAIDocumentIntelligenceLoader

    
  
    
 file_path = "<filepath>"
    
 endpoint = "<endpoint>"
    
 key = "<key>"
    
  
    
 loader = AzureAIDocumentIntelligenceLoader(
    
     api_endpoint=endpoint, 
    
     api_key=key, 
    
     file_path=file_path, 
    
     api_model="prebuilt-layout"
    
 )
    
  
    
 documents = loader.load()

这些加载器能够从PDF文档中提取文本和元数据的不同方法,并且根据需求和场景提供相应的解决方案。例如,在需要保留PDF布局信息时可以选择PyPDFLoader或PDFPlumberLoader这两种工具;而如果需要快速提取PDF中的文本内容,则PyMuPDFLoader 是一个值得考虑的选择;最后,在希望利用云服务进行文档解析的情况下,则可以参考Amazon Textract PDF Loader 和 Azure AI Document Intelligence Loader 这两种工具的特点来做出决策。

未完待续

全部评论 (0)

还没有任何评论哟~