十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Label Studio TextArea 标签完全指南:从文本标注配置到源码级提交机制

Label Studio TextArea 标签完全指南:从文本标注配置到源码级提交机制 Label Studio TextArea 标签完全指南从文本标注配置到源码级提交机制【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioTextArea是 Label Studio 中用于自由文本输入的标注控制标签适用于转写transcription、改写paraphrasing、字幕/描述captioning等需要标注者自由键入文字的场景可搭配音频、图像、HTML、段落、文本、时间序列、视频等数据对象使用。读完本文你将掌握 TextArea 全部配置参数、四种典型标注配置基础文本输入、OCR 区域转录、去重提交、快捷键提交并从源码层面理解其提交、校验与 region 机制。TextArea 标签概览与适用场景在 Label Studio 的标注配置labeling config中TextArea属于分类型控制标签它不限定标注者从预定义选项中选择而是渲染一个可自由输入的多行/单行文本框。官方文档在 docs/source/tags/textarea.md 中定义其用途为display a text area for user input典型任务包括转写transcription如语音转文本、OCR 图像文字识别改写paraphrasing如对文本片段进行语义改写描述/字幕captioning如图像描述、视频字幕生成。在源码层面该标签注册于 TextArea.jsxRegistry.addTag(textarea, TextAreaModel, HtxTextArea)其模型通过ControlBase、ClassificationBase、RequiredMixin、PerRegionMixin、ReadOnlyControlMixin、AnnotationMixin、VisibilityMixin等混入mixin组合而成其中PerItemMixin仅在功能开关FF_LSDV_4583开启时启用。参数参考表以下参数定义完整收录自 docs/source/includes/tags/textarea.md并在源码 TextArea.jsx 的TagAttrs模型中有对应实现ParamTypeDefaultDescriptionnamestring标识 TextArea 的名称用于关联结果数据toNamestring被该 TextArea 标注的对象标签object tag名称[value]string预填充在渲染出的 TextArea 字段中的默认值可随标注一并提交[placeholder]string显示在 TextArea 字段内部的占位提示文本与value不同不可提交[maxSubmissions]string最大提交次数限制[editable]booleanfalse是否显示一个图标允许标注者在添加文本后对其进行编辑[transcription]booleanfalse当设为true并与editabletrue配合使用时即使文本已添加TextArea UI 仍保持可编辑字段状态[skipDuplicates]booleanfalse设为true时重复值会触发弹窗警告并被阻止。参见 去重示例[displayMode]tag|region-listtagTextArea 的显示模式设为region-list时Regions 面板中每个 region 都会对应一个输入字段。参见 region-list 示例[rows]number1TextArea 输入字段的行数。1行时可按 Enter 提交文本大于1行时点击Add或按 Shift Enter 提交[required]booleanfalse决定 TextArea 内容是否必填[requiredMessage]string校验失败时显示的提示消息[showSubmitButton]boolean控制是否显示或隐藏Add按钮。默认在rows1时隐藏行数大于 1 时显示[perRegion]boolean使用该标签对 region 进行标注而非对整个对象标注[perItem]boolean使用该标签对对象内部的 item 进行标注而非对整个对象标注需要注意源码中的默认值细节TagAttrs模型中rows默认1、editable默认false、skipduplicates默认false、allowsubmit默认true与文档表格完全一致required、requiredmessage则由 Required.js 混入提供。示例基础 TextArea最简单的配置只需要一个name属性即可在标注界面渲染一个文本输入框View TextArea nametext-area/TextArea /View该示例同样出现在 TextArea.jsx 的 JSDoc 中可在 playground 中直接打开实验。提交交互细节源码视角从渲染逻辑看TextArea.jsxrows通过Number.parseInt(item.rows)解析rows 1时渲染 antd 的Input否则渲染TextAreaAdd 按钮的显隐由item.showsubmitbutton ?? rows ! 1决定——即未显式设置showSubmitButton时单行输入框不显示按钮多行输入框显示按钮与文档参数表描述一致多行模式下按下Shift Enter会触发addText提交并清空输入框源码中显式注册了onKeyDown处理器来处理这一快捷提交渲染层还会实时显示字符计数与提交计数submissionsNum / maxSubmissions例如 3 / 5 submissions这些信息对标注者非常有用。底层数据流上每次输入都通过item.setValue(value)写入_value提交时addText会先调用validateText校验再createRegion创建一条TextAreaRegionModel最终通过onChange写回标注结果。示例Region list TextArea 字段OCR 转录当配置了区域标注如矩形框、多边形时displayModeregion-list可以让文本输入字段显示在右侧Regions面板中每个 region 对应一个独立输入框非常适合 OCR 场景——标注者先框出产品/价格区域再在面板中逐区域填写识别文本。View Image nameimage value$ocr/ Labels namelabel toNameimage Label valueProduct background#166a45/ Label valuePrice background#2a1fc7/ /Labels Rectangle namebbox toNameimage strokeWidth3/ TextArea nametranscription toNameimage editabletrue perRegiontrue requiredtrue maxSubmissions1 rows5 placeholderRecognized Text displayModeregion-list/ /View该配置组合了多个关键参数逐一拆解参数作用perRegiontrue让 TextArea 关联到每个 region 而非整个对象实现每框一转录displayModeregion-list输入字段渲染到 Regions 面板中而不是标注主界面editabletrue允许标注者在提交后继续编辑已填写的转录文本requiredtrue转录内容必填未填写时提交校验失败maxSubmissions1每个 region 最多提交 1 条转录rows5输入框为 5 行多行文本通过 Add 按钮或 Shift Enter 提交placeholderRecognized Text显示不可提交的占位提示region-list 模式的源码实现displayMode与perRegion由 PerRegion.js 混入管理displaymode的取值是一个枚举PER_REGION_MODES默认TAG。当设置为region-list时TextArea 主渲染函数直接返回null见 TextArea.jsx转而由每个 region 各自承载输入。其中perRegionVisible()视图PerRegion.js决定输入字段的显隐逻辑若当前没有选中任何 region 则隐藏选中的 region 若不属于该标签toName指向的对象也会隐藏还支持通过whenlabelvalue按标签值过滤显示。校验方面_validatePerRegionPerRegion.js会遍历对象上的全部 region逐个校验对应结果任何一个不合法都会自动选中该 region 并返回校验失败。示例强制唯一值Enforce unique values如果希望同一 TextArea 的多次提交值互不相同例如让标注者为同一音频片段标注不同的音乐风格避免重复分类可以设置skipDuplicatestrue。当标注者尝试输入与已有提交相同的文本时界面会弹出警告并阻止提交。View Audio nameaudio value$audio/ TextArea namegenre toNameaudio skipDuplicatestrue / /View去重的源码验证去重逻辑在 TextArea.jsx 的validateText中实现validateText(text) { if (self.skipduplicates self.hasResult(text)) { self.uniqueModal(); return false; } return true; }hasResult(text)TextArea.jsx将文本转为小写后与已有结果逐一比对大小写不敏感命中重复时调用uniqueModal()弹出警告信息 There is already an entry with that text. Please enter unique text.TextArea.jsx校验不通过时addText与addTextToResult都会提前返回不会产生新的 region 或结果TextArea.jsx。同样TextAreaRegion.setValue在写入新值前也会调用parent.validateText(val)做去重校验见 TextAreaRegion.jsx因此在已提交文本上编辑时同样受到唯一性约束。示例使用 Enter 快捷键加速提交如果希望最大化标注效率、减少鼠标点击可以按如下规则设计提交方式当rows1时直接按Enter即可提交文本当rows大于 1 时会出现Add按钮点击按钮或按Shift Enter均可提交注意即使不点击 Add / 不按 Enter / Shift Enter直接点击Submit保存标注时输入框中的文本也会一并保存。只有在希望同一个 TextArea 产生多条提交时才需要先 Add 再继续输入下一条。View Header valuePress Enter to submit/ Text nametext1 valueExample text 1 / TextArea nametext-area-1 toNametext1 rows1 / Header valuePress Shift Enter to submit/ Text nametext2 valueExample text 2 / TextArea nametext-area-2 toNametext2 rows3 / /View提交机制的源码印证未 Add 的文本在 Submit 时也会保存这一行为由beforeSend保证TextArea.jsx当注解提交前若输入框中仍有未提交文本且showSubmit为真会先自动addText再清空输入框。submitChanges同样调用beforeSend确保切换 region 时未提交的文本不会丢失。另一个贴心的细节整体注解annotation提交还可以用Control EnterWindows或Command EnterMac快捷键完成如需自定义热键可参考 用户账户与自定义热键文档 中的hotkeys配置。进阶多行输入、必填校验与状态展示必填校验与提示requiredtrue时若输入为空提交前校验会失败并弹出提示。默认提示文案为Input for the textarea ${self.name} is required.也可通过requiredMessage参数自定义TextArea.jsx。校验入口定义在 Required.js对所有分类型控制标签通用required默认false。已提交文本的展示与编辑每次提交都会生成一条TextAreaRegionModel注册于 TextAreaRegion.jsx并在输入框下方以条目形式渲染。这些条目受editable与transcription两个参数控制editabletrue显示编辑图标允许标注者修改已提交文本transcriptiontrue需配合editabletrue文本添加后输入框依然保持可编辑状态适合连续转写工作流见 TextAreaRegion.jsx 中editable || parent.transcription的条件分支每个条目可通过删除图标移除deleteRegion→parent.remove并支持maxSubmissions限制总提交数。对应的单元测试覆盖了这些行为例如 TextAreaRegion.test.jsx 中验证了setValue在值相同或校验不通过时不更新、deleteRegion正确调用父级移除逻辑等可作为深入理解该标签行为的参考。小结TextArea是 Label Studio 中灵活度最高的文本输入标签通过rows、maxSubmissions、editable、transcription的组合可以适配从单行快速分类到多行多轮转录的各类任务perRegion与displayModeregion-list让它能与矩形框、多边形等区域标注无缝配合完成 OCR 工作流skipDuplicates与required则从数据质量角度提供了内建约束。结合 TextArea.jsx 中validateText、beforeSend、perRegionVisible等实现可以进一步理解每个参数背后的提交与校验时机从而设计出高效、可验证的文本标注方案。【免费下载链接】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),仅供参考
返回列表