节点手册:文档转文本、OCR 与语音识别

适用版本:ChengOS v0.1.0+ | 最后核对:2026-08-13 | 来源:crates/cheng-nodes/src/nodes/builtin/io

这一组的作用是把非文本媒体转成模型能读的文本。按来源类型选择:文档用 io/document_to_text, 图片用 io/ocr(它的 mode 是速度与准确度的取舍,从只抽取文本层一直到启用完整引擎),音频用 io/speech_to_text。 视频需要两步 —— 先 io/video_extract_audio,再接语音转写;如果信息是画面而不是语音,则用 io/video_extract_frames。 它们都接收工件端口,所以直接把 io/file_upload 连过来即可,不要用内联内容传递。

文档转文本 — io/document_to_text

解析 PDF、Word、Excel、TXT 等文档为文本。完整文本持久化为工件,仅返回有界预览。

输入

字段 类型 必填 默认值 说明
artifact object (端口) null 文档工件引用(首选)。从 io/file_upload.document_artifact 连接。 连接端口,不是表单字段。
file_path string null 本地文件路径(旧版;与工件互斥)
base64_content string null 已废弃的内联 Base64 内容;请改用工件引用. 控件:textarea
filename string null 用于推断格式的文件名(使用 base64_content 时必填)
max_chars integer 0 提取字符的处理上限(0 = 无限制)。不是 LLM 预览预算。 控件:number
preview_bytes integer 0 面向 LLM 的有界 UTF-8 预览预算(默认 2 KiB)。完整文本仍持久化为工件。 控件:number
max_source_bytes integer 0 解析前读取的最大源字节数(0 = 默认 25 MiB). 控件:number

输出

字段 类型 说明
text_artifact object (端口) 持有完整提取文本的工件. 连接端口,不是表单字段。
preview string 提取文本的有界 UTF-8 预览
source_artifact object 来源文档工件(如有)
char_count integer 提取的字符数
format string 检测到的文件格式(pdf / docx / xlsx / txt 等)
truncated boolean 预览是否被截断(vs 完整文本)
warning string 非致命告警(如工件持久化失败)
text string 已废弃;等于有界预览

OCR 文字识别 — io/ocr

使用本地 OCR 从 PDF,图片和文档中提取文本.将完整文本,边界框区域,布局和结构化结果持久化为工件,仅返回有界预览和元数据.

输入

字段 类型 必填 默认值 说明
artifact object (端口) null 图片/PDF 工件引用 (首选).从 io/file_upload.image_artifact 或 document_artifact 连接. 连接端口,不是表单字段。
files_json array<object> (端口) null 已废弃的浏览器上传载荷; 请改用工件输入. 连接端口,不是表单字段。 控件:file-upload
file_path string null 已废弃的服务器本地绝对文件路径; 请改用工件输入
base64_content string null 已废弃的内联 Base64 内容; 请改用工件输入. 控件:textarea
filename string null 用于格式检测的文件名 (使用 base64_content 时)
mime_type string null MIME 类型覆盖 (如未提供则从文件名自动检测)
mode enum auto 处理模式: 自动,仅电子 PDF,轻量 (Tesseract),标准. 控件:select. 取值:auto (Automatically select the best engine based on input and hardware.), text_pdf_only (Only extract text from electronic PDFs; fail for scanned/image inputs.), light (Use lightweight OCR (Tesseract) even when heavier engines are available.), standard (Use the highest-quality engine available (PaddleOCR ONNX when enabled).)
engine enum tesseract 图片/扫描 PDF 输入的 OCR 引擎: 默认 Tesseract, 或安装 PaddleOCR ONNX. 控件:select. 取值:tesseract (Use the Tesseract CLI engine.), paddle_onnx (Use PaddleOCR via ONNX Runtime.)
language enum auto 语言提示: 自动,英语,简体中文,中英混合. 控件:select. 取值:auto (Auto-detect language.), eng (English only.), chi_sim (Simplified Chinese only.), chi_sim_eng (Simplified Chinese + English (mixed).)
max_chars integer 0 提取字符的处理上限 (0 = 无限制).这不是 LLM 预览预算. 控件:number
preview_bytes integer 0 面向 LLM 的有界 UTF-8 预览预算 (默认 2 KiB).完整文本仍持久化为工件. 控件:number
min_confidence number 0.0 最小 OCR 置信度 (0.0-1.0), 0 表示跳过置信度检查. 控件:number
rules_json string null 用于从 OCR 文本提取结构化字段的可选 JSON 规则. 控件:textarea
max_pages integer 0 扫描 PDF 渲染的最大页数 (0 = 默认 5, 最大 50). 控件:number
render_dpi integer 0 将扫描 PDF 页面渲染为图片的 DPI (0 = 默认 150). 控件:number

输出

字段 类型 说明
preview string 识别文本的有界 UTF-8 预览
text_artifact object (端口) 持有完整识别文本的工件. 连接端口,不是表单字段。
regions_artifact object (端口) 持有带边界框文本区域 (JSON) 的工件. 连接端口,不是表单字段。
layout_artifact object (端口) 持有按阅读顺序空间重构文本的工件. 连接端口,不是表单字段。
structured_artifact object (端口) 结构化字段 JSON 过大无法内联时持有它的工件. 连接端口,不是表单字段。
structured_json string 使用规则提取的小型结构化字段 (内联保留; 过大时转存到 structured_artifact)
char_count integer 提取的字符数
format string 检测到的输入格式 (pdf/image/text 等)
engine string 使用的 OCR 引擎 (none/pdf_text/tesseract/paddle_onnx)
confidence number OCR 置信度分数 (0.0-1.0)
status string 结果状态: success/partial/failed/unsupported
warning string 关于质量,完整性或工件持久化的警告消息
source_artifact object 来源图片/文档工件 (如有)
text string 已废弃; 等于有界预览.完整文本请使用 text_artifact.

语音转文本 — io/speech_to_text

使用 OpenAI Whisper API 将音频文件转录为文本;完整转录持久化为文本工件,节点只返回有界预览

输入

字段 类型 必填 默认值 说明
llm_config object (端口) LLM 配置(连接 LLM 配置节点获取 API Key、端点和模型). 连接端口,不是表单字段。 控件:text
artifact object (端口) null 音频工件引用(首选;连接 io/file_upload.audio_artifact 或 io/video_extract_audio.audio_artifact). 连接端口,不是表单字段。
artifact_uri string null artifact://<id> URI(与 artifact 二选一)
file_path string null 已弃用:服务器本地音频文件绝对路径
base64_content string null 已弃用:Base64 编码音频;优先使用工件引用. 控件:textarea
filename string null 文件名,使用 base64_content 时必填(如 audio.mp3)
language string null 音频语言(ISO-639-1,如 zh,en),留空自动检测
prompt string null 提示词(可选),帮助模型识别特定术语或语音风格. 控件:textarea
response_format enum text 输出格式:text(纯文本)/ json / verbose_json / srt / vtt. 控件:select. 取值:text (仅返回纯文本转录), json (返回 JSON(含 segments、duration 等)), verbosejson (返回带时间戳的详细 JSON), srt (SubRip 字幕格式), vtt (WebVTT 字幕格式)
temperature number 0.0 采样温度 0.0~1.0,0 表示最确定性的输出
preview_bytes integer 0 LLM 预览字节预算(默认 2 KiB);完整转录仍持久化为工件. 控件:number

输出

字段 类型 说明
preview string 有界 UTF-8 预览,完整转录见 transcript_artifact
transcript_artifact object (端口) provider 原始响应正文的工件引用(JSON 模式包含 segments/timestamps/language/duration 等元数据). 连接端口,不是表单字段。
detected_language string 检测到的语言代码(仅 verbose_json 格式下可用)
duration_seconds number 音频时长(秒)(仅 verbose_json 格式下可用)
char_count integer 转录文本的字符数
response_format string provider 使用的响应格式
source_artifact object 来源音频工件引用(若适用)
warning string 非致命告警(如工件持久化失败)
text string 已废弃;等于有界预览

视频提取音频 — io/video_extract_audio

从视频文件提取音轨为工作区音频工件(通过 ffmpeg)。连接到语音转文本节点进行转录。系统需安装 ffmpeg。

输入

字段 类型 必填 默认值 说明
artifact object (端口) null 视频工件引用(首选)。从 io/file_upload.video_artifact 连接。 连接端口,不是表单字段。
artifact_uri string null artifact://<id> URI
file_path string null 视频文件的本地绝对路径(旧版;与工件互斥)
output_format enum wav 输出音频格式:wav(推荐)/ mp3 / ogg / flac. 控件:select. 取值:wav (WAV(无损,与 Whisper 兼容性最好)), mp3 (MP3(有损压缩,体积小)), ogg (OGG Vorbis), flac (FLAC(无损压缩))
sample_rate integer 16000 采样率(Hz),Whisper 推荐 16000. 控件:number
channels integer 1 音频声道:1=单声道(推荐),2=立体声. 控件:number
start_seconds integer 0 从第几秒开始提取(0 表示从头开始). 控件:number
duration_seconds integer 0 提取的音频时长(秒),0 表示提取到结尾. 控件:number

输出

字段 类型 说明
audio_artifact object (端口) 提取音频的工件引用,可直接连接 io/speech_to_text.artifact. 连接端口,不是表单字段。
file_size integer 提取音频字节数
format string 输出音频格式(wav / mp3 / ogg / flac)
ffmpeg_output string ffmpeg 标准错误(带 8 KiB 上限),用于调试
ffmpeg_output_truncated boolean ffmpeg stderr 是否被截断以适配诊断预算
source_artifact object 来源视频工件引用(若适用)

视频提取帧 — io/video_extract_frames

按时间间隔从视频中提取关键帧。每帧持久化为 JPEG 工件;节点输出保持紧凑(仅元数据 + 工件引用)。下游多模态消费者在配置预算内按需物化字节。

输入

字段 类型 必填 默认值 说明
artifact object (端口) null 视频工件引用(首选)。从 io/file_upload.video_artifact 连接。 连接端口,不是表单字段。
artifact_uri string null artifact://<id> URI
file_path string null 视频文件的本地绝对路径(旧版;与工件互斥)
interval_seconds integer 5 每隔 N 秒提取一帧,默认 5. 控件:number
max_frames integer 20 最大提取帧数,默认 20. 控件:number
width integer 768 输出图片宽度(像素),0 保持原始宽度. 控件:number
height integer 0 输出图片高度(像素),0 按比例缩放. 控件:number
jpeg_quality integer 85 JPEG 压缩质量 1-95,默认 85. 控件:number
start_seconds integer 0 从第几秒开始提取(0 表示从头开始). 控件:number
end_seconds integer 0 到第几秒停止提取(0 表示到视频末尾). 控件:number

输出

字段 类型 说明
frames array<object> 提取的帧列表,每帧包含时间戳和 JPEG 工件引用(无内联字节)
frames_manifest object (端口) 所有提取帧清单的工件引用(JSON). 连接端口,不是表单字段。
first_frame_artifact object (端口) 第一帧工件引用(便捷端口,供下游快速接入). 连接端口,不是表单字段。
frame_count integer 实际提取的帧数
video_duration_seconds number 视频总时长(秒)
source_artifact object 来源视频工件引用(若适用)
status string 结果状态:success(全部成功)/ partial(部分成功)/ failed(全部失败)
warning string 非致命告警(带总预算)
warning_truncated boolean 警告是否被截断以适配诊断预算

下一步

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容