Datasets documentation
Criar um conjunto de dados de documentos
Criar um conjunto de dados de documentos
Este guia mostrará como criar um conjunto de dados de documentos com PdfFolder e alguns metadados. Esta é uma solução sem código para criar rapidamente um conjunto de dados de documentos com vários milhares de PDFs.
Você pode controlar o acesso ao seu conjunto de dados exigindo que os usuários compartilhem primeiro suas informações de contato. Consulte o guia Conjuntos de dados com controle de acesso para mais informações sobre como habilitar esse recurso no Hub.
PdfFolder
O PdfFolder é um construtor de dataset projetado para carregar rapidamente um conjunto de dados de documentos com vários milhares de PDFs, sem exigir que você escreva qualquer código.
💡 Dê uma olhada na hierarquia do padrão Split para saber mais sobre como o
PdfFoldercria as divisões do conjunto de dados com base na estrutura do repositório do seu conjunto de dados.
PdfFolder infere automaticamente os rótulos de classe do seu conjunto de dados com base no nome do diretório. Armazene seu conjunto de dados em uma estrutura de diretórios como:
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.pdfSe o conjunto de dados seguir a estrutura PdfFolder, você pode carregá-lo diretamente com load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("path/to/folder")Isso é equivalente a passar pdffolder manualmente em load_dataset() e o diretório em data_dir:
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder")Você também pode usar pdffolder para carregar conjuntos de dados que envolvem múltiplas divisões. Para isso, o diretório do seu conjunto de dados deve ter a seguinte estrutura:
folder/train/resume/0001.pdf
folder/train/resume/0002.pdf
folder/test/invoice/0001.pdf
folder/test/invoice/0002.pdfSe todos os arquivos PDF estiverem em um único diretório ou se não estiverem no mesmo nível da estrutura de diretórios, a coluna
labelnão será adicionada automaticamente. Se você precisar dela, definadrop_labels=Falseexplicitamente.
Se houver informações adicionais que você deseja incluir sobre seu conjunto de dados, como legendas de texto ou caixas delimitadoras, adicione-as como um arquivo metadata.csv na sua pasta. Isso permite criar rapidamente conjuntos de dados para diferentes tarefas de visão computacional, como legendagem de texto ou detecção de objetos. Você também pode usar um arquivo JSONL metadata.jsonl ou um arquivo Parquet metadata.parquet.
folder/train/metadata.csv
folder/train/0001.pdf
folder/train/0002.pdf
folder/train/0003.pdfO seu arquivo metadata.csv deve ter um campo file_name ou *_file_name que vincule os arquivos PDF aos seus metadados:
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 pdfsou 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"}Aqui, o file_name deve ser o nome do arquivo PDF ao lado do arquivo de metadados. Mais geralmente, deve ser o caminho relativo do diretório que contém os metadados até o arquivo PDF.
É possível apontar para mais de um PDF em cada linha do seu conjunto de dados, por exemplo, se tanto a sua entrada quanto a sua saída forem PDFs:
{"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"}Você também pode definir listas de PDFs. Nesse caso, é necessário nomear o campo file_names ou *_file_names. Aqui está um exemplo:
{"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 (Reconhecimento Óptico de Caracteres)
Os conjuntos de dados de OCR contêm o texto presente em um PDF. Um exemplo de metadata.csv pode ser:
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 ...Carregue o conjunto de dados com PdfFolder e ele criará uma coluna text para as legendas dos PDFs:
>>> dataset = load_dataset("pdffolder", data_dir="/path/to/folder", split="train")
>>> dataset[0]["text"]
"Invoice 1234 from 01/01/1970..."Enviar o conjunto de dados para o Hub
Depois de criar um conjunto de dados, você pode compartilhá-lo usando, por exemplo, o huggingface_hub. Certifique-se de que a biblioteca huggingface_hub está instalada e de que você está conectado à sua conta do Hugging Face (veja o tutorial de upload com Python para mais detalhes).
Envie seu conjunto de dados com 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",
)