delhivery / app.py
shrudhit's picture
Create app.py
313d8ab verified
import gradio as gr
from pypdf import PdfReader, PdfWriter
import re
import tempfile
def extract_account(text):
match = re.search(r"If undelivered, return to:\s*\n?([^\n]+)", text)
return match.group(1).strip() if match else "UNKNOWN"
def process(files):
all_pages = []
# Read all PDFs
for file in files:
reader = PdfReader(file.name)
for page in reader.pages:
text = page.extract_text() or ""
account = extract_account(text)
all_pages.append((account, page))
# Sort by account
all_pages.sort(key=lambda x: x[0])
# Create final PDF
writer = PdfWriter()
for acc, page in all_pages:
writer.add_page(page)
output = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf")
writer.write(output.name)
return output.name
app = gr.Interface(
fn=process,
inputs=gr.File(file_count="multiple", label="Upload Label PDFs"),
outputs=gr.File(label="Download Sorted PDF"),
title="πŸ“¦ Daily Label Sorter (Account Wise)",
description="Upload PDFs β†’ auto merge β†’ sort by account β†’ get 1 final PDF"
)
app.launch()