This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

البحث عن التكرارات

ارفع صوراً متعددة لاكتشاف التكرارات وشبه التكرارات باستخدام التجزئة الإدراكية (dHash). يجمّع الصور المتشابهة معاً، ويحدد أفضل نسخة جودة في كل مجموعة، ويحسب التوفير المحتمل في المساحة.

نقطة نهاية API

POST /api/v1/tools/image/find-duplicates

يقبل بيانات نموذج multipart تحتوي على ملفات صور متعددة وحقل JSON اختياري settings.

المعاملات

المعاملالنوعمطلوبالافتراضيالوصف
thresholdnumberلا8أقصى مسافة Hamming لاعتبار الصور مكررة (0 إلى 20). أقل = مطابقة أكثر صرامة

حقول الملفات

ارفع صورتين على الأقل في طلب multipart (جميعها باستخدام اسم الحقل file أو أي اسم حقل لأجزاء الملفات).

مثال على طلب

bash
curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
  -H "Authorization: Bearer si_your-api-key" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={"threshold": 8}'

مثال على استجابة

json
{
  "totalImages": 4,
  "duplicateGroups": [
    {
      "groupId": 1,
      "files": [
        {
          "filename": "photo1.jpg",
          "similarity": 100,
          "width": 4032,
          "height": 3024,
          "fileSize": 2450000,
          "format": "jpeg",
          "isBest": true,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        },
        {
          "filename": "photo2.jpg",
          "similarity": 96.88,
          "width": 1920,
          "height": 1440,
          "fileSize": 850000,
          "format": "jpeg",
          "isBest": false,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        }
      ]
    }
  ],
  "uniqueImages": 2,
  "spaceSaveable": 850000,
  "skippedFiles": []
}

حقول الاستجابة

الحقلالنوعالوصف
totalImagesnumberعدد الصور التي تم تحليلها بنجاح
duplicateGroupsarrayمجموعات الصور المكررة
uniqueImagesnumberعدد الصور التي ليست جزءاً من أي مجموعة تكرار
spaceSaveablenumberإجمالي البايتات التي يمكن توفيرها بإزالة التكرارات غير الأفضل
skippedFilesarrayالملفات التي تعذّرت معالجتها (مع اسم الملف والسبب)

كائن مجموعة التكرار

الحقلالنوعالوصف
groupIdnumberمعرّف المجموعة
filesarrayالصور في مجموعة التكرار هذه

كائن الملف (ضمن مجموعة)

الحقلالنوعالوصف
filenamestringاسم الملف الأصلي
similaritynumberنسبة التشابه مع الصورة المرجعية (الأولى في المجموعة)
widthnumberعرض الصورة بالبكسل
heightnumberارتفاع الصورة بالبكسل
fileSizenumberحجم الملف بالبايت
formatstringصيغة الصورة
isBestbooleanما إذا كانت هذه أعلى نسخة جودة (أكثر بكسلات، أكبر ملف)
thumbnailstring أو nullصورة مصغرة Base64 JPEG (بعرض 200 بكسل) للمعاينة

ملاحظات

  • يستخدم dHash بحجم 128 بت (64 بت للصف + 64 بت للعمود) لاكتشاف التشابه الإدراكي. هذا يلتقط التكرارات حتى عبر إعادة التحجيم وإعادة الضغط والتعديلات الطفيفة.
  • يمثّل العتبة أقصى مسافة Hamming بين التجزئات. الافتراضي 8 يلتقط شبه التكرارات مع تجنّب النتائج الإيجابية الخاطئة. استخدم 0 للتطابق البكسلي فقط، أو 15-20 للمطابقة الفضفاضة جداً.
  • الصورة "الأفضل" في كل مجموعة هي التي تحتوي على أكثر بكسلات (العرض × الارتفاع)، مع حجم الملف كعامل فاصل.
  • مطلوب صورتان على الأقل. تُبلَّغ الملفات التي تفشل في التحقق أو فك الترميز في skippedFiles بدلاً من التسبب في فشل الطلب بأكمله.
  • الصور المصغرة هي معاينات JPEG بعرض 200 بكسل مُرمّزة كـ data URIs.
  • جميع الصيغ الشائعة مدعومة (HEIC وRAW وPSD وSVG تُفك ترميزها تلقائياً).