资讯动态

Label Studio Enterprise 2.20.0 发版解析:Taxonomy 文本标注、音频快捷键与 Django 5 升级实践

发布时间:2026/9/12 12:40:14 来源:尧图企业网站定制
Label Studio Enterprise 2.20.0 发版解析Taxonomy 文本标注、音频快捷键与 Django 5 升级实践【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioLabel Studio Enterprise 2.20.02025 年 1 月 28 日发布配套 Helm Chart 1.9.0是一次聚焦标注效率与底层安全的版本迭代它让Taxonomy标签首次支持在文本区域上直接做 NER 式标注为音频暂停/播放新增了ctrl/commandp快捷键并随 Django 5 升级将 PostgreSQL 的最低版本提升至 13。本文以官方发版说明为骨架结合当前仓库中的标签文档、前端实现与 Django 设置源码逐项拆解这些增强、安全加固、破坏性变更与 Bug 修复并给出可落地的标注配置与部署建议。版本总览项目内容版本号Label Studio Enterprise 2.20.0发布日期2025 年 1 月 28 日配套 Helm Chart1.9.0发布主题Taxonomy 文本标注、全新音频快捷键、性能优化、Bug 修复破坏性变更升级至 Django 5PostgreSQL 要求 13增强一Taxonomy 作为文本标注工具labelingtrue在 2.20.0 之前Taxonomy标签只能用于整段/整对象的层次化分类——标注者从一棵层级树中选择一个或多个叶子节点作为该对象的分类结果。本次更新为 Taxonomy 标签引入了新的labeling参数当设置为true时你可以把 Taxonomy 中定义的类别直接应用到文本中的具体区域region使其具备 NER命名实体识别式标注能力例如高亮Virginia并标注为Place、高亮Opossums并标注为Mammal。前端源码中的参数定义该参数在编辑器前端的 Taxonomy.jsx 中有明确定义const TagAttrs types.model({ toname: types.maybeNull(types.string), labeling: types.optional(types.boolean, false), leafsonly: types.optional(types.boolean, false), showfullpath: types.optional(types.boolean, false), ... });labeling类型为布尔值默认false与文档中默认不开启的行为一致同一份源码中的 JSDoc 注释也明确标注Use taxonomy to label regions in text. Only supported withTextandHyperTextobject tags.——labeling仅在与Text或HyperText对象标签搭配时有效。完整可复制的标注配置以下配置来自 docs/source/tags/taxonomy.md 与 docs/source/templates/taxonomy.md可直接用于文本区域标注场景View Text nametext value$text/ Taxonomy nametaxonomy toNametext labelingtrue Choice valueAnimal Choice valueMammal / Choice valueReptile / Choice valueBird / /Choice Choice valuePlace / Choice valueOrganization / /Taxonomy /View要点说明与普通分类用法相同Taxonomy必须声明name与toName其中toName指向对象标签这里是text类别通过嵌套的Choice定义层级标注者既可选择叶子节点也可选择父节点类别开启labelingtrue后标注者在文本中选中一段文字即可弹出分类树并施加标注区域会以高亮 编号如1:Place、2:Mammal的形式呈现提示可在Choice上使用color参数为不同类别着色便于区分同一文本中的多种标注见 docs/source/templates/taxonomy.md 中的 Tip。发版说明中引用的官方截图也保存在仓库中docs/themes/v2/source/images/releases/2-20-taxonomy.png展示的正是上述在文本段落上高亮并施加 Taxonomy 类别的界面。补充Taxonomy 常用参数速查围绕 2.20.0 的labeling新参数Taxonomy还支持以下常用参数来自 docs/source/includes/tags/taxonomy.md 与前端源码参数类型默认值说明namestring—元素名称必填toNamestring—要分类的目标对象标签名称必填apiUrlstring—Beta从远程 JSON 文件或 API 加载分类树leafsOnlybooleanfalse是否只允许选择叶子节点showFullPathbooleanfalse是否显示所选项目的完整路径pathSeparatorstring / 完整路径的分隔符maxUsagesnumber—每个任务/区域内某类别可被选择的最大次数maxWidth/minWidthstring—下拉面板宽度如500pxrequiredbooleanfalse是否必须至少选择一个选项requiredMessagestring—校验失败时的提示信息placeholderstring—输入框占位提示文本perRegionboolean—针对具体区域而非整个对象分类perItemboolean—针对对象内部的具体条目分类labelingboolean—2.20.0 新增对文本/超文本区域做标注legacyboolean—已弃用启用旧版 Taxonomy UIallowAddLabelsbooleanfalse新版 UI 中允许标注者新增自定义标签其中labeling参数在前端实现web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsx与参数文档docs/source/includes/tags/taxonomy.md中均有体现二者对仅支持Text与HyperText的限制保持一致。增强二音频标注新快捷键2.20.0 为音频暂停/播放新增了快捷键Windows / LinuxctrlpmacOScommandp在此之前音频播放/暂停已有空格键space快捷键。新增组合键的价值在于当标注者在音频任务中同时填写文本框如转写内容时空格键会被文本输入框吞掉无法触发播放控制此时ctrl/commandp提供了一条不干扰输入的播放控制路径。增强三视频帧分类模板内置视频帧分类Video Frame Classification模板此前只存在于文档中2.20.0 起直接在 Label Studio 应用内可用。该模板用于对视频中的每一帧单独打标适合检测动作、状态或随时间变化的事件而不是对整段视频做单一分类。其核心配置见 docs/source/templates/video_frame_classification.mdView TimelineLabels namevideoLabels toNamevideo Label valueMovement background#c813ec/ Label valueStill background#1d81cd/ Label valueSlow Motion background#54d651/ /TimelineLabels Video namevideo value$video frameRate25.0 timelineHeight120 / /View关键参数说明Video的frameRate必须与视频实际帧率一致若视频存在缺陷或可变帧率VFR可能导致帧与时间轴错位建议先转码为恒定帧率再上传timelineHeight控制时间轴高度TimelineLabels内的Label定义可施加到具体帧上的标签。增强四前端性能优化2.20.0 优化了前端发出的 API 调用**成员管理页members management**与Data Manager 用户列表减少了冗余请求用户量较大时列表加载更流畅Projects 页面优化加载时间。这类优化属于前端行为层面的改进不影响标注配置或后端 API 契约。安全加固2.20.0 包含两项安全相关变更升级 pyarrow修复旧版本包中存在的安全漏洞CSRF Cookie 默认设置加固更新了 CSRF Cookie 的默认配置并新增环境变量以控制 Cookie 有效期。关于第 2 点的实现可参见 label_studio/core/settings/base.py# Sessions and CSRF SESSION_COOKIE_SECURE bool(int(get_env(SESSION_COOKIE_SECURE, False))) SESSION_COOKIE_SAMESITE get_env(SESSION_COOKIE_SAMESITE, Lax) CSRF_COOKIE_SECURE bool(int(get_env(CSRF_COOKIE_SECURE, SESSION_COOKIE_SECURE))) CSRF_COOKIE_HTTPONLY bool(int(get_env(CSRF_COOKIE_HTTPONLY, SESSION_COOKIE_SECURE))) CSRF_COOKIE_SAMESITE get_env(CSRF_COOKIE_SAMESITE, Lax) # default value is from django docs: https://docs.djangoproject.com/en/5.1/ref/settings/#csrf-cookie-age # approximately 1 year CSRF_COOKIE_AGE int(get_env(CSRF_COOKIE_AGE, 31449600))由此可知本次加固涉及的可用环境变量包括环境变量默认值作用CSRF_COOKIE_SECURE跟随SESSION_COOKIE_SECURE默认False是否仅通过 HTTPS 传输 CSRF CookieCSRF_COOKIE_HTTPONLY跟随SESSION_COOKIE_SECURE是否禁止 JavaScript 读取 CSRF CookieCSRF_COOKIE_SAMESITELaxSameSite 策略可选Lax/Strict/NoneCSRF_COOKIE_AGE31449600约 1 年Django 5.1 文档推荐值CSRF Cookie 有效期秒生产部署建议在启用 HTTPS 的环境中将CSRF_COOKIE_SECURE显式设为true并根据安全合规要求通过CSRF_COOKIE_AGE收紧 Cookie 有效期。破坏性变更Django 5 与 PostgreSQL 132.20.0 将底层 Django 框架升级到Django 5由此带来一个必须提前评估的运维前提Label Studio Enterprise 2.20.0 起要求 PostgreSQL 13。在升级前请确认数据库版本是否 ≥ 13SELECT version();可查看 PostgreSQL 版本若仍在运行 PostgreSQL 12 或更早版本需先完成数据库升级升级过程建议先在预发布环境验证再对生产实例执行迁移。作为佐证当前仓库主分支的依赖清单pyproject.toml已锁定 Django 5.2 系列Django (5.2.16,5.3.0)并搭配djangorestframework 3.17.2、django-cors-headers 4.7.0等 Django 5 兼容生态说明 Django 5 已成为项目当前的技术基线。Bug 修复清单2.20.0 修复的问题覆盖 UI、API、任务统计与基础设施四个层面侧边菜单版本号显示异常Label Studio 版本号在侧边菜单中的格式不正确已修复contextlog 缺少content_typecontextlog未上报content_type字段的问题已修复高亮时重叠关系relations显示异常标注界面上高亮区域时重叠的 relation 显示异常已修复API 批量导入任务 ID 重复通过 API 大批量导入任务时出现任务 ID 重复已修复登录后跳转页面错误用户登录后未跳转到正确页面已修复无法编辑标注框bbox区域的元信息用户无法修改之前为 bounding box 区域添加的元信息已修复Poetry / Poetry-core 2 兼容问题修复了多个因 Poetry/Poetry-core 2 发布导致的构建/依赖问题django-rq 管理页面不可访问修复了 django-rq admin 页面无法访问的问题Data Manager / 编辑器动态加载竞态条件修复了动态加载 Data Manager 或编辑器时可能出现的竞态条件race condition该问题曾导致二者均无法加载Skip Queue 设置为 Ignore Skipped 时跳过任务未计入完成当项目 Skip Queue 设置为Ignore Skipped时被跳过的任务未被计算为已完成已修复。Skip Queue 修复的源码佐证最后一项修复可以在当前仓库的任务统计逻辑中找到对应实现。项目级配置在 label_studio/projects/models.py 中定义IGNORE_SKIPPED IGNORE_SKIPPED, Ignore skipped任务完成度的聚合计算位于 label_studio/tasks/models.pywith transaction.atomic(): use_overlap project._can_use_overlap() if use_overlap: # following definition of completed_annotations above, count cancelled annotations # as completed if project is in IGNORE_SKIPPED mode completed_annotations_f_expr F(total_annotations) if project.skip_queue project.SkipQueue.IGNORE_SKIPPED: completed_annotations_f_expr F(cancelled_annotations) finished_q Q(GreaterThanOrEqual(completed_annotations_f_expr, F(overlap))) finished_tasks tasks.filter(finished_q) tasks.update(is_labeledQ(id__infinished_tasks_ids))注释与代码均明确当skip_queue IGNORE_SKIPPED时被取消跳过的标注计入completed_annotations表达式从而让跳过任务被正确算作已完成——这正是发版说明中所描述的修复行为。相关行为也有测试覆盖见 label_studio/tests/next_task_skip_queue.tavern.yml测试名skip_queue_ignore_skipped配置skip_queue: IGNORE_SKIPPED。升级建议与验证清单综合以上变更从 2.20.0 之前版本升级时建议按以下顺序检查数据库确认 PostgreSQL ≥ 13硬性要求必要时先升级数据库实例依赖构建若使用 Poetry 管理依赖确认 Poetry/Poetry-core 版本与 2.20.0 兼容本次修复了 Poetry-core 2 的兼容问题安全配置按需设置CSRF_COOKIE_SECURE、CSRF_COOKIE_AGE等环境变量新功能验证在测试项目中尝试labelingtrue的 Taxonomy 文本标注、ctrl/commandp音频快捷键以及视频帧分类模板任务统计回归为设置了Ignore Skipped的项目导入数据并跳过部分任务确认其被正确计为已完成批量导入回归通过 API 批量导入大量任务确认任务 ID 无重复。相关资源Taxonomy 标签完整参数文档docs/source/tags/taxonomy.md、docs/source/includes/tags/taxonomy.mdTaxonomy 模板与外部分类树apiUrl、JSON 扁平文件、API taxonomy 规范docs/source/templates/taxonomy.md视频帧分类模板docs/source/templates/video_frame_classification.mdTaxonomy 前端实现web/libs/editor/src/tags/control/Taxonomy/Taxonomy.jsxCSRF Cookie 设置源码label_studio/core/settings/base.pySkip Queue 状态定义与任务统计实现label_studio/projects/models.py、label_studio/tasks/models.py依赖版本Django 5.2 系列pyproject.toml【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价