Datasets 文档
创建文档数据集
并获得增强的文档体验
开始使用
创建文档数据集
本指南将向您展示如何使用 PdfFolder 和一些元数据来创建文档数据集。这是一个无需编写代码的解决方案,可用于快速创建包含数千个 PDF 文件的文档数据集。
您可以通过要求用户先共享他们的联系信息来控制对数据集的访问。有关如何在 Hub 上启用此功能的更多信息,请参阅受保护的数据集指南。
PdfFolder
PdfFolder 是一个数据集构建器,旨在快速加载包含数千个 PDF 的文档数据集,而无需您编写任何代码。
💡 请查看 拆分模式层级 (Split pattern hierarchy),以进一步了解
PdfFolder如何根据您的数据集仓库结构创建数据集拆分。
PdfFolder 会根据目录名称自动推断数据集的类标签 (class labels)。请将您的数据集存储在如下的目录结构中:
folder/train/resume/0001.pdf
folder/train/resume/0002.pdf
folder/train/resume/0003.pdf
folder/train/invoice/0001.pdf
folder/train/invoice/0002.pdf
folder/train/invoice/0003.pdf如果数据集遵循 PdfFolder 结构,则可以直接使用 load_dataset() 进行加载
>>> from datasets import load_dataset
>>> dataset = load_dataset("path/to/folder")这等同于在 load_dataset() 中手动传递 pdffolder 以及在 data_dir 中指定目录
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder")您还可以使用 pdffolder 来加载包含多个拆分的数据集。为此,您的数据集目录应具有以下结构:
folder/train/resume/0001.pdf
folder/train/resume/0002.pdf
folder/test/invoice/0001.pdf
folder/test/invoice/0002.pdf如果所有 PDF 文件都包含在单个目录中,或者它们不在同一层级的目录结构中,则不会自动添加
label列。如果您需要该列,请显式设置drop_labels=False。
如果您想包含有关数据集的额外信息,例如文本标题或边界框,请将其添加为文件夹中的 metadata.csv 文件。这使您可以快速创建用于不同计算机视觉任务(如文本字幕或目标检测)的数据集。您也可以使用 JSONL 文件 metadata.jsonl 或 Parquet 文件 metadata.parquet。
folder/train/metadata.csv
folder/train/0001.pdf
folder/train/0002.pdf
folder/train/0003.pdf您的 metadata.csv 文件必须包含一个 file_name 或 *_file_name 字段,用于将 PDF 文件与其元数据相关联
file_name,additional_feature
0001.pdf,This is a first value of a text feature you added to your pdfs
0002.pdf,This is a second value of a text feature you added to your pdfs
0003.pdf,This is a third value of a text feature you added to your pdfs或使用 metadata.jsonl
{"file_name": "0001.pdf", "additional_feature": "This is a first value of a text feature you added to your PDFs"}
{"file_name": "0002.pdf", "additional_feature": "This is a second value of a text feature you added to your PDFs"}
{"file_name": "0003.pdf", "additional_feature": "This is a third value of a text feature you added to your PDFs"}在这里,file_name 必须是与元数据文件相邻的 PDF 文件名。更普遍地说,它必须是从包含元数据的目录到 PDF 文件的相对路径。
数据集中的每一行可以指向多个 PDF,例如当您的输入和输出都是 PDF 时
{"input_file_name": "0001.pdf", "output_file_name": "0001_output.pdf"}
{"input_file_name": "0002.pdf", "output_file_name": "0002_output.pdf"}
{"input_file_name": "0003.pdf", "output_file_name": "0003_output.pdf"}您还可以定义 PDF 列表。在这种情况下,您需要将字段命名为 file_names 或 *_file_names。示例如下:
{"pdfs_file_names": ["0001_part1.pdf", "0001_part2.pdf"], "label": "urgent"}
{"pdfs_file_names": ["0002_part1.pdf", "0002_part2.pdf"], "label": "urgent"}
{"pdfs_file_names": ["0003_part1.pdf", "0002_part2.pdf"], "label": "normal"}OCR (光学字符识别)
OCR 数据集包含 PDF 中的文本。一个 metadata.csv 的示例可能如下:
file_name,text
0001.pdf,Invoice 1234 from 01/01/1970...
0002.pdf,Software Engineer Resume. Education: ...
0003.pdf,Attention is all you need. Abstract. The ...使用 PdfFolder 加载数据集,它将为 PDF 标题创建一个 text 列
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder", split="train")
>>> dataset[0]["text"]
"Invoice 1234 from 01/01/1970..."将数据集上传到 Hub
创建数据集后,您可以使用 huggingface_hub 等工具进行分享。请确保您已安装 huggingface_hub 库并登录了您的 Hugging Face 账号(详情请参阅 使用 Python 上传教程)。
使用 huggingface_hub.HfApi.upload_folder 上传您的数据集
from huggingface_hub import HfApi
api = HfApi()
api.upload_folder(
folder_path="/path/to/local/dataset",
repo_id="username/my-cool-dataset",
repo_type="dataset",
)