Datasets documentation
Crear un conjunto de datos de documentos
Crear un conjunto de datos de documentos
Esta guía le mostrará cómo crear un conjunto de datos de documentos con PdfFolder y algunos metadatos. Esta es una solución sin código para crear rápidamente un conjunto de datos de documentos con varios miles de PDF.
Puedes controlar el acceso a tu conjunto de datos requiriendo que los usuarios compartan primero su información de contacto. Consulta la guía de Conjuntos de datos con acceso restringido para obtener más información sobre cómo habilitar esta función en el Hub.
PdfFolder
El PdfFolder es un constructor de conjuntos de datos diseñado para cargar rápidamente un conjunto de documentos con varios miles de PDF sin necesidad de escribir código.
💡 Echa un vistazo a la Jerarquía del patrón Split para aprender más sobre cómo
PdfFoldercrea divisiones de datos basadas en la estructura de tu repositorio de datos.
PdfFolder infiere automáticamente las etiquetas de clase de tu conjunto de datos en función del nombre del directorio. Guarda tu conjunto de datos en una estructura de directorios como la siguiente:
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.pdfSi el conjunto de datos sigue la estructura PdfFolder, puede cargarlo directamente con load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("path/to/folder")Esto es equivalente a pasar pdffolder manualmente en load_dataset() y el directorio en data_dir:
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder")También puede usar pdffolder para cargar conjuntos de datos que implican múltiples divisiones. Para ello, el directorio de su conjunto de datos debe tener la siguiente estructura:
folder/train/resume/0001.pdf
folder/train/resume/0002.pdf
folder/test/invoice/0001.pdf
folder/test/invoice/0002.pdfSi todos los archivos PDF están contenidos en un solo directorio o si no están en el mismo nivel de la estructura de directorios, la columna
labelno se añadirá automáticamente. Si la necesitas, establecedrop_labels=Falseexplícitamente.
Si hay información adicional que desees incluir sobre tu conjunto de datos, como descripciones de texto o cajas delimitadoras, añádela como un archivo metadata.csv en tu carpeta. Esto te permite crear rápidamente conjuntos de datos para diferentes tareas de visión por computadora, como la descripción de texto o la detección de objetos. También puedes usar un archivo JSONL metadata.jsonl o un archivo Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.pdf
folder/train/0002.pdf
folder/train/0003.pdfSu archivo metadata.csv debe tener un campo file_name o *_file_name que vincule los archivos PDF con sus metadatos:
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 pdfso usando 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"}Aquí, file_name debe ser el nombre del archivo PDF situado junto al archivo de metadatos. De forma más general, debe ser la ruta relativa desde el directorio que contiene los metadatos hasta el archivo PDF.
Es posible apuntar a más de un PDF en cada fila de su conjunto de datos, por ejemplo, si tanto la entrada como la salida son 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"}También puede definir listas de PDFs. En ese caso, debe nombrar el campo file_names o *_file_names. Aquí hay un ejemplo:
{"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 (Reconocimiento Óptico de Caracteres)
Los conjuntos de datos de OCR tienen el texto contenido en un PDF. Un ejemplo de metadata.csv puede verse así:
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 ...Cargue el conjunto de datos con PdfFolder y creará una columna text para las descripciones de los PDF:
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder", split="train")
>>> dataset[0]["text"]
"Invoice 1234 from 01/01/1970..."Subir el conjunto de datos al Hub
Una vez que hayas creado un conjunto de datos, puedes compartirlo en la plataforma, por ejemplo, usando huggingface_hub. Asegúrate de tener instalada la biblioteca huggingface_hub y de haber iniciado sesión en tu cuenta de Hugging Face (consulta el tutorial de carga con Python para más detalles).
Sube tu conjunto de datos con 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",
)