langchain_community.document_loaders.dedoc.DedocFileLoader

class langchain_community.document_loaders.dedoc.DedocFileLoader(file_path: str, *, split: str = 'document', with_tables: bool = True, with_attachments: Union[str, bool] = False, recursion_deep_attachments: int = 10, pdf_with_text_layer: str = 'auto_tabby', language: str = 'rus+eng', pages: str = ':', is_one_column_document: str = 'auto', document_orientation: str = 'auto', need_header_footer_analysis: Union[str, bool] = False, need_binarization: Union[str, bool] = False, need_pdf_table_analysis: Union[str, bool] = True, delimiter: Optional[str] = None, encoding: Optional[str] = None)[source]

DedocFileLoader 是一个用于通过 dedoc 加载文件的文档加载器集成。

文件加载器会自动检测文件类型(带有正确的扩展名)。支持的文件类型列表可以在 https://dedoc.readthedocs.io/en/latest/index.html#id1 查看。有关详细信息,请参阅 DedocBaseLoader 文档。

设置

安装 dedoc 包。

pip install -U dedoc
实例化
from langchain_community.document_loaders import DedocFileLoader

loader = DedocFileLoader(
    file_path="example.pdf",
    # split=...,
    # with_tables=...,
    # pdf_with_text_layer=...,
    # pages=...,
    # ...
)
加载
docs = loader.load()
print(docs[0].page_content[:100])
print(docs[0].metadata)
Some text
{
    'file_name': 'example.pdf',
    'file_type': 'application/pdf',
    # ...
}
懒加载
docs = []
docs_lazy = loader.lazy_load()

for doc in docs_lazy:
    docs.append(doc)
print(docs[0].page_content[:100])
print(docs[0].metadata)
Some text
{
    'file_name': 'example.pdf',
    'file_type': 'application/pdf',
    # ...
}

使用文件路径和解析参数初始化。

参数
  • file_path (str) – 要处理的文件路径

  • split (str) –

    文档拆分成部分(每部分单独返回),默认值“document”;“document”:将文档文本作为单个langchain Document返回

    对象(不要拆分)

    “page”:将文档文本拆分成页面(适用于PDF、DJVU、PPTX、PPT、ODP)

    “node”:将文档文本拆分成树节点(标题节点、列表项节点、纯文本节点)

    “line”:将文档文本拆分成行

  • with_tablesbool)-向结果中添加表格 - 每个表格都作为单个langchain Document对象返回

  • dedoc用于通过dedoc解析文档的参数)-

    https://dedoc.readthedocs.io/en/latest/parameters/parameters.html

    with_attachments:启用附件提取;recursion_deep_attachments:附件的递归深度,仅在with_attachments==True时生效

    提取

    pdf_with_text_layer:解析PDF文档的处理程序类型,

    可用选项[“true”,“false”,“tabby”,“auto”,“auto_tabby”(默认)]

    language:无文本层的文档和图片的语言,可用选项[“eng”,“rus”,“rus+eng”(默认)],语言列表可以扩展,请参阅https://dedoc.readthedocs.io/en/latest/tutorials/add_new_language.html

    pages:解析PDF文档的阅读范围页码切片

    is_one_column_document:无文本层和图片的PDF的列数检测,可用选项[“true”,“false”,“auto”(默认)]

    document_orientation:固定无文本层和图片的PDF方向(90,180,270度)

    可用选项[“auto”(默认),“no_change”]

    need_header_footer_analysis:从解析PDF和图片的结果中删除页眉和页脚

    need_binarization:清洁无文本层和图片的PDF的页面背景(二值化)

    need_pdf_table_analysis:解析无文本层和图片的PDF的表格

    delimiter:CSV、TSV文件的列分隔符

  • with_attachmentsUnion[str, bool])-

  • recursion_deep_attachmentsint)-

  • pdf_with_text_layerstr)-

  • languagestr)-

  • pagesstr)-

  • is_one_column_documentstr)-

  • document_orientationstr)-

  • need_header_footer_analysisUnion[str, bool])-

  • need_binarizationUnion[str, bool])-

  • need_pdf_table_analysisUnion[str, bool])-

  • delimiterOptional[str])-

  • encodingOptional[str])-

方法

__init__(file_path, *[, split, with_tables, ...])

使用文件路径和解析参数初始化。

alazy_load()

Documents的懒加载器。

aload()

将数据加载到Document对象中。

lazy_load()

懒加载文档。

load()

将数据加载到Document对象中。

load_and_split([text_splitter])

加载Documents并将其拆分为块。

__init__(file_path: str, *, split: str = 'document', with_tables: bool = True, with_attachments: Union[str, bool] = False, recursion_deep_attachments: int = 10, pdf_with_text_layer: str = 'auto_tabby', language: str = 'rus+eng', pages: str = ':', is_one_column_document: str = 'auto', document_orientation: str = 'auto', need_header_footer_analysis: Union[str, bool] = False, need_binarization: Union[str, bool] = False, need_pdf_table_analysis: Union[str, bool] = True, delimiter: Optional[str] = None, encoding: Optional[str] = None) None

使用文件路径和解析参数初始化。

参数
  • file_path (str) – 要处理的文件路径

  • split (str) –

    文档拆分成部分(每部分单独返回),默认值“document”;“document”:将文档文本作为单个langchain Document返回

    对象(不要拆分)

    “page”:将文档文本拆分成页面(适用于PDF、DJVU、PPTX、PPT、ODP)

    “node”:将文档文本拆分成树节点(标题节点、列表项节点、纯文本节点)

    “line”:将文档文本拆分成行

  • with_tablesbool)-向结果中添加表格 - 每个表格都作为单个langchain Document对象返回

  • dedoc用于通过dedoc解析文档的参数)-

    https://dedoc.readthedocs.io/en/latest/parameters/parameters.html

    with_attachments:启用附件提取;recursion_deep_attachments:附件的递归深度,仅在with_attachments==True时生效

    提取

    pdf_with_text_layer:解析PDF文档的处理程序类型,

    可用选项[“true”,“false”,“tabby”,“auto”,“auto_tabby”(默认)]

    language:无文本层的文档和图片的语言,可用选项[“eng”,“rus”,“rus+eng”(默认)],语言列表可以扩展,请参阅https://dedoc.readthedocs.io/en/latest/tutorials/add_new_language.html

    pages:解析PDF文档的阅读范围页码切片

    is_one_column_document:无文本层和图片的PDF的列数检测,可用选项[“true”,“false”,“auto”(默认)]

    document_orientation:固定无文本层和图片的PDF方向(90,180,270度)

    可用选项[“auto”(默认),“no_change”]

    need_header_footer_analysis:从解析PDF和图片的结果中删除页眉和页脚

    need_binarization:清洁无文本层和图片的PDF的页面背景(二值化)

    need_pdf_table_analysis:解析无文本层和图片的PDF的表格

    delimiter:CSV、TSV文件的列分隔符

  • with_attachmentsUnion[str, bool])-

  • recursion_deep_attachmentsint)-

  • pdf_with_text_layerstr)-

  • languagestr)-

  • pagesstr)-

  • is_one_column_documentstr)-

  • document_orientationstr)-

  • need_header_footer_analysisUnion[str, bool])-

  • need_binarizationUnion[str, bool])-

  • need_pdf_table_analysisUnion[str, bool])-

  • delimiterOptional[str])-

  • encodingOptional[str])-

返回类型

None

async alazy_load() AsyncIterator[][Document]

Documents的懒加载器。

返回类型

异步迭代器[文档]

async aload() List[Document]

将数据加载到Document对象中。

返回类型

List[文档]

lazy_load() Iterator[Document]

懒加载文档。

返回类型

迭代器[文档]

load() List[Document]

将数据加载到Document对象中。

返回类型

List[文档]

load_and_split(text_splitter: Optional[TextSplitter] = None) List[Document]

加载文档并将其分割成块。块以文档的形式返回。

不要重写此方法。应将其视为已废弃!

参数

text_splitter (可选[TextSplitter]) – 用于分割文档的 TextSplitter 实例。默认为 RecursiveCharacterTextSplitter。

返回

文档列表。

返回类型

List[文档]