Haystack 的 Unstructured 集成
模块 haystack_integrations.components.converters.unstructured.converter
UnstructuredFileConverter
一个使用 Unstructured API(托管或本地运行)将文件转换为 Haystack Documents 的组件。
支持的文件类型和特定 API 参数,请参阅 Unstructured 文档。
使用示例
from haystack_integrations.components.converters.unstructured import UnstructuredFileConverter
# make sure to either set the environment variable UNSTRUCTURED_API_KEY
# or run the Unstructured API locally:
# docker run -p 8000:8000 -d --rm --name unstructured-api quay.io/unstructured-io/unstructured-api:latest
# --port 8000 --host 0.0.0.0
converter = UnstructuredFileConverter(
# api_url="https://:8000/general/v0/general" # <-- Uncomment this if running Unstructured locally
)
documents = converter.run(paths = ["a/file/path.pdf", "a/directory/path"])["documents"]
UnstructuredFileConverter.__init__
def __init__(api_url: str = UNSTRUCTURED_HOSTED_API_URL,
api_key: Optional[Secret] = Secret.from_env_var(
"UNSTRUCTURED_API_KEY", strict=False),
document_creation_mode: Literal[
"one-doc-per-file", "one-doc-per-page",
"one-doc-per-element"] = "one-doc-per-file",
separator: str = "\n\n",
unstructured_kwargs: Optional[Dict[str, Any]] = None,
progress_bar: bool = True)
参数:
api_url: Unstructured API 的 URL。默认为托管版本的 URL。如果您在本地运行 API,请指定本地 API 的 URL(例如:"https://:8000/general/v0/general").api_key: Unstructured API 的 API 密钥。可以显式传递,或读取环境变量UNSTRUCTURED_API_KEY(推荐)。如果您在本地运行 API,则不需要。document_creation_mode: 如何从 Unstructured 返回的元素创建 Haystack Documents。"one-doc-per-file": 每个文件一个 Haystack Document。所有元素都连接到一个文本字段中。"one-doc-per-page": 每页一个 Haystack Document。页面上的所有元素都连接到一个文本字段中。"one-doc-per-element": 每个元素一个 Haystack Document。每个元素都被转换为一个 Haystack Document。separator: 在将元素连接到一个文本字段时使用的分隔符。unstructured_kwargs: 传递给 Unstructured API 的附加参数。可用参数请参阅 Unstructured API 文档。progress_bar: 在转换过程中是否显示进度条。
UnstructuredFileConverter.to_dict
def to_dict() -> Dict[str, Any]
将组件序列化为字典。
返回值:
包含序列化数据的字典。
UnstructuredFileConverter.from_dict
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "UnstructuredFileConverter"
从字典反序列化组件。
参数:
data: 要反序列化的字典。
返回值:
反序列化后的组件。
UnstructuredFileConverter.run
@component.output_types(documents=List[Document])
def run(
paths: Union[List[str], List[os.PathLike]],
meta: Optional[Union[Dict[str, Any], List[Dict[str, Any]]]] = None
) -> Dict[str, List[Document]]
使用 Unstructured API 将文件转换为 Haystack Documents。
参数:
paths: 要转换的路径列表。路径可以是文件或目录。如果路径是目录,则转换目录中的所有文件。子目录将被忽略。meta: 要附加到 Documents 的可选元数据。此值可以是字典列表或单个字典。如果它是单个字典,其内容将添加到所有生成 Documents 的元数据中。如果它是列表,则列表的长度必须与路径的数量匹配,因为这两个列表将被合并。请注意,如果路径包含目录,meta只能是单个字典(所有文件使用相同的元数据)。
引发:
ValueError: 如果meta是一个列表,而paths包含目录。
返回值:
一个字典,其中包含以下键
documents: Haystack Documents 列表。
