miracleyin/example_mmdata_mnbvc
mnbvc mm dataset v2.1 MNBVC 多模态语料数据格式。原链接:https://huggingface.co/datasets/wanng/example_mmdata_mnbvc 参考实现:mm_template_mnbvc 的 mmdata_block.BLOCK_SCHEMA。schema 以那份代码为准,这个数据集是它的示例产物。 字段 字段名称 类型 字段说明 可选 实体ID string 数据的唯一标识符。用于在数据集中确定是哪一条数据。在单个数据集中确定一条数据的实体对象。 必选 md5 string 内容的 md5,用于去重与完整性校验 必选 块ID int32 一个实体对象内的标识符。用于确定一条数据内的一个部分数据。parquet 行的最小单元。 必选 块类型 string 用于保存块的类别。类别的含义为「模态」。取值见下 必选 扩展字段 string 用于保存块的元信息。为可以被成功 load 的 json 字符串。后期可继续扩展 必选… See the full description on the dataset page: https://huggingface.co/datasets/miracleyin/example_mmdata_mnbvc.
mnbvc mm dataset v2.1
MNBVC 多模态语料数据格式。原链接:https://huggingface.co/datasets/wanng/examplemmdatamnbvc
参考实现:mm_template_mnbvc 的 mmdata_block.BLOCK_SCHEMA。schema 以那份代码为准,这个数据集是它的示例产物。
字段
块类型 取值:text · image · audio · video · pdf · image-text-pair
相对 v2.0 的变化
v2.0 的示例数据和参考实现的代码在 schema 上是对不上的,这一版把两边统一了。 以下改动会影响读旧数据的代码:
解不出来的方式会变,别拿报错去判断。 datasets 4 在把 binary 或 base64 字符串 cast 成 Image() 时抛 ArrowNotImplementedError: Unsupported cast ... to struct;datasets 5 接受了这次 cast,转而把 base64 内容当文件名去打开,死在 FileNotFoundError。两种都拿不到图,所以用 struct<bytes, path> 的理由不变—— 但如果你的代码在 except 里匹配报错文本,它会在升级 datasets 时静悄悄地不再匹配。
体积上媒体列从 binary 改成 struct 没有代价(path 那个小字符串 zstd 之后压没了)。
读旧数据不用改代码:参考实现里的 decode_media() 同时吃 struct / 裸 bytes / base64 字符串三种形态。
内容
7 行,一个 parquet 文件:
PDF 页那 4 行来自 pdfsystem_mnbvc 的 pdfsys.page/v2 页级格式,经 pdfsys mnbvc-export --dialect v2 转换而来 —— 两边 schema 逐列一致。它们的 扩展字段 里带着 width_pt/height_pt/render_dpi/ extractor 等页级信息。
读取
from datasets import load_dataset, Audio, Image
ds = load_dataset("miracleyin/example_mmdata_mnbvc", split="train")
ds.cast_column("图片", Image())[1]["图片"] # -> PIL.Image
ds.cast_column("音频", Audio())[2]["音频"] # -> {"array": ..., "sampling_rate": 44100}不确定手上那份是 v2.0 还是 v2.1 时:
from src.mm_data.core.models.mmdata_block import decode_media
blob = decode_media(row["图片"]) # struct / 裸 bytes / base64 三种都吃mmdata.ipynb 里是从零造各模态数据块并写成 parquet 的完整流程。
说明
每一行文本/图片/视频/音频只能存在一条内容。
OCR文本 只在图片确实过了 OCR 时才填。这里那 4 行 PDF 页的 OCR文本 是 null —— 它们的 文本 来自 PyMuPDF 直读 PDF 自带的文本层,不是从像素识别出来的,填进 OCR文本 就是谎报。走 MinerU 的 pipeline / VLM 链路时才会填。扩展字段.extractor 记录了是哪条链路。
PDF 页的源文件来自 OmniDocBench 与 olmOCR-bench 两个公开 benchmark,上游许可未逐份核实。
