文档链接:
https://python.langchain.com/en/latest/modules/indexes/document_loaders/examples/unstructured_file.html
参考代码块:
from langchain.document_loaders import UnstructuredFileLoader
loader = UnstructuredFileLoader("./test/test_file1.txt")
docs = loader.load()
docs[0].page_content[:400]参考文档:
https://python.langchain.com/en/latest/modules/indexes/document_loaders/examples/word_document.html
核心代码块:
from langchain.document_loaders import UnstructuredWordDocumentLoader
loader = UnstructuredWordDocumentLoader("example_data/fake.docx")
data = loader.load()
data LangChain 0.0.148from langchain.document_loaders import UnstructuredWordDocumentLoader
loader = UnstructuredWordDocumentLoader("example_data/fake.docx")
data = loader.load()
data2.3.1 基于unstructured库
参考文档:
https://python.langchain.com/en/latest/modules/indexes/document_loaders/examples/unstructured_file.html
参考代码块:
首先,解析PDF需要用到OCR技术,需要安装一下OCR相关的函数库。
# # Install package
!pip install "unstructured[local-inference]"
!pip install "detectron2@git+https://github.com/facebookresearch/detectron2.git@v0.6#egg=detectron2"
!pip install layoutparser[layoutmodels,tesseract]解析代码块:
!wgethttps://raw.githubusercontent.com/Unstructured-IO/unstructured/main/example-docs/layout-parser-paper.pdf -P "../../"
loader = UnstructuredFileLoader("./example_data/layout-parser-paper.pdf", mode="elements")
docs = loader.load()
docs[:5]参考文献:
2.3.2 PyPDF工具
安装工具:
pipinstallpypdf
核心代码块:
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("example_data/layout-parser-paper.pdf")
pages = loader.load_and_split()按页码对文档进行检索:
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
faiss_index = FAISS.from_documents(pages, OpenAIEmbeddings())
docs = faiss_index.similarity_search("How will the community be engaged?", k=2)
for doc in docs:
print(str(doc.metadata["page"]) + ":", doc.page_content)2.3.3 在线读取工具
from langchain.document_loaders import OnlinePDFLoader
loader = OnlinePDFLoader("https://arxiv.org/pdf/2302.03803.pdf")
data = loader.load()
print(data)2.3.4 PDFMiner
from langchain.document_loaders import PDFMinerLoader
loader = PDFMinerLoader("example_data/layout-parser-paper.pdf")
data = loader.load()from langchain.document_loaders import UnstructuredEmailLoader
loader = UnstructuredEmailLoader('example_data/fake-email.eml')
data = loader.load()主要处理jpg、png等类型的图片数据为可以在RAG下游任务使用的文档数据格式。在langchain的官方文档中提供了相关的API。
from langchain.document_loaders.image import UnstructuredImageLoader
loader = UnstructuredImageLoader("layout-parser-paper-fast.jpg")
data = loader.load()loader = document_loaders.UnstructuredFileLoader(filepath,mode="elements",autodetect_encoding=True)
docs = loader.load()Markdown的解析和TextLoader是存在区别的,主要是需要设置mode和autodetect_encoding参数,以区分文件中不同块的信息。另外,对Markdown中标题的处理,使用MarkdownHeaderTextSplitter需要配置一个额外的参数strip_headers = False。
markdown_splitter = MarkdownHeaderTextSplitter(
headers_to_split_on=headers_to_split_on, strip_headers=False
)
md_header_splits = markdown_splitter.split_text(markdown_document)
md_header_splitsfrom langchain.document_loaders import UnstructuredPowerPointLoader
loader = UnstructuredPowerPointLoader("example_data/fake-power-point.pptx")
data = loader.load()deepdoc是RAGFlow框架中提出的一个支持多种文本切片的解析模版,包括
&A、ReSume、Paper、Manual、Table、Book、Law等等。以更好地结合业务场景,确保结果的可控性和可解释性。
RAGFlow链接:
https://github.com/infiniflow/ragflow/blob/main/README_zh.md
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |