# Bir belge veri seti oluşturun

Bu kılavuz, `PdfFolder` ve bazı metadata ile bir belge veri seti oluşturma yöntemini gösterir. Bu, binlerce PDF içeren bir belge veri setini hızlıca oluşturmak için kod gerektirmeyen bir çözümdür.

> [!TIP]
> Veri setinize erişimi, kullanıcıların önce iletişim bilgilerini paylaşmasını gerektirerek kontrol edebilirsiniz. Bu özelliği Hub'da nasıl etkinleştireceğinize dair daha fazla bilgi için [Gated datasets](https://huggingface.co/docs/hub/datasets-gated) kılavuzuna göz atın.

## PdfFolder

`PdfFolder`, kod yazmanıza gerek kalmadan birkaç bin PDF içeren bir belge veri setini hızlıca yüklemek için tasarlanmış bir veri seti oluşturucudur.

> [!TIP]
> 💡 `PdfFolder`'ın veri seti deposu yapınıza dayalı olarak veri seti bölümlerini nasıl oluşturduğunu öğrenmek için [Bölme desen hiyerarşisine](repository_structure#split-pattern-hierarchy) göz atın.

`PdfFolder`, veri setinizin sınıf etiketlerini dizin adına göre otomatik olarak çıkarır. Veri setinizi aşağıdaki gibi bir dizin yapısında saklayın:

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

Veri kümesi `PdfFolder` yapısını izliyorsa, doğrudan [load_dataset()](/docs/datasets/v5.2.0/tr/package_reference/loading_methods#datasets.load_dataset) ile yükleyebilirsiniz:

```py
>>> from datasets import load_dataset

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

Bu, [load_dataset()](/docs/datasets/v5.2.0/tr/package_reference/loading_methods#datasets.load_dataset) içinde `pdffolder` değerini ve dizini `data_dir` içinde elle geçirmeye eşdeğerdir:

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

Birden fazla bölüme sahip veri setlerini yüklemek için `pdffolder` kullanabilirsiniz. Bunu yapmak için veri seti dizininizin aşağıdaki yapıya sahip olması gerekir:

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

> [!WARNING]
> Tüm PDF dosyaları tek bir dizinde yer alıyorsa veya aynı dizin yapısı seviyesinde değillerse, `label` sütunu otomatik olarak eklenmez. Bu sütuna ihtiyacınız varsa, `drop_labels=False` değerini açıkça belirleyin.

Veri setiniz hakkında eklemek istediğiniz ek bilgiler varsa, örneğin metin açıklamaları veya sınırlayıcı kutular, bunları klasörünüze bir `metadata.csv` dosyası olarak ekleyin. Bu, metin açıklama veya nesne algılama gibi farklı bilgisayarla görme görevleri için veri setlerini hızlı bir şekilde oluşturmanızı sağlar. Ayrıca bir JSONL dosyası olan `metadata.jsonl` veya bir Parquet dosyası olan `metadata.parquet` kullanabilirsiniz.

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

`metadata.csv` dosyanız, PDF dosyalarını metadata ile ilişkilendiren bir `file_name` veya `*_file_name` alanına sahip olmalıdır:

```csv
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
```

veya `metadata.jsonl` kullanarak:

```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"}
```

Burada `file_name`, metadata dosyasının yanındaki PDF dosyasının adı olmalıdır. Daha genel olarak, metadata dosyasının bulunduğu dizinden PDF dosyasına göre göreli yol olmalıdır.

Veri setinizdeki her satırda birden fazla PDF'ye işaret etmeniz mümkündür, örneğin hem girdi hem de çıktınız PDF ise:

```jsonl
{"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 listeleri de tanımlayabilirsiniz. Bu durumda alanın adını `file_names` veya `*_file_names` olarak belirlemeniz gerekir. İşte bir örnek:

```jsonl
{"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 (Optik Karakter Tanıma)

OCR veri setleri, bir PDF'de bulunan metni içerir. `metadata.csv` örneği şu görünüme sahip olabilir:

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

Veri setini `PdfFolder` ile yükleyin; bu, PDF açıklamaları için bir `text` sütunu oluşturacaktır:

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

### Veri setini Hub'a yükle

Bir veri seti oluşturduktan sonra, örneğin `huggingface_hub` kullanarak paylaşabilirsiniz. [huggingface_hub](https://huggingface.co/docs/huggingface_hub/index) kütüphanesinin yüklü olduğundan ve Hugging Face hesabınıza giriş yaptığınızdan emin olun (daha fazla ayrıntı için [Python ile Yükleme öğreticisi](upload_dataset#upload-with-python) bölümüne bakın).

Veri setinizi `huggingface_hub.HfApi.upload_folder` ile yükleyin:

```py
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",
)
```

