
AmazonTextractConverter 实战指南在 Haystack 中用 AWS Textract 构建文档 OCR 与结构化抽取流水线【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack本文是一份围绕 Haystack 官方集成组件AmazonTextractConverter的深度技术指南。该组件把 AWS Textract 的 OCR 能力接入 Haystack 管道可把图片与单页 PDF 转换为标准的 HaystackDocument支持纯文本 OCR、表格/表单/签名/版式结构化分析以及自然语言问答式字段抽取。读完本文你将掌握该组件的完整 API 签名、参数语义、两种运行模式、与ByteStream、Secret的协作方式以及如何把它嵌入索引流水线实现文档入库的全流程落地。组件概览它解决什么问题AmazonTextractConverter位于 集成 API 参考 中类定义路径为haystack_integrations.components.converters.amazon_textract.converter.AmazonTextractConverter。其核心职责是接收一组文件路径或ByteStream对象调用 AWS Textract 服务提取文本以及可选的结构化信息并转换为 HaystackDocument。该组件的输入与输出特征如下支持输入格式JPEG、PNG、TIFF、BMP以及单页 PDF上限 10 MB典型管道位置位于 PreProcessors 之前或索引流水线的最开头详见 AmazonTextractConverter 使用指南输出返回一个字典包含两个键documents以提取文本为content的Document列表raw_textract_responseTextract API 的原始响应列表便于下游做细粒度解析与调试。使用前提是你需要拥有一个可访问 Textract 服务的 AWS 账号并确保所选区域已开放 Textract 服务。安装与 AWS 凭证配置该集成以独立包分发包名为amazon-textract-haystack源码维护在 deepset 的 haystack-core-integrations 仓库中不属于本仓库haystack/主包pip install amazon-textract-haystack凭证解析遵循两条路径二者可叠加显式Secret参数在初始化时传入aws_access_key_id、aws_secret_access_key、aws_session_token、aws_region_name、aws_profile_name类型均为Secret | None默认 boto3 凭证链不传显式凭证时组件回退到 boto3 的标准凭证查找顺序——环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN、AWS_DEFAULT_REGION、AWS_PROFILE、AWS 配置文件、以及 IAM 角色。这意味着部署在 AWS 基础设施如 EC2、ECS、Lambda上时无需在代码中硬编码任何密钥即可工作。Secret是 Haystack 统一管理敏感配置的机制见 Secret 工具模块支持从环境变量、token 等来源解析避免密钥以明文形式出现在序列化配置中。两种操作模式DetectDocumentText 与 AnalyzeDocument组件根据feature_types是否设置自动在 Textract 的两套 API 之间切换模式触发条件API适用场景纯文本 OCRfeature_types未设置默认DetectDocumentText只关心原始文本速度最快、成本最低结构化分析feature_types已设置AnalyzeDocument需要表格、表单、签名、版式等结构信息AnalyzeDocument模式下feature_types的合法取值为TABLES、FORMS、SIGNATURES、LAYOUT可任意组合传入列表。特别地QUERIES特性类型由组件自动管理当你在run()中传入queries参数时组件会自动追加QUERIES特性无需手动填写。这为从发票、收据、表单里抽取特定字段提供了开箱即用的能力省去了手写解析逻辑的麻烦。init参数详解__init__的完整签名全部为关键字参数如下__init__( *, aws_access_key_id: Secret | None Secret.from_env_var( AWS_ACCESS_KEY_ID, strictFalse ), aws_secret_access_key: Secret | None Secret.from_env_var( AWS_SECRET_ACCESS_KEY, strictFalse ), aws_session_token: Secret | None Secret.from_env_var( AWS_SESSION_TOKEN, strictFalse ), aws_region_name: Secret | None Secret.from_env_var( AWS_DEFAULT_REGION, strictFalse ), aws_profile_name: Secret | None Secret.from_env_var( AWS_PROFILE, strictFalse ), feature_types: list[str] | None None, store_full_path: bool False, boto3_config: dict[str, Any] | None None ) - None各参数语义aws_access_key_id / aws_secret_access_key / aws_session_tokenSecret | NoneAWS 访问凭证三元组默认分别从AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN环境变量解析strictFalse表示变量缺失时不报错交由凭证链兜底aws_region_nameSecret | NoneAWS 区域名必须是支持 Textract 的区域默认从AWS_DEFAULT_REGION解析aws_profile_nameSecret | None凭证文件中的 AWS 配置档名默认从AWS_PROFILE解析feature_typeslist[str] | None使用AnalyzeDocument时要检测的特性类型列表合法值TABLES、FORMS、SIGNATURES、LAYOUT为None时走DetectDocumentText纯文本抽取QUERIES由组件在传入queries时自动管理无需在此填写store_full_pathbool为True时把文件的完整路径存入Document的 metadata为False默认只存文件名boto3_configdict[str, Any] | None透传给底层 boto3 客户端的配置字典可用于调优重试行为、超时时间与连接管理例如设置max_attempts、connect_timeout、read_timeout等键值。方法 APIwarm_up / close / run / 序列化组件实现了 Haystack 标准的生命周期与序列化方法warm_up() - None初始化 AWS Textract 客户端。在管道运行前调用可避免首次调用时的客户端创建延迟close() - None关闭 AWS Textract 客户端释放底层连接资源to_dict() - dict[str, Any]将组件序列化为字典供管道dump/YAML 序列化使用from_dict(data: dict[str, Any]) - AmazonTextractConverter从字典反序列化还原组件实例。其中run()是核心方法签名如下run( sources: list[str | Path | ByteStream], meta: dict[str, Any] | list[dict[str, Any]] | None None, queries: list[str] | None None, ) - dict[str, Any]参数说明sources待转换的文件路径str/Path或ByteStream对象列表。ByteStream是 Haystack 的通用二进制数据载体见 ByteStream 数据类 与 数据类概念文档支持内存中的字节数据、MIME 类型与元数据便于从 HTTP 响应、数据库等非文件来源直接喂入组件meta附加到Document的元数据。传单个字典时其内容会添加到所有产出的Document元数据中传字典列表时列表长度必须与sources数量一致逐一对齐到对应文档queries针对每份文档的自然语言问题列表。传入后自动启用 Textract 的QUERIES特性每个问题作为一条 query 发送答案包含在原始 Textract 响应中。示例[What is the patient name?, What is the total due?]。返回值字典包含documents提取文本作为content的Document列表与raw_textract_responseTextract API 原始响应列表。实战示例单独使用纯文本 OCRfrom haystack_integrations.components.converters.amazon_textract import ( AmazonTextractConverter, ) converter AmazonTextractConverter() result converter.run(sources[document.png]) documents result[documents]用 AnalyzeDocument 抽取表格与表单from haystack_integrations.components.converters.amazon_textract import ( AmazonTextractConverter, ) converter AmazonTextractConverter(feature_types[TABLES, FORMS]) result converter.run(sources[invoice.pdf]) documents result[documents] raw_responses result[raw_textract_response]此时 Textract 会返回结构化分析结果表格、键值对raw_textract_response中即包含可供下游解析的完整块Block数据。用自然语言查询抽取指定字段from haystack_integrations.components.converters.amazon_textract import ( AmazonTextractConverter, ) converter AmazonTextractConverter() result converter.run( sources[receipt.png], queries[What is the patient name?, What is the total due?], ) documents result[documents] raw_responses result[raw_textract_response]组件会自动为本次调用启用QUERIES特性Textract 返回的答案可直接从原始响应中读取——适合从表单、发票、收据中快速提取字段值而无需编写自定义解析逻辑。显式传入 AWS 凭证from haystack.utils import Secret from haystack_integrations.components.converters.amazon_textract import ( AmazonTextractConverter, ) converter AmazonTextractConverter( aws_access_key_idSecret.from_env_var(AWS_ACCESS_KEY_ID), aws_secret_access_keySecret.from_env_var(AWS_SECRET_ACCESS_KEY), aws_region_nameSecret.from_token(us-east-1), ) result converter.run(sources[document.png])这里aws_region_name直接以 token 形式内联传入适用于固定区域而凭证仍走环境变量兼顾了灵活性与安全性。嵌入管道端到端索引流水线AmazonTextractConverter的典型位置是索引流水线的最前端——先完成 OCR 提取再交给预处理与写入组件。下面的例子构建了一条图片/PDF → 清洗 → 分句 → 写入文档存储的完整链路from haystack import Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter from haystack.components.writers import DocumentWriter from haystack_integrations.components.converters.amazon_textract import ( AmazonTextractConverter, ) document_store InMemoryDocumentStore() pipeline Pipeline() pipeline.add_component(converter, AmazonTextractConverter()) pipeline.add_component(cleaner, DocumentCleaner()) pipeline.add_component( splitter, DocumentSplitter(split_bysentence, split_length5), ) pipeline.add_component(writer, DocumentWriter(document_storedocument_store)) pipeline.connect(converter, cleaner) pipeline.connect(cleaner, splitter) pipeline.connect(splitter, writer) file_names [document.png, invoice.pdf] pipeline.run({converter: {sources: file_names}})链路中各环节对应本仓库的既有组件DocumentCleaner清理文本中的空白、无效字符等噪声DocumentSplitter按句子切分split_bysentence每片 5 句便于后续向量化与检索DocumentWriter把文档写入 InMemoryDocumentStore。整个管道同样支持Pipeline.dump()/loads()序列化依赖组件的to_dict/from_dict因此你可以把含 Textract 转换器的管道配置以 YAML 形式存档、版本化与共享。与文档生态的衔接要点元数据对齐meta单字典模式适合为整批文档统一打标如来源批次、业务域列表模式适合为每份文件单独标记来源、页码等此时务必保证列表长度与sources一致否则会引发对齐错误文件路径记录如需在Document.meta中保留完整文件路径以追踪来源记得设置store_full_pathTrue原始响应保留raw_textract_response保留了 Textract 的完整 Block 结构与查询答案是后续表格重建、键值对解析、审计取证的重要数据源建议在需要结构化后处理的场景中不要丢弃凭证与区域区域必须支持 Textract在 AWS 内网环境中默认凭证链会自动拾取 IAM 角色凭证实现零配置运行。综上AmazonTextractConverter用最少的配置把 AWS 托管 OCR 能力无缝嵌入 Haystack 管道默认开箱即用的纯文本 OCR、可选的结构化分析、以及内置的自然语言查询特性配合 Haystack 的标准组件协议warm_up/run/to_dict/from_dict即可快速构建从文档图片到可检索语料的完整数据链路。【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考