Image / app.py
omar87's picture
Update app.py
1a43383
raw
history blame
2.67 kB
from PIL import Image
from difflib import SequenceMatcher
from skimage.metrics import structural_similarity as ssim
import gradio as gr
import pytesseract
# Function to calculate SSIM between two images
def calculate_ssim(img1, img2):
img1_gray = img1.convert("L")
img2_gray = img2.convert("L")
return ssim(img1_gray, img2_gray)
# Function to extract text from an image using OCR
def extract_text(image):
image = Image.open(image)
text = pytesseract.image_to_string(image).lower()
return text
# Function to compare trademarks based on text similarity
def compare_text(trademark1, trademark2):
text1 = extract_text(trademark1)
text2 = extract_text(trademark2)
similarity_ratio = SequenceMatcher(None, text1, text2).ratio()
return similarity_ratio
# Function to compare trademarks based on color similarity
def compare_colors(trademark1, trademark2):
trademark1 = trademark1.convert("RGB")
trademark2 = trademark2.convert("RGB")
colors1 = trademark1.getcolors(trademark1.size[0] * trademark1.size[1])
colors2 = trademark2.getcolors(trademark2.size[0] * trademark2.size[1])
color_vector1 = sum([(count * np.array(color)) for count, color in colors1]) / (trademark1.size[0] * trademark1.size[1])
color_vector2 = sum([(count * np.array(color)) for count, color in colors2]) / (trademark2.size[0] * trademark2.size[1])
color_similarity = 1 - np.linalg.norm(color_vector1 - color_vector2)
return color_similarity
# Function to compare trademarks based on multiple aspects
def compare_trademarks(trademark1, trademark2):
ssim_score = calculate_ssim(trademark1, trademark2)
text_similarity = compare_text(trademark1, trademark2)
color_similarity = compare_colors(trademark1, trademark2)
# Adjust weights based on the importance of each aspect
ssim_weight = 0.6
text_weight = 0.2
color_weight = 0.2
overall_similarity = (ssim_weight * ssim_score) + (text_weight * text_similarity) + (color_weight * color_similarity)
return overall_similarity
# Function to perform trademark conflict prevention
def prevent_trademark_conflict(trademark1, trademark2):
similarity_score = compare_trademarks(trademark1, trademark2)
result = f"Trademark Similarity Score: {similarity_score:.4f}"
return result
iface = gr.Interface(
fn=prevent_trademark_conflict,
inputs=[
gr.inputs.ImagePicker(label="Trademark Image 1"),
gr.inputs.ImagePicker(label="Trademark Image 2")
],
outputs="text",
title="Trademark Conflict Prevention",
description="Upload two trademark images. Get the trademark similarity score."
)
iface.launch()