ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Label Studio Markdown 标签实战指南:在标注界面渲染富文本 Markdown 内容

Label Studio Markdown 标签实战指南:在标注界面渲染富文本 Markdown 内容 Label Studio Markdown 标签实战指南在标注界面渲染富文本 Markdown 内容【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioMarkdown是 Label Studio 中用于在标注界面展示 Markdown 格式文本的标签。本文从基础用法静态内容、任务数据绑定、自定义样式到参数详解、可见性控制再到react-markdown渲染管线的源码级实现带你完整掌握这一最简洁的辅助文本展示方案可直接用于标注任务说明、分类标准、分析指南等场景。标签定位为什么需要 Markdown 标签在标注任务中标注员往往需要阅读任务说明、分类标准或分析指南而纯文本无法表达层级与强调关系。Label Studio 提供的Markdown标签正是为此设计它可以在标注界面渲染包含标题、加粗、列表、链接等格式的 Markdown 内容是展示辅助文本内容最直接的方式。从源码看该标签适用于Markdown 格式的文本内容其定义位于 标签模型实现并在 标签注册索引 中以markdown名称注册因此可在任何View内部直接使用。用法一展示静态 Markdown 说明在标注界面上显示静态的 Markdown 指令是最常见的使用方式。将 Markdown 文本直接写在Markdown标签内即可View Markdown ## Instructions Please **carefully** read the following text and mark all entities. - Look for **person names** - Look for **organization names** - Look for **locations** Remember to be thorough in your analysis. /Markdown Text nametext value$text / /View注意Markdown 对缩进敏感——代码块、列表等语法会被缩进影响因此官方文档明确建议将 Markdown 内容保持不缩进书写。源码注释中也特别提醒indents mark code blocks, so avoid them缩进会把内容标记为代码块见 Markdown.jsx 示例注释。用法二从任务数据渲染 Markdown数据绑定除了静态文本Markdown标签支持通过value属性绑定任务数据中的字段。此时字段内容必须是合法的 Markdown 字符串并通过$字段名语法引用View Markdown value$markdown_description / Text nametext value$text / /View对应任务数据示例{ markdown_description: ## Analysis Task\n\nPlease analyze the following text for sentiment:\n\n- **Positive** - Shows satisfaction or approval\n- **Negative** - Shows dissatisfaction or criticism\n- **Neutral** - Shows no particular sentiment, text: The product was amazing and I loved it! }数据绑定的底层解析机制value中的数据绑定解析并非简单字符串替换而是由 数据工具函数 中的isDataBound与parseValue完成isDataBound通过正则/\$[\w[\].{}]/i判断value中是否含$field标记若不含则认为内容是独立静态文本isIndependent视图返回true见 Markdown.jsx可支持批量标注模式渲染parseValue会区分整个 value 就是一个字段引用与value 中混有普通文字两种情况前者直接从任务数据对象中取值支持$a.b点号路径后者将文本中的$field占位符逐一替换为对应数据值。标签模型在updateValue动作中调用parseValue(self.value, store?.task?.dataObj ?? {})完成取值并额外做了一步处理裁剪首尾的 CDATA 标记/^\s*!\[CDATA\[|\]\]\s*$/g确保包裹在 CDATA 中的内容也能被正确渲染。用法三自定义样式展示Markdown标签支持style属性可直接传入 CSS 样式字符串来美化展示容器例如为说明面板添加背景、内边距和边框View Markdown value$content stylebackground: #f5f5f5; padding: 15px; border-radius: 8px; border-left: 4px solid #007bff; / /View在源码实现中style字符串会先经过Tree.cssConverter转换为 React 样式对象再应用到包裹div上Markdown.jsx 渲染部分因此所有标准 CSS 属性均可使用。参数参考Markdown标签支持的完整参数如下源自 公共 View 参数文档参数类型说明displayblock|inline显示方式[style]stringCSS 样式字符串[className]string应用的 CSS 类名可与Style标签配合使用[idAttr]string用于 CSS 的唯一 ID 属性[visibleWhen]region-selected|choice-selected|no-region-selected|choice-unselected控制内容可见性可结合下方when*参数进一步收窄条件[whenTagName]string与visibleWhen配合使用按标签名收窄可见性区域场景传对象标签名选项场景传choices标签名[whenLabelValue]string与visibleWhenregion-selected配合使用按标签值收窄可见性多个值用逗号分隔[whenChoiceValue]string与visibleWhenchoice-selected/choice-unselected及whenTagName配合使用两者均必填按选项值收窄可见性多个值用逗号分隔注[ ]方括号表示可选参数。className、idAttr、style等属性在 标签模型定义 中均有对应字段classname、idattr、style渲染时被应用到外层容器div上。按标注状态动态显示说明利用visibleWhen系列参数可以让 Markdown 说明随标注交互状态动态出现或隐藏。例如只有选中某个区域如矩形框时才显示该区域的判定标准说明View Markdown value$tips visibleWhenregion-selected whenTagNamerect whenLabelValueperson / RectangleLabels namerect toNameimage Label valueperson / Label valueorganization / /RectangleLabels /View可见性判定由VisibilityMixin混入实现Markdown.jsx当item.isVisible false时渲染层会把容器display设为none。支持的 Markdown 特性Markdown标签基于标准 Markdown 语法渲染支持标题—#、##、###、####等各级标题粗体与斜体—**bold**与*italic*列表— 有序列表1. item与无序列表- item链接—link text代码— 行内代码code与代码块三个反引号包裹引用— quoted text块引用换行— 双换行产生新段落此外从 渲染组件实现 可以确认还额外支持表格table/thead/tr/th/td 均带边框样式与横向滚动容器、删除线~~text~~、水平分割线---以及行内 HTML通过rehype-raw插件启用见下文。源码级原理渲染管线与样式体系渲染栈react-markdown rehype-rawMarkdown标签的最终渲染由 Markdown.tsx 完成其核心是一条基于react-markdown的渲染管线ReactMarkdown将 Markdown 文本解析为 React 元素树rehypeRawHTML 解析插件允许 Markdown 内嵌的原始 HTML 生效HtxMarkdown渲染时固定传入allowHtml见 Markdown.jsxcomponents映射表为标题、段落、列表、代码、引用、链接、表格、删除线等所有 Markdown 元素注入统一的 Tailwind 样式类保证标注界面视觉风格一致。组件映射表逐项覆盖了h1–h6、p、ul/ol/li、code/pre、blockquote、a、hr、table系列、strong/em、del等元素其中行内代码与块级代码有不同的底色与圆角样式表格被包在overflow-x-auto容器中以适配窄屏。渲染触发与批量模式HtxMarkdown是一个 mobx-react 的observer组件会在标签模型状态变化时自动重渲染。其isIndependent视图决定了内容是否可在批量标注bulk mode下渲染——静态 Markdown 内容不依赖任务数据因此支持批量渲染而绑定$field的内容因缺少任务数据无法在批量模式下显示。单元测试层面react-markdown为 ESM-only 依赖仓库在 react-markdown mock 中提供了透传 mockdiv contenteditable="false">【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表