Parser - pdf

基本介绍

PDF 文档解析器是 Document Parser 接口的一个实现,用于将 PDF 文件内容解析为纯文本。该组件实现了 Eino: Document Parser 接口使用说明,主要用于以下场景:

  • 需要将 PDF 文档转换为可处理的纯文本格式
  • 需要按页面分割 PDF 文档内容

特性说明

PDF 解析器具有以下特点:

  • 支持基本的 PDF 文本提取
  • 可以选择按页面分割文档
  • 自动处理 PDF 字体和编码
  • 支持多页面 PDF 文档

注意事项:

  • 目前可能不能完全支持所有 PDF 格式
  • 不会保留空格和换行等格式信息
  • 复杂的 PDF 布局可能会影响提取效果

使用方式

组件初始化

PDF 解析器通过 NewPDFParser 函数进行初始化,主要配置参数如下:

parser, err := NewPDFParser(ctx, &Config{
    ToPages: true,  // 是否按页面分割文档
})

配置参数说明:

  • ToPages:是否将 PDF 按页面分割成多个文档,默认为 false

解析文档

文档解析通过 Parse 方法实现:

docs, err := parser.Parse(ctx, reader, opts...)

解析选项:

  • 支持通过 parser.WithURI 设置文档 URI
  • 支持通过 parser.WithExtraMeta 添加额外元数据

完整使用示例

基本使用

package main

import (
    "context"
    "os"
    
    pdfparser "github.com/cloudwego/eino-ext/components/document/parser/pdf"
    "github.com/cloudwego/eino/components/document/parser"
)

func main() {
    ctx := context.Background()
    
    // 初始化解析器
    p, err := pdfparser.NewPDFParser(ctx, &pdfparser.Config{
        ToPages: false, // 不按页面分割
    })
    if err != nil {
        panic(err)
    }
    
    // 打开 PDF 文件
    file, err := os.Open("document.pdf")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    
    // 解析文档
    docs, err := p.Parse(ctx, file, 
        parser.WithURI("document.pdf"),
        parser.WithExtraMeta(map[string]any{
            "source": "local",
        }),
    )
    if err != nil {
        panic(err)
    }
    
    // 使用解析结果
    for _, doc := range docs {
        println(doc.Content)
    }
}

在 loader 中使用

可参考 Eino: Document Parser 接口使用说明 中的示例

相关文档


最后修改 January 9, 2025 : feat: add eino cn docs (#1182) (ad75444)