Spaces:
Sleeping
Sleeping
File size: 1,529 Bytes
b88f51a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import gradio as gr
import json
import PyPDF2
import markdown
import tempfile
def merge_files(files):
merged_content = []
for file in files:
content = ""
if file.name.endswith('.txt'):
content = file.read().decode('utf-8')
elif file.name.endswith('.pdf'):
pdf_reader = PyPDF2.PdfReader(file)
for page in pdf_reader.pages:
content += page.extract_text()
elif file.name.endswith('.md'):
content = file.read().decode('utf-8')
content = markdown.markdown(content)
lines = content.split('\n')
for line in lines:
if line.strip():
merged_content.append(line.strip())
jsonl_output = ""
for i, text in enumerate(merged_content):
json_obj = {"id": i, "text": text}
jsonl_output += json.dumps(json_obj) + "\n"
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".jsonl", prefix="merged_")
temp_file.write(jsonl_output.encode('utf-8'))
temp_file.close()
return temp_file.name
iface = gr.Interface(
fn=merge_files,
inputs=gr.File(label="Upload .txt, .pdf, or .md files", file_count="multiple"),
outputs=gr.File(label="Download merged JSONL file"),
title="Multiple Files to Merged Indexed JSONL Converter",
description="Upload multiple .txt, .pdf, or .md files to convert and merge them into a single indexed JSONL file for LLM training."
)
if __name__ == "__main__":
iface.launch() |