import cv2 import gradio as gr from PIL import Image from diagram_extraction import extract_diagram from text_extraction import extract_text from symbol_detection import detect_elements from comparison import compare_content def process_and_compare(pdf_image, png_image): """Main function to extract, compare, and return the differences.""" # Extract diagrams from both images diagram1 = extract_diagram(cv2.imread(pdf_image)) diagram2 = extract_diagram(cv2.imread(png_image)) # Extract text and elements from both diagrams text1 = extract_text(diagram1) text2 = extract_text(diagram2) elements1 = detect_elements(diagram1) elements2 = detect_elements(diagram2) # Compare the extracted content missing_text, extra_text = compare_content(text1.split(), text2.split()) missing_elements, extra_elements = compare_content(elements1, elements2) # Generate the comparison summary summary = f"Missing Text: {missing_text}\nExtra Text: {extra_text}\n" \ f"Missing Elements: {missing_elements}\nExtra Elements: {extra_elements}" return summary # Gradio Interface interface = gr.Interface( fn=process_and_compare, inputs=[gr.Image(type="filepath", label="PDF Diagram Image"), gr.Image(type="filepath", label="PNG Diagram Image")], outputs="text", title="High-Level Diagram Comparison", description="Upload two diagrams (PDF & PNG) to compare their content." ) interface.launch()