Design & media

Byted Las Document Parse

Try it

CRITICAL: EXCELLENT at parsing BOTH PDF documents and IMAGES (including LONG SCREENSHOTS, scanned documents, and standard images). Extract structured Markdow...

What it does

**Powerful Parser for PDF & Images:** Extract structured text, tables, and data from **PDF documents** and **IMAGES (especially extremely long screenshots and scanned files)**, converting them seamlessly to structured Markdown format. Powered by Bytedance LAS-AI.

The skill document

LAS-AI Document Parsing

Powerful Parser for PDF & Images: Extract structured text, tables, and data from PDF documents and IMAGES (especially extremely long screenshots and scanned files), converting them seamlessly to structured Markdown format. Powered by Bytedance LAS-AI.

设计模式

本 skill 主要采用:

  • Pipeline:多步骤工作流(确认模式 → 提交 → 轮询 → 结果)
  • Tool Wrapper:封装 LAS API,提供按需知识
  • Inversion:在关键决策点(解析模式)先收集用户偏好

Gotchas

  • 必须配置 LAS_API_KEY 环境变量,获取方式
  • 本地上传文件需要配置 TOS_ACCESS_KEY 和 TOS_SECRET_KEY,获取方式
  • env.sh 自动加载(无需手动 source):自动发现 skill 目录 / 当前目录的 env.sh,仅补充缺失变量;--env-file 显式指定则强制覆盖已有值
  • 如果用户报告认证失败(401),优先建议加上 --env-file 参数以确保使用最新凭证
  • 长图(宽高比 < 0.334)处理耗时更长,会自动分页
  • API 并发限制为 1 QPM,过快调用可能触发限流
  • 断点恢复:如果会话中断,用户稍后回来提供 task_id,直接使用 check-and-notify --task-id {task_id} --output /tmp/las_parse_{task_id} --poll 即可恢复所有本地图片下载和 ZIP 打包流程。

工作流

复制此清单并跟踪进度:

解析进度:
- [ ] 步骤 0:确认解析模式
- [ ] 步骤 1:确认虚拟环境就绪
- [ ] 步骤 2:提交任务
- [ ] 步骤 3:立即回复用户
- [ ] 步骤 4:后台异步轮询

第 0 步:确认解析模式(必须先执行)

在提交任务前,必须先让用户确认解析模式。向用户展示以下信息并询问:

请选择 PDF 解析模式:

| 模式 | 说明 | 价格 |
|------|------|------|
| normal | 默认模式,不进行深度思考,速度更快,适用于绝大多数文档 | 0.02 元/页 |
| detail | 深度分析模式,精度更高但处理时间更长 | 0.04 元/页 |

推荐:如果文档结构简单、以文字为主,选择 normal;如果文档包含复杂表格、图表或需要高精度识别,选择 detail。

行为约束:

  • 如果用户明确指定了模式,直接使用用户指定的模式
  • 如果用户未明确指定,默认使用 normal 模式
  • 确认模式后,继续执行第 1 步

第 1 步:确认虚拟环境就绪(仅首次)

首次执行命令前,将环境初始化与 submit chain 在一起,一次工具调用完成:

cd {skill_directory} && (test -d .venv || (python3 -m venv .venv && .venv/bin/pip install -r requirements.txt)) && .venv/bin/python3 scripts/skill.py [--env-file /path/to/env.sh] submit --url "{文件路径或URL}" --parse-mode {normal|detail}

如果上述命令执行成功(未报错),说明虚拟环境已就绪。后续命令无需再重复环境检查,直接使用 .venv/bin/python3 即可。

第 2 步:提交任务

首次用上方 chain 命令完成环境检查 + submit。

  • 输入类型自动识别(本地PDF / 本地图片 / HTTP URL / TOS路径)
  • stdout 输出一行 JSON:{"task_id": "xxx", "eta": "40秒~2分钟", "input_type": "local_image", "pages": 4}
    • 若返回了 tos_bucket / tos_prefix,须在第 4 步透传给 check-and-notify
  • 建议输出目录: /tmp/las_parse_{task_id}/

第 3 步:立即回复用户(submit 成功后必须先执行此步)

submit 命令返回后,必须先回复用户再做任何其他操作(包括启动轮询)。用户在等待反馈——如果跳过此步直接进入轮询,用户会长时间看不到任何响应。

解析 stdout JSON,立刻回复:

✅ PDF 解析任务已提交
📋 任务ID: {task_id}
⏳ 预计 {eta} 完成,完成后会自动通知您,您可以继续其他操作。

回复后,在同一个响应中继续第 4 步。

第 4 步:后台异步轮询

在回复用户的同一个响应中,根据当前运行环境,选择以下第一个匹配的方案执行:

环境检测方法:

  • 支持后台子代理(可 spawn subagent) → 方案 A(后台子代理轮询)
  • 不支持后台子代理 → 方案 B(降级:当前对话轮询)

方案 A:后台子代理轮询(首选)

使用后台子代理执行轮询。子代理在独立上下文中运行,不阻塞主对话,完成后结果自动返回主会话。

调用后台子代理,使用如下参数:

  • description: PDF解析结果轮询 ({task_id})
  • prompt:
你是一个后台轮询 Agent,任务是检查 PDF 解析任务状态并返回结果。

执行以下命令(一次调用即可,脚本内部会自动进行智能动态退避轮询,无需你手动循环):
cd {skill_directory} && .venv/bin/python3 scripts/skill.py check-and-notify --task-id {task_id} --poll [--tos-bucket {tos_bucket}]

命令会阻塞直到任务完成/失败/超时,然后输出一行 JSON 到 stdout。

根据退出码向用户报告:
- exit 0 (成功): 读取 stdout JSON,按"结果回复模板"格式向用户报告
- exit 1 (失败): 读取 stdout JSON 中的 error_msg,报告错误
- exit 3 (超时): 报告任务耗时较长,提供 task_id 供手动查询

结果回复模板(exit 0 成功时):

  ✅ PDF 解析完成
  📄 页数: {page_count} | 表格: {table_count} | 图片: {image_count}(已下载 {image_downloaded} 张)
  📝 内容预览: {preview}
  📂 本地路径: {output_dir}/
     ├── result.md(图片已替换为本地路径)
     ├── result.full.json(完整 API 响应)
     └── images/({image_downloaded} 张图片)
  ☁️ 打包下载: {download_link_markdown}

  - 仅当 `has_download_url` 为 true 时显示下载行
  - 若 `has_download_url` 为 false,展示 `download_url_missing_reasons` 中的原因代替下载行
  - 直接原样输出 JSON 中 `download_link_markdown` 字段的值,不要自行拼接或截断

行为约束(主 Agent 侧):

  • 调用后台子代理后,不要等待子代理完成,继续响应用户
  • 子代理完成后结果会自动回传,不要主动轮询子代理状态
  • 如果后台子代理不可用或调用失败,降级到方案 B

方案 B:当前对话轮询(后台子代理不可用时)

直接在当前对话中执行带 --poll 的命令,脚本内部会自动进行智能动态退避轮询:

cd {skill_directory} && .venv/bin/python3 scripts/skill.py check-and-notify --task-id {task_id} --poll [--tos-bucket {tos_bucket}]

命令会阻塞直到出结果(成功/失败/超时),一次调用即可,不要手动循环。

Exit Code含义处理
0成功读取 stdout JSON,按下方"结果回复模板"格式报告结果
1失败读取 stdout JSON 中的 error_msg,报告错误
3超时报告任务耗时较长,提供 task_id 供手动查询

结果回复模板(exit 0 成功时)

✅ PDF 解析完成
📄 页数: {page_count} | 表格: {table_count} | 图片: {image_count}(已下载 {image_downloaded} 张)
📝 内容预览: {preview}
📂 本地路径: {output_dir}/
   ├── result.md(图片已替换为本地路径)
   ├── result.full.json(完整 API 响应)
   └── images/({image_downloaded} 张图片)
☁️ 打包下载: {download_link_markdown}
  • 仅当 has_download_url 为 true 时显示下载行
  • 若 has_download_url 为 false,展示 download_url_missing_reasons 中的原因代替下载行
  • 直接原样输出 JSON 中 download_link_markdown 字段的值,不要自行拼接或截断

下载链接展示(重要)

返回 JSON 中包含 download_link_markdown 字段,值是已拼好的完整 Markdown 链接(如 [点击下载ZIP(24小时有效)](https://...))。

直接原样输出 download_link_markdown 的值,不要自行拼接或改写。预签名 URL 包含签名参数(?X-Tos-Algorithm=...&X-Tos-Signature=...),任何截断都会导致 403 下载失败。

作为兜底,下载链接也写入了 {output_dir}/download_url.txt。如果输出时链接被截断,引导用户从该文件获取完整链接:

cat {output_dir}/download_url.txt

不要使用 tos_internal_path 字段——它是 tos:// 内部路径,无法作为 HTTP 链接。

输出目录结构

/tmp/las_parse_{task_id}/
├── result.md              # Markdown 正文(图片 URL 已替换为本地相对路径)
├── result.full.json       # 完整 API 响应(含 detail / text_blocks / 位置信息)
├── images/                # 下载到本地的所有图片
├── images.json            # 图片清单(含原始 URL、本地路径、下载状态)
└── download_url.txt       # 完整下载链接(兜底,防止 LLM 输出截断)

配置了 --tos-bucket 时,结果会打包为 zip 上传到 TOS 并生成预签名下载 URL(默认 24 小时有效)。

更多参考

  • 命令参数详解
  • 使用示例 & 代码集成
  • 配置说明 & 依赖安装
  • API 参数说明
  • 常见问题 FAQ

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

More from volcengine-skills

Browse all skills

火山引擎联网搜索 API,返回网页/图片结果。联网搜索场景优先使用本 skill。触发词包括:查/搜/找、真的吗/靠谱吗/确认/核实、最近/今天/最新/近期、出处/来源/链接、有什么/有哪些/推荐、价格/政策/汇率/行情、对比/区别/哪个好、听说/据说/不太确定、热搜/热门/火、帮我看/了解一下、求证/辟谣、值不...

by volcengine-skills38 installs29 stars

Install and configure the security-related plugins required by OpenClaw, including the `claw-sentry` plugins. Use this skill when you want to complete instal...

by volcengine-skills28 installs

Generate high-quality images from text prompts using Volcano Engine Seedream models. Supports multiple artistic styles and aspect ratios. Use this skill when...

by volcengine-skills26 installs

Generate videos using Seedance models. Invoke when user wants to create videos from text prompts, images, or reference materials.

by volcengine-skills22 installs

基于火山引擎Kickart服务生成抖店/抖音商品营销短视频,支持用户上传自定义图片/视频素材、素材分析、创意分析、故事板创作、成片生成、抖音发布全流程。当用户发送抖店/抖音商品链接、提及「上传素材」「添加图片」「添加视频」「素材分析」「创意分析」「故事板」「生成短视频」「营销视频」「发布视频」「抖音发布」时触发使用。

by volcengine-skills17 installs

Upload video/audio media to BytePlus VOD (Video on Demand) storage, returning the Vid and playback references; supports both local file upload (ApplyUploadIn...

by volcengine-skills17 installs