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