Datasets documentation

문서 데이터셋 만들기

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

문서 데이터셋 만들기

이 가이드에서는 PdfFolder와 일부 메타데이터를 사용하여 문서 데이터셋을 만드는 방법을 보여줍니다. 수천 개의 PDF로 문서 데이터셋을 빠르게 생성하기 위한 무코드 솔루션입니다.

사용자가 먼저 연락처 정보를 공유하도록 요구하여 데이터셋에 대한 액세스를 제어할 수 있습니다. Hub에서 이 기능을 활성화하는 방법에 대한 자세한 내용은 Gated datasets 가이드를 참고하세요.

PdfFolder

PdfFolder는 수천 개의 PDF로 구성된 문서 데이터셋을 코드를 작성하지 않고도 빠르게 로드하도록 설계된 데이터셋 빌더입니다.

💡 PdfFolder가 데이터셋 저장소 구조를 기반으로 데이터셋 스플릿을 생성하는 방법에 대해 자세히 알아보려면 Split pattern hierarchy를 확인해 보세요.

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")

pdffolder를 load_dataset()에 수동으로 전달하고 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 파일에는 PDF 파일과 메타데이터를 연결하는 file_name 또는 *_file_name 필드가 있어야 합니다:

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 계정에 로그인되어 있는지 확인하세요(자세한 내용은 Upload with Python tutorial를 참고하세요).

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