尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

滚动内容自动提取

滚动内容自动提取 滚动内容自动提取使用文档自动滚动手机屏幕连续截图去除相邻截图的重叠区后拼接成长图再交给 AI 视觉模型分析提取内容最终导出为 Excel (.xlsx) / Word (.docx) 文档。目录功能概述三阶段工作流核心算法两种提取模式Agent 工具定义使用案例导出格式说明常见问题功能概述解决的痛点痛点解决方案逐页调 LLM 提取慢、Token 消耗大先本地拼接长图LLM 调用次数从 N 页降为少量长图分段跨屏被截断的条目丢失相邻截图去重叠拼接后条目完整呈现不再按页丢弃边缘条目状态栏 / TabBar 在长图中反复出现行灰度签名自动检测固定 UI 区域并剔除不同帧之间的重复数据叠加Fingerprint Set 全局去重分段边界重叠区的重复由指纹兜底滑动触底的准确判定aHash 感知哈希比较16×16 灰度降采样相似度 ≥ 97% 判定触底内容加载延迟导致截图不完整每次滑动后等待可配置的 settle 时间默认 800ms核心能力快速采集滚动阶段不调用 LLM只做截图 aHash 触底检测速度大幅领先逐页提取本地长图拼接纯 Canvas 计算自动剔除固定状态栏/底部栏精确对齐相邻截图重叠区超长图自动分段按 4096px 分段输出段间保留 300px 重叠避免条目被切断双提取模式Schema 结构化表格模式Excel/通用与 richMode 图文模式Word 专用任务自动收尾提取成功后 AI Agent 任务直接结束不再进入下一轮 LLM 决策三阶段工作流阶段 3AI 分析长图分段阶段 2去重叠拼接长图阶段 1自动滚动采集截图否未触底是触底达到 maxPages否Schema 模式是图文模式开始首屏截图上滑手势等待 settleMs滑动后截图aHash 相似度 0.97?采集结束逐行灰度签名检测固定顶部栏/底部栏相邻截图重叠区匹配Canvas 拼接虚拟长图按 4096px 分段段间保留 300px 重叠richMode?首段推断字段 Schema逐段结构化提取 JSON逐段识别图片区域 文本Canvas 裁剪图片区域Fingerprint 去重导出 Excel / Word结束整个 Agent 任务与旧版逐页提取的对比维度旧版逐页提取新版长图拼接LLM 调用次数1 次 Schema N 页 × 1 次提取1 次 Schema 分段数 × 1 次提取30 屏通常只有 3~5 段滚动速度每页需等待 LLM 返回滚动阶段零 LLM 调用只受 settleMs 限制截断条目每页丢弃上下边缘不完整条目拼接后条目完整无信息丢失固定 UI 干扰每页都含状态栏/TabBar自动检测剔除只保留一次screenshots返回值每页原始截图拼接后的长图分段即实际交给 AI 的图片核心算法1. 触底判定aHash 感知哈希输入滑动前截图 A、滑动后截图 B 处理 1. 将 A、B 分别降采样为 16×16 像素 2. 转为灰度图加权公式R*0.299 G*0.587 B*0.114 3. 计算 256 个灰度值的均值 avg 4. 每个像素 avg → 1否则 → 0得到 256bit 哈希串 5. similarity 1 - 汉明距离/256 判定similarity 0.97 → 触底停止滚动2. 行灰度签名拼接的基础每张截图宽度降采样到 48 列 → 逐行取灰度均值 → Float32Array(高度)一次getImageData即可得到整张图的行级特征后续固定栏检测和重叠匹配都在这个签名数组上进行避免反复读像素。3. 固定栏检测detectFixedBars取滑动前后两帧的行签名 从顶部逐行比较|差值| 2 的连续区域 → 固定顶部栏状态栏/导航栏 从底部逐行比较同理 → 固定底部栏TabBar/输入框 单侧上限 20% 屏高防止纯色背景误判拼接时中间帧剔除固定栏首帧保留顶部含状态栏末帧保留底部保证长图首尾完整。4. 重叠区匹配findOverlapOffset在前一帧内容区 [topBar, height-bottomBar) 中滑窗搜索 与当前帧内容区顶部 120 行签名最匹配的位置 matchY 匹配误差 窗口内平均灰度差 8 视为匹配失败 匹配成功当前帧从 topBar (prevEnd - matchY) 行开始为新内容 匹配失败保留当前帧完整内容区少量重复由指纹去重兜底带提前放弃优化累计误差已劣于当前最优即跳出30 屏拼接耗时毫秒级。5. 长图分段Chunk虚拟长图总高 各拼接片段高度之和 按 CHUNK_MAX_HEIGHT 4096px 分段渲染到 Canvas → JPEG (质量 0.85) 段间保留 CHUNK_OVERLAP 300px 重叠 → 条目不会在分段边界被切断分段原因视觉模型对超高长图的细节识别能力会下降且 Canvas 存在尺寸上限。6. 跨段去重Fingerprint模式指纹规则Schema 模式前 2 个非空字段值 trim 后用|拼接richMode条目文本 trim 后取前 60 字符使用全局Setstring追踪分段重叠区 300px 内重复识别的条目会被自动去掉。两种提取模式Schema 模式默认Excel / both 格式用首段长图让 LLM 推断列表字段结构如{name:string,price:number}逐段按 Schema 结构化提取 JSON 数组产出result.items表格数据导出 Excel / Word 表格richMode 图文模式Word 格式自动启用跳过 Schema 推断逐段让 LLM 返回每个条目的image_region像素坐标text全部文本用 Canvas 从长图分段中裁剪图片区域 → JPEG data URL产出result.richItems导出为图文混排 Word 文档调用入口react.ts / phone-tools.ts在outputFormat word时自动传richMode: true。Agent 工具定义ExtractScrollingContent已注册为 Phone ToolReAct / Plan-and-Resolve Agent 可自主调用。工具参数参数类型必填说明descriptionstring是要提取什么数据如product list with name, price, ratingmaxPagesnumber否最大滚屏次数settleMsnumber否每次滚动后的等待时间 (ms)schemaHintstring否逗号分隔的字段名提示outputFormatexcel|word|both否导出格式默认bothword自动启用 richMode 图文模式工具返回值示例Extraction complete. Extracted 47 unique items across 12 page(s). Removed 5 duplicates. End reason: bottom_reached. Files downloaded: extract-2026-06-16-1789551234567.xlsx .docx任务自动结束行为提取成功返回以Extraction complete开头后整个 AI Agent 任务立即结束ReAct 模式react.ts不再截图进入下一轮 LLM 决策当前步骤标记成功task.conclusion直接取提取报告task.status finishedPlan-and-Resolve 模式agent.ts剩余 pending 步骤全部标记skipped跳过 Report 阶段的 LLM 总结提取无数据No data extracted...时任务继续正常流转LLM 有机会调整策略如先滚动到正确页面再重试。使用案例案例 1聊天自然语言触发最常用在 AI 对话框中直接输入把当前页面的商品列表提取到 Excel提取美团外卖商家列表包含店名、评分、月销量、起送价把这个小红书笔记列表保存成 Word 文档含封面图Agent 会自动识别意图并调用ExtractScrollingContent工具任务在提取完成后自动结束。案例 2组合指令先导航再提取打开小红书搜索 deepseek把搜索结果列表提取到 Excel包含标题、作者、点赞数Agent 先执行打开 App、搜索等操作最后调用提取工具并结束任务。案例 3通过 phone-agent MCP 调用在支持 MCP 的客户端如 Qoder中使用 run_agent_task提取当前手机页面的新闻列表到 Excel字段包含标题、来源、时间任务完成后 MCP 返回 Markdown 格式的执行报告含每步 summary 与工具调用。进度消息参考onProgress回调依次会收到类似以下消息Capturing initial screenshot... Page 1: scrolling down (1 screenshot(s) captured)... Page 2: scrolling down (2 screenshot(s) captured)... Bottom detected (similarity98.4%). Captured 9 screenshot(s). Stitching 9 screenshot(s) into a long image... Stitched into 3 image segment(s). Analyzing content with AI... Inferring data schema from stitched image... Segment 1/3: extracting data... Segment 1/3: 15 new items (total 15) Segment 2/3: extracting data... Segment 2/3: 14 new items (total 29) Segment 3/3: extracting data... Segment 3/3: 11 new items (total 40)导出格式说明Excel (.xlsx) — Schema 模式特性说明Sheet 名Data数据Screenshots截图传入 screenshots 时生成第一行列头字段名列宽自动适配基于最大内容长度数据类型数字保持 number字符串保持 stringnull → 空截图保存每页截图的 Base64 按单元格上限分列存入Screenshotssheet拼接解码可还原图片同时逐张下载为独立图片文件.png/.jpg与 Excel 同名前缀、按页编号说明xlsx 社区版库SheetJS不支持单元格内嵌图片故截图以「Base64 分列存储 独立图片文件下载」双方式保存确保图片不丢失。Word 表格版 (.docx) — Schema 模式both 格式特性说明标题 统计行一级标题、“共提取 N 条数据导出时间”表格样式深色表头、交替行色、自动列宽截图附录传入screenshots时嵌入拼接后的长图分段Word 图文版 (.docx) — richModeword 格式特性说明每条内容裁剪图片300px 宽等比缩放如有 多行文本段落 分隔线文本样式第一行加粗稍大标题感其余行普通样式页面A41.25 英寸左右页边距常见问题Q: 提取结果为空排查步骤确认手机屏幕当前确实显示列表/卡片内容检查description是否准确描述了要提取的数据查看控制台[ScrollExtract]日志确认拼接分段数和 Schema 推断是否正常尝试添加schemaHint明确指定字段名Q: 拼接后的长图有错位或重复条带可能原因页面滚动时有视差动画/吸顶元素行签名匹配失败此时该帧保留完整内容区会出现重复但不会丢内容列表项之间是大面积纯色背景重叠匹配找到了错误位置说明匹配失败产生的重复条目会被指纹去重移除一般不影响最终数据如果错位严重可增大settleMs让页面完全静止后再截图。Q: 过早判定触底可能原因页面有大面积固定区域如顶部 Banner滑动后变化区域占比小endThreshold设置过高解决方案降低endThreshold如 0.95 或 0.93。Q: 提取速度还想更快减小settleMs如 500ms适用于静态内容页面减小maxPages限制采集范围使用更快的视觉模型LLM 耗时只与拼接后的分段数相关与滚屏数无关Q: 长图分段边界会不会切断条目分段之间保留 300px 重叠区被切断的条目会在相邻分段中完整出现一次重复识别由指纹去重兜底。Q: 为什么 Word 格式和 Excel 格式提取出的内容结构不同outputFormat: word自动启用 richMode 图文模式产出图片 自由文本richItemsexcel/both走 Schema 模式产出结构化表格items。两种模式的 LLM prompt 与产物完全不同。Q: 支持哪些类型的列表列表类型支持情况原生 Android RecyclerView支持React Native FlatList支持Flutter ListView支持WebView 内 H5 列表支持分页加载非无限滚动支持需配合点击翻页横向滚动列表暂不支持当前仅纵向拼接核心优势基于截图 视觉 AI不依赖 UI dump 或 XPath对任意渲染框架通用。
返回列表