Datasets 文档

创建文档数据集

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

创建文档数据集

本指南将向你展示如何使用 PdfFolder 和一些元数据创建文档。这是一个无需代码的解决方案,用于快速创建包含数千个 pdf 的文档。

你可以通过要求用户先分享他们的联系信息来控制对数据集的访问。查看门控数据集指南,了解有关如何在 Hub 上启用此功能的更多信息。

PdfFolder

PdfFolder 是一个数据集构建器,旨在快速加载包含数千个 pdf 的文档,而无需编写任何代码。

💡 查看拆分模式层级结构,了解有关 PdfFolder 如何根据你的数据集仓库结构创建数据集拆分的更多信息。

PdfFolder 根据目录名称自动推断数据集的类标签。将你的数据集存储在如下目录结构中

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() 中手动传递 pdffolderdata_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 等将其分享到 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",
)
< > 在 GitHub 上 更新