
用 Haystack 集成 Azure Form RecognizerAzureOCRDocumentConverter 文档智能转换实战指南【免费下载链接】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 官方参考文档 Azure Form Recognizerversion-2.18 为核心骨架系统讲解AzureOCRDocumentConverter的初始化参数、生命周期方法、运行机制、序列化方式与管道集成实战帮助你用 Azure Document Intelligence 服务把 PDF、Office 文档与图片批量转换为可检索的 Haystack Document。读完本文你将掌握该转换器的全部配置项语义、元数据加工规则与表格处理策略能直接在自己的索引管道中落地使用。组件定位把多格式文件统一转成 Haystack DocumentAzureOCRDocumentConverter是 Haystack 生态中面向云端 OCR 的文档转换组件其职责是调用 Azure 的Document Intelligence 服务原 Form Recognizer把原始文件转成 Haystack 的Document对象供后续清洗、切分、向量化与写入文档存储使用。官方参考文档明确列出了该组件支持的文件格式PDF、JPEG、PNG、BMP、TIFF、DOCX、XLSX、PPTX、HTML。其中 PDF 同时覆盖可搜索型 PDF自带文本层与纯图像型 PDF需 OCR 识别这是本地解析类转换器如 PyPDFToDocument难以替代的关键场景。在 pipeline 中的典型位置是索引管道的最开头、任何 PreProcessor 之前——先完成非结构化文件 → 文本化 Document的转换再交给DocumentCleaner、DocumentSplitter等组件继续加工。使用前提需要一个有效的 Azure 账户以及一个Document Intelligence 或 Cognitive Services 资源需获取资源的 endpoint 与 api_key。环境准备与安装1. 准备 Azure 资源按 Azure 官方快速上手文档创建 Document Intelligence或 Cognitive Services资源拿到两个信息endpointAzure 资源的访问地址URLapi_key访问密钥组件默认从环境变量AZURE_AI_API_KEY读取。2. 安装依赖在 Haystack 2.18 时代使用该组件需要安装 Azure 官方 SDK参考用户指南的说明pip install azure-ai-formrecognizer3.2.0b2结合 发布说明 add-azure_ocr_doc_converter 可知该组件最初以 preview 状态加入 Haystack用于使用 Azure Document Intelligence 服务转换不同类型文件后续版本中它被迁移到独立的azure-form-recognizer-haystack集成包见下文版本演进一节届时安装命令相应变为pip install azure-form-recognizer-haystack。初始化参数详解从 endpoint 到页面布局参考文档给出了完整的构造函数签名__init__( endpoint: str, api_key: Secret Secret.from_env_var(AZURE_AI_API_KEY), model_id: str prebuilt-read, preceding_context_len: int 3, following_context_len: int 3, merge_multiple_column_headers: bool True, page_layout: Literal[natural, single_column] natural, threshold_y: float | None 0.05, store_full_path: bool False, ) - None各参数语义如下参数类型默认值说明endpointstr无必填Azure 资源的 endpointapi_keySecretSecret.from_env_var(AZURE_AI_API_KEY)Azure 资源 API 密钥默认读取环境变量model_idstrprebuilt-read使用的模型 ID可用模型列表见 Azure 官方文档默认使用预置的阅读模型preceding_context_lenint3表格之前要作为上文上下文附加到元数据的行数following_context_lenint3表格之后要作为下文上下文附加到元数据的行数merge_multiple_column_headersboolTrue是否把多行列标题合并为单行page_layoutLiteral[natural, single_column]natural阅读顺序类型threshold_yfloat \| None0.05仅single_column布局下生效按英寸计的纵向分组阈值store_full_pathboolFalse是否在文档元数据中保存文件的完整路径False时仅保存文件名endpoint 与 api_key资源凭证endpoint为必填字符串api_key建议通过Secret机制注入。最省事的做法是不传api_key让组件自动读取AZURE_AI_API_KEY环境变量也可以在初始化时显式传入例如api_keySecret.from_token(your-api-key)model_id选择识别模型model_id决定 Azure 侧采用哪种预置模型执行分析。默认的prebuilt-read适合通用文档阅读如果你有表单、发票、收据等结构化文档可以替换为 Azure 提供的其他预置模型 ID。参考文档特别注明可用模型列表参见 Azure 文档选择时要与你的文档类型匹配。表格上下文preceding_context_len 与 following_context_len这两个参数直接服务于表格抽取的上下文保真。AzureOCRDocumentConverter不会把表格内联成页面正文中的纯文本而是为每个表格单独生成一个Document。为了让表格在脱离正文后依然读得懂组件会把表格前后各 N 行文本提取出来作为preceding_context与following_context写入表格文档的元数据默认前后各取 3 行。这一设计与 发布说明 azure-ocr-converter-enhancements 中为表格提取前后上下文、合并多列标题、支持单列页面布局的能力增强一脉相承。表格结构merge_multiple_column_headers当表格跨页或存在多行列头时开启merge_multiple_column_headersTrue默认值会把多个列头行合并为单行避免切分后列头信息丢失或错位对于列头特别复杂、需要逐行保留的场景可关闭该选项。阅读顺序page_layout 与 threshold_ypage_layout控制 Azure 分析结果的文本重组顺序natural默认采用 Azure 自动判定的自然阅读顺序适合常规排版文档single_column按页面高度将相同高度的行聚合为一组适合多栏排版或存在大量分散元素的复杂页面。当且仅当page_layoutsingle_column时threshold_y才生效它以英寸为单位决定两个被识别的 PDF 元素是否在纵向被归并为同一行。参考文档强调这一阈值对节标题或数字等与剩余文本在水平轴上空间分离的元素至关重要——即处理页眉、页脚、独立编号等元素时合理调大阈值可以把它们与正文正确组合到同一行。store_full_path文件路径元数据store_full_pathTrue时文档元数据中保存文件的完整路径默认False只保存文件名。在需要回溯原始文件位置如企业合规审计、溯源调试的场景建议开启反之为避免暴露本地目录结构则保持默认。组件生命周期warm_up 与 close参考文档定义了组件两个生命周期方法warm_up() - None # 创建 Azure Document Analysis 客户端 close() - None # 关闭 Azure Document Analysis 客户端warm_up()负责在运行前创建 Azure Document Analysis 客户端包括初始化凭证与 HTTP 连接Haystack 管道运行框架会在合适的时机自动触发预热close()用于释放底层客户端资源。这也意味着该组件属于持有外部服务连接的资源型组件在反复执行的索引任务中应复用实例而非频繁重建。run 方法从文件到 Document 的转换流程参考文档给出的运行接口为run( sources: list[str | Path | ByteStream], meta: dict[str, Any] | list[dict[str, Any]] | None None, ) - dict[str, Any]sources三种输入形态sources接受文件路径字符串、Path对象或ByteStream字节流的列表。其中ByteStream让组件可以在不落盘的情况下直接处理内存中的文件内容例如从数据库或网络请求获取的二进制是构建流式索引管道的基础。meta三种元数据注入方式meta参数支持三种用法参考文档明确说明单个字典该字典的内容被附加到所有生成的 Document 元数据上——适合给一批文件统一打标签如来源批次、处理时间。发布说明 single-meta-in-azureconverter 指出这一能力是后续增强即使sources列表长度未知也能向该组件处理的所有文件追加元数据字典列表长度必须与sources一一对应两个列表会被zip 配对为每个文件附加各自独立的元数据不传None如果sources中包含ByteStream对象则这些对象自带的meta会自动合并到输出 Document 的元数据中。返回值run返回一个字典包含两个键键类型说明documentslist[Document]创建出的 Document 列表raw_azure_responselist用于创建这些 Document 的 Azure 原始响应列表raw_azure_response保留了 Azure 服务返回的完整原始结果便于调试、审计或二次加工如提取置信度、坐标框信息。表格的独立 Document 化结合用户指南的说明该组件不会把表格以纯文本形式内联在页面正文中而是为每个表格生成一个独立的Document对象类型为table从而保留表格的二维结构表格内容以 CSV 形式呈现在 Document 内容中同时在元数据中写入preceding_context、following_context与page页码。这让下游检索系统既能命中表格正文又能借助上下文元数据理解表格所处语境。序列化to_dict 与 from_dict参考文档还给出了组件级序列化接口to_dict() - dict[str, Any] from_dict(data: dict[str, Any]) - AzureOCRDocumentConverterto_dict()将组件序列化为字典用于 YAML/JSON 管道配置导出from_dict(data)从字典反序列化还原组件实例是 Haystack 管道反序列化机制的标准入口。值得注意的是发布说明 remove-api-key-from-serialization 明确记录了一项安全增强api_key不会出现在序列化结果中。这意味着导出管道配置时密钥不会落盘到配置文件反序列化后仍需通过环境变量AZURE_AI_API_KEY或运行时注入凭证——这是使用该组件时应当遵守的安全实践。实战示例单独使用与管道集成单独使用最简用法只需 endpoint 与 api_key参考文档示例import os from datetime import datetime from haystack_integrations.components.converters.azure_form_recognizer import AzureOCRDocumentConverter from haystack.utils import Secret converter AzureOCRDocumentConverter( endpointos.environ[CORE_AZURE_CS_ENDPOINT], api_keySecret.from_env_var(CORE_AZURE_CS_API_KEY), ) results converter.run( sources[test/test_files/pdf/react_paper.pdf], meta{date_added: datetime.now().isoformat()}, ) documents results[documents] print(documents[0].content) # This is a text from the PDF file.注意这里演示了两种凭证来源endpoint 直接来自环境变量api_key 通过Secret.from_env_var包装环境变量名——Secret是 Haystack 统一的敏感信息管理机制支持环境变量、token、keyring 等多种来源。同时展示了meta的单字典用法date_added时间戳被附加到本次转换的所有文档上。在索引管道中集成参考用户指南的管道示例把转换器放到索引管道最前端衔接清洗、切分与写入from haystack import Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.components.converters import AzureOCRDocumentConverter from haystack.components.preprocessors import DocumentCleaner from haystack.components.preprocessors import DocumentSplitter from haystack.components.writers import DocumentWriter from haystack.utils import Secret document_store InMemoryDocumentStore() pipeline Pipeline() pipeline.add_component( converter, AzureOCRDocumentConverter( endpointazure_resource_url, api_keySecret.from_token(your-api-key), ), ) 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 [my_file.pdf] pipeline.run({converter: {sources: file_names}})这条管道完整呈现了云端 OCR 索引的标准链路converter调用 Azure Document Intelligence 完成识别 →DocumentCleaner清洗噪声 →DocumentSplitter按句子切分为检索单元 →DocumentWriter写入文档存储。对于多栏、扫描件等复杂排版可在此基础上调整page_layoutsingle_column与threshold_y以获得更准确的文本顺序。版本演进与迁移说明该组件的演进脉络在发布说明与 MIGRATION.md 中有迹可循2.18 时代组件存在于 Haystack 主仓库的haystack.components.converters命名空间用户指南导入路径而本参考文档集成 API 文档采用haystack_integrations.components.converters.azure_form_recognizer的集成包路径功能增强azure-ocr-converter-enhancements 引入了表格前后上下文、合并多列标题、单列页面布局等高级处理能力即本文所述preceding_context_len、merge_multiple_column_headers、page_layout等参数废弃与迁移AzureOCRDocumentConverter在后续版本被标记废弃计划在 Haystack 3.0 移除整体迁移至独立的azure-form-recognizer-haystack包继续使用需执行pip install azure-form-recognizer-haystack并改用集成包导入路径from haystack_integrations.components.converters.azure_form_recognizer import AzureOCRDocumentConverter。对于新项目建议直接采用集成包路径与当前版本的用户指南参见 docs 下最新版组件文档对于升级中的存量项目则需在迁移窗口内同步调整安装包与导入语句。总结AzureOCRDocumentConverter的价值在于把 Azure Document Intelligence 的云端 OCR 能力无缝接入 Haystack 索引管道多格式输入含图像型 PDF、表格独立 Document 化并附带上下文元数据、ByteStream内存流转、安全的密钥序列化策略以及可插拔的warm_up/close生命周期管理。配置时重点关注model_id模型选型、page_layout与threshold_y复杂排版阅读顺序、preceding_context_len/following_context_len表格语境保真这三组参数即可应对从常规文档到复杂多栏页面的各类转换需求。【免费下载链接】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),仅供参考