صورتان تشك أنهما متطابقتان؟
أداة من KIT تقارن صورتين وتعيد نسبة تشابه رقمية دقيقة بينهما، معتمدة على تحليل محتوى الصورتين بصريًا لا مطابقة بياناتهما الخام فقط. تكتشف تشابهًا حتى مع اختلاف الحجم أو الإضاءة أو زاوية التصوير قليلًا، وتفيد في التحقق من نسخ الصور أو تتبع نسختين لملف واحد.
هذه المهمة غير متاحة حاليًا، لذا لا يمكن شراؤها. ولا يتم تحصيل أي رسوم مقابلها.
اطّلع على الـAPIأكثر دقة من العين المجردة
العين قد تخطئ في الحكم على تطابق صورتين، خاصة حين يكون الفرق بينهما دقيقًا كتغيير طفيف في الإضاءة أو الزاوية أو ضغط الملف بدرجة بسيطة لا تُلاحظ فورًا. تعتمد هذه الأداة على تمثيل رقمي دقيق لمحتوى كل صورة، وتقارن التمثيلين لتُخرج نسبة تشابه رقمية واضحة، بدل تخمين بصري قد يختلف حكمه من شخص لآخر بحسب دقة نظره أو انتباهه في تلك اللحظة بالذات.
تشابه يصمد أمام التعديل البسيط
صورتان قد تكونان الصورة نفسها بعد تعديل بسيط — إعادة تحجيم، ضغط، أو قص هامش خفيف من الحواف الخارجية — ومع ذلك تحمل ملفات مختلفة تمامًا من حيث بياناتها الخام المخزَّنة على القرص. تكتشف الأداة هذا التشابه رغم الاختلاف الظاهري في الملف نفسه، لأنها تحلل المحتوى البصري الفعلي لا بيانات الملف حرفيًا كما تفعل أدوات المقارنة التقليدية الأبسط والأقل دقة.
استخدامات عملية للنسبة الناتجة
نسبة تشابه مرتفعة جدًا تشير غالبًا إلى نسخة من الصورة نفسها بتعديل طفيف عليها لا يغيّر جوهرها. بينما نسبة متوسطة قد تعني مشهدًا مشابهًا بتفاصيل مختلفة تمامًا في الخلفية أو الزاوية أو الإضاءة العامة. تستخدم هذه القيمة للتحقق من عدم تكرار صورة في كتالوج منتجات كامل، أو للتأكد من أن صورتين مرسلتين من مصدرين مختلفين تُظهران الموضوع نفسه فعلًا لا موضوعين متشابهين فقط بالمصادفة.
الصيغ والحدود
تقبل الأداة JPG وPNG وWebP لكل صورة من الصورتين، حتى 15 MB و12 ميغابكسل للصورة الواحدة من كل منهما. تُعالج الصورتان لحساب نسبة التشابه بينهما ثم تُحذفان من خوادمنا مباشرة بعد إرجاع النتيجة إليك، دون الاحتفاظ بأي نسخة منهما لأي غرض لاحق آخر مهما كان، بما يضمن خصوصية كاملة لكل صورة تقارنها مهما كانت حساسيتها أو قيمتها الشخصية لديك.
حالات الاستخدام
التحقق من نسخة منتج مطابقة
يقارن متجر يديره عبدالله المنصوري صورة منتج جديدة وصلته من مورد بصورة المنتج الأصلي في كتالوجه، للتأكد أن المورد أرسل الصنف الصحيح فعلًا.
تتبع تكرار صورة في أرشيف
تقارن سارة النعيمي صورتين وصلتاها من زميلين مختلفين للتأكد من أنهما الملف نفسه بعد ضغط مختلف، قبل حفظ نسخة واحدة فقط في الأرشيف المشترك.
مطابقة صورة قبل وبعد
تقارن مؤسسة النخيل للمقاولات صورة موقع مشروع قبل التنفيذ وبعده لتوثيق نسبة التغيّر البصري بين الحالتين ضمن تقرير المشروع.
الأسئلة الشائعة
هل تكتشف الأداة تشابهًا حتى لو اختلف حجم الصورتين؟
نعم، يعتمد التحليل على محتوى الصورة بصريًا لا حجمها أو صيغتها، فتظهر نسبة تشابه دقيقة حتى بعد تغيير الحجم أو الصيغة.
ماذا تعني نسبة التشابه المنخفضة تحديدًا؟
تعني أن الصورتين تختلفان بدرجة كبيرة في المحتوى البصري، سواء كانتا مشهدين مختلفين تمامًا أو الصورة نفسها بتعديل كبير جدًا عليها.
كم تكلفة مقارنة صورتين؟
$0.002 للطلب الواحد إضافة إلى $0.0015 لكل صورة من الصورتين المقارنتين.
هل تُحفظ الصورتان بعد المقارنة؟
تُعالجان لحساب نسبة التشابه ثم تُحذفان من خوادمنا مباشرة بعد إرجاع النتيجة، ولا نحتفظ بأي نسخة منهما.
هل يمكن مقارنة أكثر من صورتين في الطلب نفسه؟
الأداة مخصصة لمقارنة صورتين في كل طلب. لمقارنة مجموعة كبيرة من الصور ببعضها، تُرسل عدة طلبات عبر الـAPI آليًا لكل زوج صور.
ما الفرق بين هذه الأداة وأداة البصمة الرقمية phash؟
أداة البصمة تولّد قيمة واحدة لكل صورة يمكن تخزينها ومقارنتها لاحقًا بسرعة، بينما تحسب هذه الأداة نسبة تشابه مباشرة بين صورتين محددتين في الطلب نفسه.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/compare \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/compare", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/compare",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/compare", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/compare", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"image": "https://ejemplo.com/imagen.jpg"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.compare",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 15 |
max_megapixels | 12 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |