資料集文件
建立文件資料集
並獲得增強的文件體驗
開始使用
建立文件資料集
本指南將向您展示如何使用 PdfFolder 和部分元數據 (metadata) 來建立文件資料集。這是一種無程式碼 (no-code) 的解決方案,可用於快速建立包含數千份 PDF 的文件資料集。
您可以要求使用者先分享其聯絡資訊,藉此控管對資料集的存取權限。請查看 Gated datasets (受限資料集) 指南,了解如何在 Hub 上啟用此功能。
PdfFolder
PdfFolder 是一個資料集建構器,專為快速載入數千份 PDF 的文件資料集而設計,過程中無需編寫任何程式碼。
💡 請參考 分割模式階層 (Split pattern hierarchy),以進一步了解
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() 中手動傳入 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 檔案。這讓您可以快速為不同的電腦視覺任務建立資料集,例如文字描述 (captioning) 或物件偵測。您也可以使用 metadata.jsonl (JSONL 檔案) 或 metadata.parquet (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",
)