|
from PIL import Image |
|
from difflib import SequenceMatcher |
|
from skimage.metrics import structural_similarity as ssim |
|
import gradio as gr |
|
import pytesseract |
|
|
|
|
|
def calculate_ssim(img1, img2): |
|
img1_gray = img1.convert("L") |
|
img2_gray = img2.convert("L") |
|
return ssim(img1_gray, img2_gray) |
|
|
|
|
|
def extract_text(image): |
|
image = Image.open(image) |
|
text = pytesseract.image_to_string(image).lower() |
|
return text |
|
|
|
|
|
def compare_text(trademark1, trademark2): |
|
text1 = extract_text(trademark1) |
|
text2 = extract_text(trademark2) |
|
similarity_ratio = SequenceMatcher(None, text1, text2).ratio() |
|
return similarity_ratio |
|
|
|
|
|
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 |
|
|
|
|
|
def compare_trademarks(trademark1, trademark2): |
|
ssim_score = calculate_ssim(trademark1, trademark2) |
|
text_similarity = compare_text(trademark1, trademark2) |
|
color_similarity = compare_colors(trademark1, trademark2) |
|
|
|
|
|
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 |
|
|
|
|
|
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() |
|
|