新闻详情

新闻详情

首页 / 资讯中心 / 详情

RocketRide Landing.ai 节点实战:用 ADE Parse + Extract 将非结构化文档转换为 Markdown 与 JSON 结构化数据

发布时间:2026/9/25 7:15:51来源:尧图网络
RocketRide Landing.ai 节点实战:用 ADE Parse + Extract 将非结构化文档转换为 Markdown 与 JSON 结构化数据
【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载导读本文围绕 RocketRide 开源仓库中的landing_ai节点包展开系统讲解如何通过 Landing.ai 的 Agentic Document ExtractionADE服务在 RocketRide 管道中完成「非结构化文档 → 干净 Markdown 与表格 → 符合 JSON Schema 的结构化字段」的完整处理链路。读完本文你将掌握两个子节点Landing.ai Parse、Landing.ai Extract的 lane 接线方式、全部配置参数与默认值、API Key 认证机制以及底层 Python 实现的运行细节与边界行为可以直接在画布上搭建可运行的文档抽取管道。Landing.ai ADE 与节点包的定位Landing.ai 提供 Agentic Document ExtractionADE一种面向文档处理的云端服务可以把非结构化文件转换成可用文本和结构化数据。在本仓库中ADE 被封装为两个可组合的子节点位于 nodes/src/nodes/landing_aiLanding.ai Parse接收文档字节调用 ADE 的parse操作输出干净的 Markdown 文本以及表格块Landing.ai Extract接收 Parse 产出的 Markdown结合上传的 JSON Schema 调用 ADE 的extract操作输出结构化答案answers或文档documents。选择本包的前提是你需要同一个 ADE 服务同时提供解析与抽取两种操作如果只需要可读的文档文本和表格单独使用 Parse 即可。典型的管道接线为Parse → Extract因为 Extract 消费的是 Parse 产生的 Markdown 而不是原始文档。数据流与 Lanes两个子节点的 lane 定义集中在各自的 service 描述文件里services.parse.json 声明lanes: {tags: [text, table]}services.extract.json 声明lanes: {text: [answers, documents]}。汇总如下Lane inLane out说明tagstextLanding.ai Parse 写入文档的 Markdown 响应tagstableLanding.ai Parse 写入每个类型为table的 ADE chunktextanswersLanding.ai Extract 将结构化抽取结果作为 JSON 答案写入textdocumentsLanding.ai Extract 将抽取结果作为 JSON 文档内容写入Parse 的输入是二进制字节流由 tag 流状态机接收支持 PDF、图片、电子表格XLSX/CSV等输入类型Extract 的输入是textlane 上的解析后 Markdown因此必须放置在 Parse 下游。配置模型与参数详解两个服务都只有一个defaultprofile。节点读取配置时get_node_config会先获取节点配置再解包嵌套的default字典landing_ai_base.pyconfig Config.getNodeConfig(logical_type, conn_config) if not isinstance(config, dict): return {} inner config.get(default) return inner if isinstance(inner, dict) else config因此画布上的服务配置会落到landing_ai_parse.default/landing_ai_extract.default这样的对象字段上见两个 service JSON 中的shape与fields.default定义。Landing.ai Parse 配置Model控制发送给 ADEparse调用的模型值默认dpt-2-latest这也是当前节点唯一提供的取值service JSON 的enum只有[dpt-2-latest, DPT-2 (latest)]。除非节点配置被扩展支持其他 ADE 模型否则保持默认即可。Region默认production需要欧盟部署时选择eu对应 eu-west-1 数据驻留端点。解析器会把任何其他配置值静默重置为production——对应源码 parse.pyif self._region not in (production, eu): self._region production所以请只使用production与eu两个取值。Landing.ai Extract 配置Extraction SchemaJSON Schema 文件是服务元数据中的必填项required: [landing_ai_extract.schema_file]。上传的必须是JSON 对象形式的>_MAX_SCHEMA_BYTES 2 * 1024 * 1024 if len(raw) _MAX_SCHEMA_BYTES: raise ValueError(f... uploaded schema is too large ...) schema json.loads(raw.decode(utf-8)) ... if not isinstance(schema, dict): raise ValueError(Landing.ai Extract: extraction schema must be a JSON object)注意json.loads同时捕获RecursionError用来拦截在体积上限之下、但嵌套深度病态的 JSON避免解析时递归崩溃。Schema 内容被当作不透明数据只重新序列化发送给 ADE不会被读取字段值或写盘。Schema 用于定义响应必须包含的字段并支持 ADE 的x-alternativeNames与format关键字。上传错误会在校验阶段以warning形式报告但不会阻塞画布编辑真正运行时抽取调用会失败。service JSON 的preconfig.default自带一个最小可用示例{ type: object, properties: { summary: { type: string } } }Strict默认关闭。关闭时文档不完全满足 Schema 也会返回部分抽取结果开启后不满足 Schema 的文档会失败而非产出部分结果。Region与 Parse 行为一致production/eu二选一其他值同样被归一化为productionextract.py。完整参数表由 nodes:docs-generate 生成Landing.ai Extractservices.extract.json字段类型说明默认landing_ai_extract.api_keystringAPI Key。Landing.ai ADE API Key留空时回退到ROCKETRIDE_LANDING_AI_KEY环境变量。landing_ai_extract.regionstringRegion。调用哪个 Landing.ai 部署。使用 EU 指向 eu-west-1 数据驻留端点。productionlanding_ai_extract.schema_filestringExtraction SchemaJSON Schema 文件。上传描述待抽取字段的 .json 文件支持 ADE 的x-alternativeNames与format关键字。landing_ai_extract.strictbooleanStrict。文档不匹配 Schema 时让抽取失败而不是返回部分结果。falseLanding.ai Parseservices.parse.json字段类型说明默认landing_ai_parse.api_keystringAPI Key。Landing.ai ADE API Key留空时回退到ROCKETRIDE_LANDING_AI_KEY环境变量。landing_ai_parse.modelstringModel。使用的 ADE parse 模型。dpt-2-latestlanding_ai_parse.regionstringRegion。调用哪个 Landing.ai 部署。使用 EU 指向 eu-west-1 数据驻留端点。production认证API Key 与环境变量回退在每个服务的API Key字段填入 Landing.ai ADE Key或在该字段为空时设置环境变量ROCKETRIDE_LANDING_AI_KEY。解析顺序由 resolve_api_key 实现优先取配置中的api_key去除首尾空白为空则回退到环境变量再为空返回Nonereturn (config.get(api_key) or ).strip() or (os.environ.get(ROCKETRIDE_LANDING_AI_KEY) or ).strip() or None保存配置时validateConfig会做一次便宜的只读校验调用parse_jobs.listlanding_ai_base.py该接口是只读的、不消耗额度。校验失败只输出 warning不会阻止编辑管道client build_client(api_key, config.get(region) or production) client.parse_jobs.list(page0, page_size1)两个子节点的IGlobal.validateConfigparse/IGlobal.py、extract/IGlobal.py都用try/except包裹校验逻辑并统一降级为 warningExtract 还会额外检查 schema_file 是否为空以及能否成功解码。运行机制从源码看底层调用链Parsetag 流状态机与 ADEparse调用文档字节通过tagslane 流入由 parse/IInstance.py 的writeTag状态机处理识别OMET元数据标签、SBGN流开始、SDAT二进制数据块通过 header 长度剥离 tag 头、累积document_data、SEND流结束并触发处理。处理前会先检查输出是否有人监听IInstance.py如果text和table都没有 listener则完全跳过 ADE 远程调用这是节省额度的关键优化has_text_listener self.instance.hasListener(text) has_table_listener self.instance.hasListener(table) if not has_text_listener and not has_table_listener: debug(Landing.ai Parse: no text/table listeners connected; skipping parse) return真正调用发生在Parser.parseparse.py未配置 API Key 时记录error并返回空文本、无表格fail-closed文档字节为空时直接返回空结果缺文件名时用guess_filename(file_data, pdf)嗅探出带类型的文件名因为 ADE 依赖文件名推断文档类型通过build_client创建一次性的LandingAIADE客户端每次调用新建保证并发安全见 landing_ai_base.py以(filename, bytes)元组直传 SDK、不落临时文件response client.parse(document(file_name, file_data), modelself._model)响应映射_map_responseparse.py把response.markdown作为文本遍历response.chunks只把type不区分大小写为table且 Markdown 非空的 chunk 放进表格列表同时从metadata读取credit_usagedebug 日志和failed_pages若有则 warning 提示部分页解析失败。ExtractMarkdown 累积与 ADEextract调用extract/IInstance.py 通过writeText把textlane 上收到的所有 Markdown 片段累积进markdown_parts对象关闭时用空行连接成一个整体再触发抽取markdown \n\n.join(self.markdown_parts).strip() if markdown: extraction self.IGlobal.extractor.extract(markdown)Extractor.extractextract.py的行为构造阶段捕获到的 schema 错误在运行时抛出ValueError延迟到运行时而非在beginGlobal崩溃整个管道无 API Key 或 Markdown 为空时返回{}调用 ADE 时schema 必须传 JSON 字符串——直接传 dict 会被 multipart 展平导致 422response client.extract(markdownmarkdown, schemajson.dumps(self._schema), strictself._strict)_map_response取response.extraction若metadata.warnings存在则 warning 提示部分抽取但依然返回响应中的 extraction。Extract 的 documents 输出规则当documentslane 有连接时IInstance._to_documents 会把抽取结果包装成文档对象结果转成一个 JSON 文档若抽取值是列表则每个元素各转成一个 JSON 文档并且每个输入对象的 chunk ID 从 0 开始递增编号items extraction if isinstance(extraction, list) else [extraction] for item in items: ... documents.append(Doc(page_contentjson.dumps(item), metadatametadata)) self.chunkId 1失败与边界行为速查场景Parse 行为Extract 行为输出无 listener完全跳过 ADE 调用—缺 API Key返回空文本、无表格记 error返回空抽取{}记 error空文档 / 空 Markdown返回空结果返回空抽取{}ADE 请求失败记录日志并重新抛出异常记录日志并重新抛出异常Schema 无效—校验期 warning运行时抛ValueError上游返回抽取 warnings—记录日志但仍返回响应中的 extraction两条失败语义值得注意缺 key 与空输入是fail-closed 返回空而 ADE 远端失败是log-and-re-raise见 parse.py 与 extract.py避免把远端故障静默伪装成没有内容。测试验证与源码佐证节点包附带了两组独立单测用项目 mock 遮蔽landingai_adeSDK无需真实服务即可运行nodes/test/landing_ai/parse/test_parse.py验证parse()把 ADE 响应映射为(markdown, [table blocks])SDK 收到的是(filename, bytes)元组与配置的模型缺文件名时嗅探出.pdf后缀无 Key 时返回空结果SDK 异常被重新抛出_map_response仅按不区分大小写的table类型过滤表格 chunk。nodes/test/landing_ai/extract/test_extract.py验证 base64>赞分享【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载相关推荐5个Zutilo技巧让你成为Zotero文献管理高手5个Zutilo技巧让你成为Zotero文献管理高手 还在为Zotero的批量操作烦恼吗每天面对成百上千的文献条目手动复制标签、关联项目、整理元数据是否让你SpotLight项目删除背后的技术债务与维护成本分析SpotLight项目删除背后的技术债务与维护成本分析 SpotLight项目GitHub加速计划作为曾经备受关注的开源项目其突然删除的消息引发了开发者社RocketRide 中集成 Landing.ai ADE 实现文档解析与结构化抽取的完整指南RocketRide 中集成 Landing.ai ADE 实现文档解析与结构化抽取的完整指南 本文以 RocketRide 开源仓库中的 Landing.ai上一篇degit的成功因素为什么它能在众多工具中脱颖而出下一篇acts_as_commentable完全解析从安装到高级配置的10个实用技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

电力远程运维系统源码解析:Modbus+SQLite轻量闭环实践 2026/9/25 7:46:03

电力远程运维系统源码解析:Modbus+SQLite轻量闭环实践

简介:本资源是一套面向电力行业开发者的远程运维系统源码实现,聚焦配电房智能监控与设备维护管理场景,适用于具备Python/前端基础的中级开发者学习IoT运维系统架构设计。压缩包共167个文件,含32个核心Python后端模块、29个HTML前端…

阅读更多 →
DDR内存原理深度解析:从存储单元到预取机制与带宽优化 2026/9/25 7:46:03

DDR内存原理深度解析:从存储单元到预取机制与带宽优化

1. DDR基础认知:从内存条到存储原理的完整拆解1.1 为什么每个硬件工程师都绕不开DDR搞嵌入式或者做服务器运维的朋友,对DDR这个词肯定不陌生。你打开任何一台设备的主板,CPU旁边那一排排黑色的芯片或者插槽里的内存条,大概率就是D…

阅读更多 →
CLI-Universe 实战:为 Terminal Agents 构建可验证任务合成引擎的 config.toml 骨架 2026/9/25 7:45:50

CLI-Universe 实战:为 Terminal Agents 构建可验证任务合成引擎的 config.toml 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ESP32上WASM调用硬件的原理与宿主API实现 2026/9/25 7:45:43

ESP32上WASM调用硬件的原理与宿主API实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
《ChatGPT 微服务应用体系构建》chatgpt-web 实战:React fetch + ReadableStream 流式接口对接与打字机效果实现 2026/9/25 7:45:32

《ChatGPT 微服务应用体系构建》chatgpt-web 实战:React fetch + ReadableStream 流式接口对接与打字机效果实现

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、…

阅读更多 →
MATLAB连接USRP B210实战:UHD驱动安装与设备检测指南 2026/9/25 7:45:25

MATLAB连接USRP B210实战:UHD驱动安装与设备检测指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉