بديل ذكي لمقارنة الصور يدويًا
أداة من KIT تولّد بصمة رقمية قصيرة تمثل محتوى الصورة بصريًا، تُستخدم لاكتشاف نسخ مكررة أو مشابهة حتى بعد تغيير حجمها أو ضغطها بدرجة ما. تعمل بالكامل داخل متصفحك دون رفع الملف لأي خادم، ومناسبة لمن يدير كمية كبيرة من الصور ويحتاج تنظيفها من التكرار.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
بصمة تصمد أمام التعديلات البسيطة
مقارنة صورتين بحثًا عن تطابق حرفي في البيانات تفشل بمجرد تغيير حجم الصورة أو ضغطها قليلًا، رغم أنها بصريًا الصورة نفسها تمامًا دون أي فرق يُذكر للعين المجردة. البصمة الرقمية تعمل بمنطق مختلف تمامًا: تحلل محتوى الصورة بصريًا لا بياناتها الخام، فتبقى متقاربة جدًا لصورتين متشابهتين حتى بعد تغيير الحجم أو الصيغة أو درجة الضغط تغييرًا ملموسًا لا يخفى على أي فاحص.
اكتشاف منتجات مصوَّرة مسروقة
متجر إلكتروني يعرض آلاف المنتجات يواجه أحيانًا مشكلة صور منسوخة من متجر آخر بعد تعديل بسيط في الحجم أو القص أو إضافة إطار خفيف حول الصورة. بمقارنة بصمة كل صورة جديدة ببصمات الأرشيف الحالي، تكتشف النسخ المشابهة بصريًا حتى لو لم تكن متطابقة حرفيًا في الملف نفسه، وهي طريقة أدق بكثير من المقارنة اليدوية بالعين المجردة وحدها التي تستهلك وقتًا طويلًا دون ضمان نتيجة موثوقة في النهاية.
تنظيف أرشيف صور مكرر
أرشيف صور كبير يتجمع فيه أحيانًا نسخ مكررة من الصورة نفسها بأحجام أو صيغ مختلفة، نتيجة استيراد من مصادر متعددة على مدى سنوات طويلة من العمل المستمر. تولّد بصمة كل صورة وتقارنها ببصمات الأرشيف كاملًا، فتحدد النسخ المتشابهة بدقة وتحتفظ بنسخة واحدة فقط من كل صورة بدل تكرار المساحة والفوضى في التنظيم العام للملفات المخزَّنة لديك على مر السنوات.
الصيغ والحدود
تقبل الأداة JPG وPNG وWebP حتى 15 MB و12 ميغابكسل، وتعيد بصمة نصية قصيرة لكل صورة ترفعها دون استثناء لأي ملف مهما كان حجمه. مقارنة البصمات نفسها — لمعرفة درجة التشابه الدقيقة بين صورتين — تتم عبر أداة المقارنة المستقلة المخصصة لهذا الغرض تحديدًا وليس عبر هذه الأداة نفسها المخصصة فقط لتوليد البصمات لا لمقارنتها لاحقًا ببعضها البعض.
حالات الاستخدام
تنظيف مكتبة صور شركة
تراكمت لدى شركة الخليج الرقمية آلاف الصور من سنوات متعددة، بعضها مكرر بأحجام مختلفة. تولّد بصمة لكل صورة وتحدد التكرارات، فتوفر مساحة تخزين كبيرة.
اكتشاف نسخ منتج مسروقة
يشك متجر يديره خالد العتيبي أن صور منتجاته تُنسخ إلى متاجر أخرى بعد تعديل بسيط. يقارن بصمات صوره الأصلية بصور منافسين مشتبه بهم فيؤكد التطابق البصري.
فحص أرشيف صحفي قديم
يفحص أرشيف صحفي بصمات آلاف الصور المؤرشفة لاكتشاف النسخ المكررة التي دخلت الأرشيف من مصادر مختلفة على مدار سنوات.
الأسئلة الشائعة
ما الفرق بين البصمة الرقمية ومقارنة الملفات مباشرة؟
مقارنة الملفات تفشل بمجرد تغيير حجم الصورة أو صيغتها، أما البصمة الرقمية فتحلل محتوى الصورة بصريًا وتبقى متقاربة لصورتين متشابهتين حتى بعد تعديلات بسيطة عليهما.
هل يمكنني مقارنة بصمتين مباشرة بهذه الأداة؟
هذه الأداة تولّد البصمة فقط. لمقارنة بصمتين أو صورتين ومعرفة درجة التشابه بينهما، توجد أداة مقارنة الصور المخصصة لذلك.
هل الأداة مجانية؟
نعم، تعمل داخل متصفحك دون رفع الصورة، وبلا حد استخدام أو تسجيل.
هل تُرفع صوري لتوليد البصمة؟
لا، يجري التحليل بالكامل داخل متصفحك، ولا تغادر الصور جهازك.
هل يمكن توليد بصمات لأرشيف كبير من الصور تلقائيًا؟
نعم، عبر الـAPI تولّد بصمة لكل صورة في أرشيف كامل دفعة واحدة، مفيد عند تنظيف مكتبة صور كبيرة.
هل تكتشف البصمة صورًا متشابهة في المحتوى لكن مختلفة تمامًا في التصوير؟
لا، البصمة مخصصة لاكتشاف نسخ الصورة نفسها بعد تعديلات بسيطة، لا لمقارنة مشاهد مختلفة تحمل موضوعًا مشابهًا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/phash \
-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/phash", {
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/phash",
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/phash", 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/phash", 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.phash",
"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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |