Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import BlipProcessor, BlipForConditionalGeneration | |
from PIL import Image | |
from fpdf import FPDF | |
import os | |
from datetime import datetime | |
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") | |
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base") | |
def analyze_image(image): | |
raw_image = Image.fromarray(image) | |
text = "Describe the construction site" | |
inputs = processor(raw_image, text, return_tensors="pt") | |
out = model.generate(**inputs) | |
caption = processor.decode(out[0], skip_special_tokens=True) | |
date_str = datetime.now().strftime("%Y-%m-%d") | |
pdf = FPDF() | |
pdf.add_page() | |
pdf.set_font("Arial", size=12) | |
pdf.multi_cell(0, 10, f"Daily Progress Report - {date_str}\n\nCaption: {caption}") | |
os.makedirs("reports", exist_ok=True) | |
file_path = f"reports/DPR_{date_str}.pdf" | |
pdf.output(file_path) | |
return caption, file_path | |
demo = gr.Interface( | |
fn=analyze_image, | |
inputs=gr.Image(type="numpy", label="Upload Site Photo"), | |
outputs=[gr.Textbox(label="Generated Caption"), gr.File(label="Download DPR PDF")], | |
title="Auto DPR Generator", | |
description="Upload a construction site image to generate a Daily Progress Report." | |
) | |
if __name__ == "__main__": | |
demo.launch() | |