handwriting-v1
收藏数据集概述
基本信息
- 数据集名称: handwriting-v1
- 许可证: MIT
- 任务类别: 文本生成
- 语言: 德语
- 标签: 手写、笔画数据、RNN训练、触控笔、S Pen、Parquet、JSONL
- 规模类别: n<1K
- 配置名称: default
数据集描述
- 模式版本: 1.0.0
- 格式: Apache Parquet(列式,压缩)和 JSONL 备份
- 内容: 包含使用触控笔(S Pen)在平板设备上收集的手写笔画数据,专为训练用于手写生成/识别任务的循环神经网络而优化。
数据格式
数据在 data/ 目录下以两种格式提供:
- Parquet 文件 (
*.parquet): 列式格式,针对 HuggingFace 数据集进行了优化。 - JSONL 文件 (
*.jsonl): 行分隔的 JSON 备份,易于解析。 两种格式包含具有相同批次 ID 的相同 RNN 训练数据。
Parquet 模式
Parquet 文件中的每一行代表一个完整的手写样本:
| 列名 | 类型 | 描述 |
|---|---|---|
id |
string | 唯一标识符 (UUID) |
text |
string | 被书写的提示文本 |
dx |
list<double> | 连续点之间的 X 轴偏移量 |
dy |
list<double> | 连续点之间的 Y 轴偏移量 |
eos |
list<double> | 笔画结束标志 (1 = 提笔,0 = 继续) |
scale |
double | 用于归一化的缩放因子 |
created_at |
string | 创建时间的 ISO 时间戳 |
session_id |
string | 收集会话标识符 |
JSONL 格式
JSONL 文件中的每一行是一个具有以下结构的 JSON 对象: json {"id": "uuid", "text": "prompt text", "points": [{"dx": 0, "dy": 0, "eos": 0}, ...], "scale": 1.0}
| 字段 | 类型 | 描述 |
|---|---|---|
id |
string | 唯一标识符 (UUID) |
text |
string | 被书写的提示文本 |
points |
array | 包含 dx, dy, eos 的点对象数组 |
scale |
number (可选) | 用于归一化的缩放因子 |
RNN 训练格式
笔画数据以 RNN 手写模型常用的格式存储:
- dx/dy: 相对于前一个点的位置增量(第一个点的 dx=dy=0)
- eos: 表示提笔(笔画结束)的二进制标志
- 数据通过边界框进行归一化以保持一致的尺度
可视化
预览 SVG 文件可在 renders_preview/ 目录中找到,供 HuggingFace 数据集查看器使用。
使用方法
使用 Parquet(HuggingFace 推荐)
python from datasets import load_dataset
对于私有仓库,使用:load_dataset("finnbusse/handwriting-v1", token="YOUR_HF_TOKEN")
dataset = load_dataset("finnbusse/handwriting-v1")
访问样本
sample = dataset[train][0]
笔画数据已经是原生 Python 列表(无需 JSON 解析)
dx = sample[dx] dy = sample[dy] eos = sample[eos]
重建绝对位置
x, y = 0, 0 positions = [] for dx_i, dy_i, eos_i in zip(dx, dy, eos): x += dx_i y += dy_i positions.append((x, y, eos_i))
使用 JSONL(替代方案)
JSONL 文件名遵循批次 ID 模式:YYYYMMDD_HHMMSS_XXXX.jsonl
python
import json
import glob
读取 data 目录中的所有 JSONL 文件
for jsonl_file in glob.glob(data/*.jsonl): with open(jsonl_file, r) as f: for line in f: sample = json.loads(line) points = sample[points] scale = sample.get(scale, 1.0) # scale 是可选的 # 每个点包含:dx, dy, eos
收集方法
数据是通过使用 Pointer Events API 的 Web 应用程序收集的,捕获了触控笔输入(包括可用的压力和倾斜信息)。




