File size: 1,343 Bytes
c4e3ea5
6b0a154
7d8ec5e
 
 
 
c4e3ea5
a21c2eb
 
c4e3ea5
7d8ec5e
 
 
 
 
 
6b0a154
7d8ec5e
 
 
 
 
6b0a154
7d8ec5e
 
 
 
6b0a154
7d8ec5e
 
 
 
 
 
c4e3ea5
 
6b0a154
7d8ec5e
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
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()