<SOURCE_TEXT>
Open-Source Pre-Processing Tools for Unstructured Data
unstructured
库提供开源组件,用于摄取和预处理图像和文本文档,如PDF、HTML、Word文档和更多。unstructured
的使用案例围绕简化和优化LLM的数据处理工作流。unstructured
的模块化函数和连接器构成一个紧密联系的系统,简化数据摄取和预处理,使其适应不同的平台,并高效地将非结构化数据转换为结构化输出。
试试Unstructured无服务器API!
寻找更好的预处理性能和更少的设置?请查看我们的新无服务器API! Unstructured 无服务器API是我们最具性能的API之一,提供更快速、生产级的解决方案,以更好地支持您的业务和LLM需求。前往我们的注册页面免费开始使用。
:eight_pointed_black_star: 快速开始
有几种使用unstructured
库的方法:
在容器中运行库
以下说明旨在帮助您使用Docker与unstructured
进行交互。如果您的机器上尚未安装Docker,请查看这里。
注意:我们构建了多平台镜像以支持x86_64和Apple silicon硬件。docker pull
应该根据您的架构下载相应的镜像,您也可以使用--platform
(例如--platform linux/amd64
)进行指定。
我们为所有推送到main
的内容构建Docker镜像。我们使用相应的简短提交哈希(例如fbc7a69
)和应用程序版本(例如0.5.5-dev1
)标记每个镜像。我们也使用latest
标记最新的镜像。要利用这一点,从我们的镜像库中docker pull
。
docker pull downloads.unstructured.io/unstructured-io/unstructured:latest
拉取后,您可以从此镜像创建容器并进入其中。
# 创建容器
docker run -dt --name unstructured downloads.unstructured.io/unstructured-io/unstructured:latest
# 这将使您进入正在运行的Docker镜像的bash shell
docker exec -it unstructured bash
您也可以构建自己的Docker镜像。请注意,基础镜像是定期更新的wolfi-base
。如果您在本地构建镜像,由于wolfi-base
的上游更改,docker-build
可能会失败。
如果您只计划解析一种类型的数据,可以通过注释掉一些不必要的数据类型的包/需求来加快镜像的构建。请参阅Dockerfile以了解您的使用案例需要哪些行。
make docker-build
# 这将使您进入正在运行的Docker镜像的bash shell
make docker-start-bash
一旦进入正在运行的容器,您可以直接在Python解释器的交互模式下尝试一些操作。
# 这将使您进入python控制台,以便运行以下partition函数
python3
>>> from unstructured.partition.pdf import partition_pdf
>>> elements = partition_pdf(filename="example-docs/layout-parser-paper-fast.pdf")
>>> from unstructured.partition.text import partition_text
>>> elements = partition_text(filename="example-docs/fake-text.txt")
安装库
使用以下说明来启动和运行unstructured
并测试您的安装。
-
安装支持所有文档类型的Python SDK,使用
pip install "unstructured[all-docs]"
。- 对于不需要任何额外依赖项的纯文本文件、HTML、XML、JSON和电子邮件,您可以运行
pip install unstructured
- 要处理其他文档类型,您可以安装这些文档所需的额外依赖项,如
pip install "unstructured[docx,pptx]"
。
- 对于不需要任何额外依赖项的纯文本文件、HTML、XML、JSON和电子邮件,您可以运行
-
如果这些系统依赖项在您的系统上尚不可用,请安装以下系统依赖项。根据您解析的文档类型,您可能不需要所有这些依赖项。
libmagic-dev
(文件类型检测)poppler-utils
(图像和PDF)tesseract-ocr
(图像和PDF,安装tesseract-lang
以获得额外的语言支持)libreoffice
(MS Office文档)pandoc
(EPUB、RTF和Open Office文档)。请注意,要处理RTF文件,需要版本2.14.2
或更新版本。运行make install-pandoc
或./scripts/install-pandoc.sh
将安装正确的版本。
-
关于如何在Windows上安装以及了解其他功能的依赖项的建议,请参阅 安装文档。
此时,您应该能够运行以下代码:
from unstructured.partition.auto import partition
elements = partition(filename="example-docs/eml/fake-email.eml")
print("\n\n".join([str(el) for el in elements]))
本地开发安装说明
以下说明旨在帮助您本地设置和运行unstructured
,如果您计划为该项目做出贡献。
- 使用
pyenv
来管理virtualenv是推荐的,但不是必须的。 - 创建一个 virtualenv 并激活它,例如,创建一个名为
unstructured
的 virtualenv:
pyenv virtualenv 3.10 unstructured
pyenv activate unstructured
-
运行
make install
-
可选的:
- 如果要在本地安装用于处理图片和 PDF 的模型和依赖项,请运行
make install-local-inference
。 - 处理图片文件需要
tesseract
。安装说明请参见这里。 - 处理 PDF 文件需要
tesseract
和poppler
。pdf2image docs
(https://pdf2image.readthedocs.io/en/latest/installation.html)有跨平台安装poppler
的说明。
- 如果要在本地安装用于处理图片和 PDF 的模型和依赖项,请运行
此外,如果你计划为 unstructured
做出贡献,我们提供了一个可选的 pre-commit
配置文件,以确保你的代码符合 unstructured
使用的格式和代码规范。 如果你不想在每次提交之前自动整理代码,可以使用 make check
查看是否应应用任何代码规范或格式更改,并使用 make tidy
来应用这些更改。
如果使用可选的 pre-commit
,只需安装钩子即可,命令为 pre-commit install
,因为 pre-commit
包已经作为上文中提到的 make install
的一部分安装了。最后,如果你决定使用 pre-commit
,也可以用 pre-commit uninstall
卸载这些钩子。
除了可以在本地操作系统上开发之外,我们还提供了一个使用 docker 的助手工具提供开发环境:
make docker-start-dev
这会启动一个 docker 容器,并将你的本地仓库挂载到 /mnt/local_unstructured
。这个 docker 镜像允许你在开发时不必担心操作系统与仓库及其依赖项的兼容性。
:clap: 快速指南
文档
有关更全面的文档,请访问 https://docs.unstructured.io。你还可以在文档页面了解我们的其他产品,包括我们的 SaaS API。
这里是一些对新用户有帮助的开源文档页面:(https://docs.unstructured.io/open-source/introduction/overview)
PDF 文档解析示例
以下示例展示了如何开始使用 unstructured
库。解析文档最简单的方法是使用 partition
函数。如果使用 partition
函数,unstructured
会检测文件类型并将其导入到适当的文件特定分区函数中。 使用 partition
函数时,可能需要根据文档类型安装附加的依赖项。例如,要安装 docx 依赖项,需要运行 pip install "unstructured[docx]"
。更多详情请参见我们的 安装指南。
from unstructured.partition.auto import partition
elements = partition("example-docs/layout-parser-paper.pdf")
运行 print("\n\n".join([str(el) for el in elements]))
获得输出的字符串表示,结果看起来像这样:
LayoutParser : A Unified Toolkit for Deep Learning Based Document Image Analysis
Zejiang Shen 1 ( (cid:0) ), Ruochen Zhang 2 , Melissa Dell 3 , Benjamin Charles Germain Lee 4 , Jacob Carlson 3 , and
Weining Li 5
Abstract. Recent advances in document image analysis (DIA) have been primarily driven by the application of neural
networks. Ideally, research outcomes could be easily deployed in production and extended for further investigation.
However, various factors like loosely organized codebases and sophisticated model configurations complicate the easy
reuse of important innovations by a wide audience. Though there have been ongoing efforts to improve reusability and
simplify deep learning (DL) model development in disciplines like natural language processing and computer vision, none
of them are optimized for challenges in the domain of DIA. This represents a major gap in the existing toolkit, as DIA
is central to academic research across a wide range of disciplines in the social sciences and humanities. This paper
introduces LayoutParser, an open-source library for streamlining the usage of DL in DIA research and applications.
The core LayoutParser library comes with a set of simple and intuitive interfaces for applying and customizing DL models
for layout detection, character recognition, and many other document processing tasks. To promote extensibility,
LayoutParser also incorporates a community platform for sharing both pre-trained models and full document digitization
pipelines. We demonstrate that LayoutParser is helpful for both lightweight and large-scale digitization pipelines in
real-word use cases. The library is publicly available at https://layout-parser.github.io
Keywords: Document Image Analysis · Deep Learning · Layout Analysis · Character Recognition · Open Source library ·
Toolkit.
Introduction
Deep Learning(DL)-based approaches are the state-of-the-art for a wide range of document image analysis (DIA) tasks
including document image classification [11,
有关如何使用特定文件分区函数的完整选项和说明,请参见我们的分区部分。
:guardsman: 安全策略
查看我们的安全策略,了解如何报告安全漏洞。
:bug: 提交 Bug
遇到 Bug 吗?请创建一个新的 GitHub issue,并使用我们的 bug 报告模板描述问题。为了帮助我们诊断问题,请使用 python scripts/collect_env.py
命令收集系统的环境信息并并将其列入你的报告。感谢你帮助我们不断改进软件!
:books: 更多了解
:chart_with_upwards_trend: 分析
我们已经与 Scarf(https://scarf.sh) 合作收集匿名用户统计数据,以了解我们社区在使用哪些功能,并如何在未来确定产品决策的优先级。若要了解更多关于我们如何收集和使用这些数据的信息,请阅读我们的隐私政策。要选择退出数据收集,可以在运行任何 unstructured
命令之前设置环境变量 SCARF_NO_ANALYTICS=true
。