Datasets documentation

Tạo bộ dữ liệu tài liệu

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Tạo bộ dữ liệu tài liệu

Hướng dẫn này sẽ cho bạn thấy cách tạo một tập dữ liệu tài liệu bằng PdfFolder cùng một số metadata. Đây là giải pháp không cần viết code để nhanh chóng tạo tập dữ liệu tài liệu với hàng nghìn tệp PDF.

Bạn có thể kiểm soát quyền truy cập vào bộ dữ liệu của mình bằng cách yêu cầu người dùng chia sẻ thông tin liên hệ trước. Xem hướng dẫn Gated datasets để biết thêm thông tin về cách bật tính năng này trên Hub.

PdfFolder

PdfFolder là một trình xây dựng tập dữ liệu được thiết kế để nhanh chóng nạp một tập dữ liệu tài liệu gồm vài nghìn tệp PDF mà không yêu cầu bạn phải viết bất kỳ mã nào.

💡 Xem Hierarchie mẫu Split để tìm hiểu thêm về cách PdfFolder tạo các phần chia dataset dựa trên cấu trúc kho dataset của bạn.

PdfFolder tự động suy luận nhãn lớp của bộ dữ liệu dựa trên tên thư mục. Hãy lưu bộ dữ liệu của bạn trong cấu trúc thư mục như sau:

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

Nếu bộ dữ liệu tuân theo cấu trúc PdfFolder, bạn có thể tải nó trực tiếp bằng load_dataset():

>>> from datasets import load_dataset

>>> dataset = load_dataset("path/to/folder")

Điều này tương đương với việc truyền pdffolder thủ công trong load_dataset() và thư mục trong data_dir:

>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder")

Bạn cũng có thể sử dụng pdffolder để tải các bộ dữ liệu liên quan đến nhiều phần chia. Để làm điều này, thư mục bộ dữ liệu của bạn nên có cấu trúc sau:

folder/train/resume/0001.pdf
folder/train/resume/0002.pdf
folder/test/invoice/0001.pdf
folder/test/invoice/0002.pdf

Nếu tất cả các tệp PDF nằm trong một thư mục duy nhất hoặc không ở cùng cấp trong cấu trúc thư mục, cột label sẽ không được thêm vào tự động. Nếu bạn cần cột này, hãy đặt drop_labels=False một cách tường minh.

Nếu có thêm thông tin bạn muốn bao gồm về bộ dữ liệu của mình, chẳng hạn như chú thích văn bản hoặc hộp bao quanh, hãy thêm chúng dưới dạng tệp metadata.csv trong thư mục của bạn. Điều này cho phép bạn nhanh chóng tạo các bộ dữ liệu cho các tác vụ thị giác máy tính khác nhau như chú thích văn bản hoặc phát hiện đối tượng. Bạn cũng có thể sử dụng tệp JSONL metadata.jsonl hoặc tệp Parquet metadata.parquet.

folder/train/metadata.csv
folder/train/0001.pdf
folder/train/0002.pdf
folder/train/0003.pdf

Tệp metadata.csv của bạn phải có trường file_name hoặc *_file_name để liên kết các tệp PDF với metadata của chúng:

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

hoặc sử dụng 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"}

Ở đây, file_name phải là tên của tệp PDF nằm cạnh tệp metadata. Nói chung, nó phải là đường dẫn tương đối từ thư mục chứa metadata đến tệp PDF.

Bạn có thể trỏ đến nhiều hơn một PDF trong mỗi hàng của bộ dữ liệu, ví dụ nếu cả đầu vào và đầu ra của bạn đều là 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"}

Bạn cũng có thể định nghĩa các danh sách PDF. Trong trường hợp đó, bạn cần đặt tên trường là file_names hoặc *_file_names. Dưới đây là một ví dụ:

{"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 (Nhận dạng ký tự quang học)

Bộ dữ liệu OCR chứa văn bản có trong một tệp PDF. Một tệp metadata.csv mẫu có thể trông như sau:

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 ...

Tải bộ dữ liệu bằng PdfFolder, và nó sẽ tạo một cột text cho chú thích PDF:

>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder", split="train")
>>> dataset[0]["text"]
"Invoice 1234 from 01/01/1970..."

Tải bộ dữ liệu lên Hub

Sau khi tạo xong một dataset, bạn có thể chia sẻ nó bằng cách sử dụng huggingface_hub, chẳng hạn. Hãy đảm bảo rằng bạn đã cài đặt thư viện huggingface_hub và đã đăng nhập vào tài khoản Hugging Face của mình (xem hướng dẫn Upload with Python để biết thêm chi tiết).

Tải lên bộ dữ liệu của bạn bằng 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",
)
Update on GitHub