Skip to content

Smart pdf loader

SmartPDFLoader #

Bases: BaseReader

SmartPDFLoader使用嵌套布局信息,如章节、段落、列表和表格,智能地将PDF文件分块,以实现LLM上下文窗口的最佳使用。

Parameters:

Name Type Description Default
llmsherpa_api_url str

llmsherpa PDF解析器托管服务的地址

None
Source code in llama_index/readers/smart_pdf_loader/base.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class SmartPDFLoader(BaseReader):
    """SmartPDFLoader使用嵌套布局信息,如章节、段落、列表和表格,智能地将PDF文件分块,以实现LLM上下文窗口的最佳使用。

    Args:
        llmsherpa_api_url (str): llmsherpa PDF解析器托管服务的地址"""

    def __init__(
        self, *args: Any, llmsherpa_api_url: str = None, **kwargs: Any
    ) -> None:
        super().__init__(*args, **kwargs)
        from llmsherpa.readers import LayoutPDFReader

        self.pdf_reader = LayoutPDFReader(llmsherpa_api_url)

    def load_data(
        self, pdf_path_or_url: str, extra_info: Optional[Dict] = None
    ) -> List[Document]:
        """加载数据并从PDF文件中提取表格。

Args:
    pdf_path_or_url(str):指向PDF的URL或文件路径

Returns:
    List[Document]:文档列表。
"""
        results = []
        doc = self.pdf_reader.read_pdf(pdf_path_or_url)
        for chunk in doc.chunks():
            document = Document(
                text=chunk.to_context_text(),
                extra_info={**extra_info, "chunk_type": chunk.tag}
                if extra_info
                else {"chunk_type": chunk.tag},
            )
            results.append(document)
        return results

load_data #

load_data(
    pdf_path_or_url: str, extra_info: Optional[Dict] = None
) -> List[Document]

加载数据并从PDF文件中提取表格。

Returns:

Type Description
List[Document]

List[Document]:文档列表。

Source code in llama_index/readers/smart_pdf_loader/base.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    def load_data(
        self, pdf_path_or_url: str, extra_info: Optional[Dict] = None
    ) -> List[Document]:
        """加载数据并从PDF文件中提取表格。

Args:
    pdf_path_or_url(str):指向PDF的URL或文件路径

Returns:
    List[Document]:文档列表。
"""
        results = []
        doc = self.pdf_reader.read_pdf(pdf_path_or_url)
        for chunk in doc.chunks():
            document = Document(
                text=chunk.to_context_text(),
                extra_info={**extra_info, "chunk_type": chunk.tag}
                if extra_info
                else {"chunk_type": chunk.tag},
            )
            results.append(document)
        return results