Dataset Tools for Metadata & Captioning

详情

模型描述

数据集工具:AI 元数据查看器

依赖审查 CodeQL 构建状态 GitHub Discord Twitch 在 Ko-fi 上支持我们


Dataset Tools 是一款用于浏览和管理 AI 图像数据集的桌面应用程序,支持全面的元数据提取。无论您是整理来自 A1111、ComfyUI、Civitai 或其他工具的生成结果,还是仅仅好奇某张酷炫图像的生成参数是什么,Dataset Tools 都能为您解决。

该工具使用 Python 和 PyQt6 构建,提供直观的界面,用于查看嵌入的生成参数、ComfyUI 工作流、模型元数据,甚至非 AI 图像的相机 EXIF 数据。

面向未来:我们正在考虑使用 Electron 重新开发前端界面。如果您有任何担忧、建议或想法,请随时加入我们的 Discord、提交 issue 或使用 GitHub 讨论区。我们将始终为任何 PyQt6 分支提供错误修复和问题支持。我们理解用户并不总是喜欢剧烈的变更,因此我们希望未来过渡尽可能平滑。

社区驱动开发:本项目灵感来源于 stable-diffusion-prompt-reader,并依赖社区贡献。发现错误?有无法解析的工作流?想为新工具添加支持?我们欢迎分支、修复和合并请求! 这是一个由社区构建、为社区服务的工具。


功能

  • 轻量且快速:专为快速加载和高效元数据显示设计,内置智能缓存机制。

  • 跨平台:使用 Python 和 PyQt6 构建(兼容 Windows、macOS、Linux)。

  • 灵活的视图模式

    • 缩略图网格视图:通过缩略图预览直观浏览图像。
    • 文件树视图:通过可展开的树状结构导航文件夹层级。
    • 可调整窗口大小:自定义窗口尺寸,所有布局均动态适配。
  • 全面的元数据查看

    • 清晰显示提示信息(正面、负面、SDXL 专用)。
    • 展示来自多种 AI 工具的详细生成参数。
    • 元数据编辑:直接在应用中修改并保存图像元数据。
    • 非 AI 图像:查看来自相机和软件的 EXIF/XMP 数据(隐私提示:我们不会提取 GPS 坐标——没人需要知道您在 macOS 上的蓝牙垃圾信息 😄)。
  • 直观的文件处理

    • 拖放支持:轻松加载单个图像文件或整个文件夹,拖入的文件会自动选中。
    • 文件夹浏览与文件列表导航。
  • 图像预览:清晰、可缩放的选定图像预览。

  • 复制元数据:一键将解析的元数据复制到剪贴板。

  • 可主题化界面:提供 40 多种主题的广泛主题浏览器,涵盖专业风格到“只有妈妈能欣赏的颜色”。

  • 高级元数据引擎

    • 完全重建的解析系统:全新 MetadataEngine,支持优先级检测、强大的 Unicode 处理和全面的格式支持。
    • 增强的 ComfyUI 支持:高级工作流遍历、节点连接分析,支持现代自定义节点。
    • CivitAI 集成:支持双重元数据格式,包含 URN 资源提取和 Civitai API 集成(需 API 密钥以获取增强资源数据)。
    • 坚如磐石的 Unicode 处理:通过完备的回退链和鲁棒编码检测消除乱码问题。
    • 智能缓存:智能元数据缓存减少冗余解析,提升浏览速度。
    • 智能回退系统:当专业解析器无法处理文件时,系统会优雅回退至内置解析器,确保最大程度兼容性。
    • 25+ 专用解析器:为多种 AI 工具与平台提供专用解析器,持续扩展中。
    • 模型文件支持:增强元数据查看功能(Safetensors 和 GGUF 支持正在开发中!)。
  • 可配置日志:控制应用日志详细程度以辅助调试(参见 调试模式)。

已知问题

UI 局限性(v0.x)

  • PyQt6 布局问题:当前 PyQt6 UI 在不同屏幕分辨率下存在视口缩放和按钮居中方面的已知限制。虽然功能正常,但在调整窗口大小或使用非标准显示配置(4K、5K Retina 等)时,部分布局元素可能显得不一致。

  • Material 主题兼容性:集成的 qt-material 主题虽视觉美观,但与所有 PyQt6/Qt6 元素并非 100% 兼容,可能存在轻微视觉不一致。

  • 未来 UI 方向:我们正积极研究在 v1.0 中迁移到 Electron,以解决上述 UI 限制,提供更好的主题灵活性、跨平台一致性以及更简易的无头/CLI 集成。Python 解析核心将保持不变——仅重写 UI 层。此方案仍在考虑中。如果您对 Chromium/Electron(隐私、资源消耗等)有顾虑,或有其他建议,请加入 IssueDiscord 讨论。

解析器状态

  • 高级解析器:高级解析已完成约 75%。我们持续修复边缘情况并提升提取精度。目前我们正遇到难以解析大量 T5 风格模型在 ComfyUI 中的工作流问题。如果您或您认识的人正在使用 ComfyUI,并能提供关于工作流或当前使用的节点信息,我们将不胜感激。

  • Draw Things:XMP 提取器可能可用,但由于对 DrawThings 数据有限,且原始内置代码目前失效,我们尚不确定其实际工作状态。

注意:这是活跃开发软件(v0.x)。我们仍在修复错误和优化功能。可能会有粗糙之处,但核心解析稳定可靠!

支持的格式

Dataset-Tools 旨在读取多种来源的元数据。当前支持包括:

AI 图像元数据:

  • AI 图像生成工具:

    • Automatic1111 WebUI / Forge:PNG(参数块)、JPEG/WEBP(UserComment EXIF)。

    • ComfyUI:(提取并非 100% 完美——总有人创建出破坏解析的工作流!但我们始终致力于支持最新自定义节点。)

      • 标准工作流(PNG 的 "prompt"/"workflow" 块)
      • FLUX 工作流(UNETLoader、ModelSamplingFlux、FluxGuidance)
      • SD3、SDXL、SD1.5 工作流
      • Efficiency Nodes(Efficient Loader、KSampler Efficient)
      • DynamicPrompts(带通配符的批量生成)
      • QuadMoon 自定义节点(感谢 Joel Traugdor 让应用崩溃,同时也感谢您监督代码!)
      • HiDream 工作流
      • ComfyRoll 生态系统
      • Griptape 工作流
      • PixArt/T5 基础模型
      • AuraFlow、Lumina、Kolors
      • 高级采样器(SamplerCustomAdvanced、BasicGuider)
      • 文本组合器与提示操作节点
      • 以及其他众多自定义节点生态系统!
    • CivitAI 图像:

      • FLUX 生成图像(A1111 和 ComfyUI 格式)
      • A1111 风格生成
      • 从 Civitai 导出的 ComfyUI 工作流
      • LoRA 训练器输出
      • 通过 Civitai API 增强:URN 提取和资源查询(需在设置中提供 API 密钥)
    • InvokeAI:PNG/JPEG 元数据提取

    • Draw Things:XMP 元数据支持(macOS/iOS)

    • SwarmUI / StableSwarmUI:PNG/JPEG 参数提取

    • Fooocus / RuinedFooocus:Comment 和 UserComment 元数据

    • Easy Diffusion:嵌入式 JSON 元数据

    • Mochi Diffusion:macOS 特定格式支持

    • NovelAI:PNG(旧版 "Software" 标签、"Comment" JSON、Stealth LSB Alpha 通道)

    • Midjourney:Discord 时代的元数据格式

非 AI 图像:

  • 相机/照片元数据:来自相机和图像编辑软件的 EXIF、IPTC、XMP 数据
  • 隐私提示:我们刻意不提取 GPS 坐标——您的位置数据保持私密!(这也是因为 macOS 上 PyQt6 需要蓝牙权限)

模型文件元数据(头部信息):

  • .safetensors - 仅限 LoRA(及相关类型)
  • .gguf(未知)

其他文件类型:

  • .txt:显示内容。
  • .json:显示内容。

注意:非图像文件在网格视图中尚不显示缩略图——我们正在为更好的文件类型可视化添加 SVG 图标!

依赖项

Dataset-Tools 依赖多个优秀的开源库:

核心依赖:

  • PyQt6 - GUI 框架(跨平台桌面界面)
  • Pillow (PIL) - 图像处理与元数据提取
  • pyexiv2 - 高级 EXIF/IPTC/XMP 元数据读取(增强集成 pypng)
  • pypng - 用于大型 ComfyUI 工作流的 PNG 块读取
  • piexif - 额外的 EXIF 操作
  • pydantic - 数据验证与设置管理
  • rich - 美观的终端输出与日志系统
  • toml - 配置文件解析
  • requests - 用于 Civitai API 集成的 HTTP 请求
  • cryptography - 用于 CivitaiAPI 密钥的 Fernet 加密
  • NumPy - 增强型工作流 NumPy 系统
  • defusedxml - 安全的元数据提取
  • jsonpath-ng - 支持 JSON Path 的 ComfyUI 工作流

所有依赖项均通过 pip 自动安装。

安装

安装简单且跨平台,目前没有可执行文件,因为这类文件在开发者无法确定其工作原理时可能在未来引发问题。目前我们仍处于密集开发阶段,发布可执行文件可能还需数月甚至近一年时间。然而,将软件推送到 PYPI 以外的包管理系统完全在计划中。接下来我们将优先支持 Homebrew,以及 Windows 和 Linux 的兼容包管理器!

🚀 快速安装(推荐)

一条命令即可完成:

pip install kn-dataset-tools
dataset-tools

要求:Python 3.10 或更高版本

搞定!工具将启动 GUI 界面,用于查看 AI 元数据。


📦 从源码安装

如需最新开发版本:

git clone https://github.com/Ktiseos-Nyx/Dataset-Tools.git
cd Dataset-Tools
pip install .
dataset-tools

🔧 高级安装(可选)

使用虚拟环境:

# 创建虚拟环境
python -m venv dataset-tools-env

# 激活它
# Windows: dataset-tools-env\Scripts\activate
# macOS/Linux: source dataset-tools-env/bin/activate

# 安装
pip install kn-dataset-tools

使用 uv(最快):

uv pip install kn-dataset-tools

对于贡献者:

git clone https://github.com/Ktiseos-Nyx/Dataset-Tools.git
cd Dataset-Tools
pip install -e .  # 开发用可编辑安装

使用方法

启动应用程序

安装后,在终端中运行应用程序:

dataset-tools

完成!图形界面将启动,您可以开始浏览您的 AI 图像数据集。

调试模式

点击展开高级日志与调试模式

需要排查提取问题或报告漏洞?启用详细日志:

# 完全调试输出(最详细)
dataset-tools --log-level DEBUG

# 或使用简写形式
dataset-tools --log-level d

# 其他可用日志级别
dataset-tools --log-level INFO     # 默认 - 正常运行
dataset-tools --log-level WARNING  # 仅显示警告
dataset-tools --log-level ERROR    # 仅显示错误

调试日志会显示详细的解析器决策、节点检测和提取步骤——非常适合找出为何某个工作流无法正确解析!

图形界面交互

加载文件:

  1. 点击“打开文件夹”按钮,或使用“文件 > 更改文件夹...”菜单选项。

  2. 拖放:将单个图像/模型文件或整个文件夹直接拖到应用程序窗口上。

  3. 如果拖放的是单个文件,其父文件夹将被加载,该文件会在列表中自动选中。

  4. 如果拖放的是文件夹,则该文件夹将被加载。

导航:

  1. 从列表/树视图中选择文件 以查看其详细信息

  2. 查看模式:

    • 缩略图网格: 带图像预览的视觉浏览

    • 文件树: 层级文件夹导航

    • 通过“查看”菜单在模式间切换

  3. 图像预览:

    • 选中的图像将在预览窗格中显示

    • 可按需缩放、平移和调整大小

    • 非图像文件显示“无预览可用”

  4. 元数据显示:

    • 提示信息: 正面与负面提示

    • 生成参数: 步数、采样器、CFG、种子、模型等

    • 原始工作流: 完整的 ComfyUI 工作流 JSON(如有)

    • 编辑元数据: 点击“编辑”按钮修改并保存元数据

  5. 复制元数据: 一键复制到剪贴板

  6. 设置与配置:

    • 主题: 通过设置按钮或“查看 > 主题”菜单访问

    • Civitai API 密钥: 在设置中输入以获取增强的资源数据

    • 窗口大小: 所有布局均可调整大小——拉伸以适应您的工作流程!

    • 字体偏好: 自定义文本显示

主题

Dataset-Tools 内置 40+ 种主题,可通过内置主题浏览器访问:

  • 专业主题:适用于严肃工作

  • Material Design 主题:现代美学风格

  • 复古/控制台主题:怀旧终端氛围

  • 梗图主题:如“只有妈妈会喜欢的颜色”(真的有!)

  • 自定义主题:将您自己的 QSS 样式表添加到 themes 文件夹!

通过 查看 > 主题 菜单或设置按钮访问主题。我们的主题库从精美到...离谱都有,不加评判——用让你开心的就好!

主题致谢:

关于 Material 主题的说明: 我们曾使用 Dunderlab 的 qt-material 依赖项,但发现其过度样式化的 QSS 导致与 PyQt6 小部件出现一些 UI 异常与兼容性问题。我们已将其替换为自研的 Material Design 风格主题,在保留美学的同时确保了更好的兼容性。衷心感谢 Dunderlab qt-material 项目带来的灵感——他们的工作非常出色,我们只是需要更适配我们小部件结构的主题。截图中仍显示安装了 MATERIAL 主题,是因为我们中有人忘了重新安装。

完整主题许可与归属请参见 NOTICE.md

未来发展路线图

核心功能:

  • 模型文件支持: 完整支持 Safetensors 和 GGUF 元数据的显示与编辑功能。

  • 完整元数据编辑: 提供图像元数据的高级编辑与保存功能。

  • 插件架构: 可扩展的插件系统,便于添加自定义解析器和功能。

  • 批量操作: 从文件夹导出元数据、根据元数据重命名文件、批量处理。

  • 高级搜索与过滤: 根据元数据内容和参数对数据集进行搜索和过滤。

用户体验:

  • 增强的 UI/UX: 改进提示显示,支持语法高亮的文本文件查看。(计划迁移到 Electron 以提升跨平台兼容性与 UI 一致性。)

  • 主题系统扩展: 增加更多主题和自定义选项。

  • 键盘快捷键: 为高级用户提供全面快捷键支持。

平台与集成:

  • 独立可执行文件: 为 Windows、macOS 和 Linux 提供原生构建版本。

  • 无头 CLI 以满足定制开发需求: 脱离图形界面,为高级用户提供前端 UI 选择。(如果您正在开发 Discord 机器人,这也很有用!)

  • PyPI 分发: 官方包发布,便于使用 pip install dataset-tools 安装。

  • CivitAI API 集成: 直接查询模型和资源。

  • 跨平台兼容性: 增强对不同操作系统的支持。

技术改进:

  • 全面的测试套件: 自动化测试确保稳定性并防止退化。(又没完成这个。)

  • 增强的格式支持: 支持更多 AI 工具格式和元数据标准。

  • 性能优化: 提升大型数据集的加载与处理速度。

  • 错误处理: 改进错误报告与恢复机制。

  • 更好的安全性: 已为 API 密钥添加 Fernet 加密,但仍存在其他漏洞,我们正在修复中。

生态系统集成:

  • 数据集管理工具: 与 HuggingFace、模型下载器和转换工具集成。

  • 工作流集成: 支持 AI 生成工作流与管道管理。

  • 社区功能: 解析器共享、格式贡献系统。

贡献

我们欢迎分叉、修复和实验! Dataset-Tools 是一个社区项目——您可以:

  • 分叉它 并将它变成您自己的

  • 破坏它 看看会发生什么(然后告诉我们!)

  • 修复它 当您发现漏洞时

  • 扩展它 添加新的解析器或功能

  • 分享它 给可能用得上的其他人

如何贡献

发现漏洞?

  • 查看 Issues 标签页,确认是否已有人报告

  • 如果没有,请新建一个 Issue,包含:

    • 问题的清晰描述

    • 复现步骤

    • 示例图像(如果是解析问题)

    • 使用 --log-level DEBUG 生成的日志输出

想为新工具/节点添加支持?

  • 在 GitHub Issue 中分享带元数据的示例图像

  • 告诉我们工作流结构

  • 我们一直在寻找新的 ComfyUI 自定义节点来支持!

代码贡献:

  1. 分叉仓库

  2. 创建分支:git checkout -b feature/your-feature-name

  3. 清晰地提交您的变更

  4. 推送到您的分叉:git push origin feature/your-feature-name

  5. 提交拉取请求并说明您的更改

ComfyUI 节点支持:

现实情况: ComfyUI 的提取永远无法做到 100% 完美。总会有人创建一个工作流,使用它,发来图片,然后……它就崩了。😂 但我们一直在努力支持最新的节点!如果您有无法正确解析的工作流,请分享给我们,以便我们添加支持。

无论多么微小的贡献都重要——拼写修正、文档改进和提问都很有价值!

许可证

本项目根据 GNU 通用公共许可证 GPL 3.0 条款授权。完整许可证文本请参阅仓库根目录下的 LICENSE 文件。

致谢

  • 核心解析逻辑与灵感来源:本项目借鉴并大幅改编了 receyuki 的 Stable Diffusion Prompt Reader 的解析功能。衷心感谢这一基础性工作。原始仓库:stable-diffusion-prompt-reader 该嵌入代码的原始 MIT 许可证已包含在 NOTICE.md 文件中。

  • UI 主题:精美的 PyQt 主题得益于 qt-material(由 DunderLab 提供)、GTRONICK - GTRONICKS 以及 Unreal Stylesheet 创作者 UNREAL STYLESHEET

  • 核心依赖库:本项目依赖诸多优秀的开源 Python 库,包括 Pillow, PyQt6piexifpyexiv2tomlPydanticRich。其各自许可证适用。

  • Anzhc 持续的支持与鼓励。

  • 我们的同行及更广泛的 AI 与开源社区,感谢他们持续的支持与启发。

  • AI 语言模型(如来自 Google、OpenAI、Anthropic 的模型),在开发过程中协助代码生成、文档撰写与问题解决。

  • 还有更多!

特别感谢

  • 指导者:@traugdor90

  • 特别感谢贡献者:开源社区、Whitevamp、Exdysa 以及其他许多人。


支持我们

如果您觉得 Dataset Tools 有用,请考虑支持创作者!

Join us on Discord Support us on Ko-fi Follow us on Twitch

此模型生成的图像

未找到图像。