قارن نص ملفي PDF وحدد الصفحات المختلفة
قارن ملفي PDF من دون التنقل المتكرر بين النوافذ أو الاعتماد على الفحص البصري وحده.
شغّل الأداة مجانًا
قدم النص المستخرج من كل مستند في سلسلة مستقلة لكل صفحة، وستوضح هذه الأداة أرقام الصفحات المختلفة بدقة. تحصل كل صفحة معدلة على ملخص قصير وحتمي يتضمن عدد الكلمات المضافة أو المحذوفة والكلمات نفسها. كما تحدد الأداة الصفحات الموجودة في إصدار واحد فقط. تعمل المقارنة من دون اتصال بالشبكة، وتحافظ على ترتيب الصفحات، وترفض أي مستند لا يحتوي على نص مستخرج.
جهز النص مع الحفاظ على بنية الصفحات
ابدأ بالنص المستخرج مسبقاً من ملفي PDF. قدم كل مستند في مصفوفة مرتبة تكون فيها السلسلة الأولى للصفحة الأولى، والثانية للصفحة الثانية، وهكذا. يعد الحفاظ على حدود الصفحات ضرورياً لأن النتيجة تعرض الفروق بحسب رقم الصفحة بدلاً من معاملة المستند كله على أنه كتلة نصية واحدة. قد تنتج أدوات الاستخراج مسافات أو علامات جدولة أو فواصل أسطر متكررة، لذلك توحد المقارنة المسافات قبل تحديد ما إذا كان النص قد تغير. يمنع ذلك الإبلاغ عن صفحة لمجرد أن أداة استخراج أخرى قسمت جملة بطريقة مختلفة. لا تجري الأداة التعرف الضوئي على الحروف، ولا تفتح ملفات PDF، ولا تستنتج حدود الصفحات المفقودة. إذا كان المستند الممسوح ضوئياً بلا طبقة نصية، فأجر OCR أولاً ثم قدم ناتجه مفصولاً بحسب الصفحات. راجع جودة الاستخراج عندما تسبب الخطوط أو الأعمدة أو الجداول ترتيب قراءة غير مألوف. يجب أن يحتوي كل إدخال على صفحة واحدة على الأقل بها نص يتجاوز المسافات البيضاء، وإلا يعاد خطأ إدخال بدلاً من نتيجة مساواة مضللة.
افهم طريقة تلخيص الصفحات المتغيرة
تقارن الأداة مواضع الصفحات المتناظرة بعد توحيد المسافات البيضاء. ولا ينشئ النص المتطابق بعد التوحيد أي سجل فرق. عندما تتغير صفحة، يقسم الملخص النسختين إلى كلمات، ويقارن تكرار الكلمات من دون اعتبار حالة الأحرف، ثم يوضح عدد الكلمات المحذوفة والمضافة. تعرض معاينة موجزة ما يصل إلى خمس كلمات محذوفة وخمس كلمات مضافة، مما يسهل اكتشاف مبلغ أو تاريخ أو اسم طرف أو مصطلح تعاقدي محدث. تحتفظ الأعداد بالتكرارات، ولذلك يسجل حذف المصطلح نفسه مرتين عمليتي حذف. إذا تطابقت الكلمات لكن اختلف ترتيبها أو حالة أحرفها أو علامات ترقيمها، تظل الصفحة موسومة بأنها معدلة ويوضح الملخص السبب. هذا تشخيص موجز وليس تصحيحاً تفصيلياً لكل حرف. لا تحاول الأداة تخمين الأهمية الدلالية، ولا تدعي أن عبارتين مختلفتين تحملان المعنى نفسه. استخدم أرقام الصفحات المدرجة لتوجيه مراجعة بشرية مركزة، ولا سيما في العقود والقوائم المالية والمستندات الخاضعة للتنظيم.
فسر الصفحات المفقودة واستخدم النتيجة بأمان
لا تتساوى المستندات دائماً في عدد الصفحات. عندما يحتوي أحد الإدخالين على مواضع إضافية، يبلغ عن كل صفحة زائدة بأنها موجودة في PDF A فقط أو PDF B فقط، مع عدد كلماتها المستخرجة. تتضمن النتيجة العليا إجمالي صفحات المستندين، وقائمة مرتبة بأرقام الصفحات المختلفة، وسجلاً مفصلاً لكل فرق، ومؤشر مساواة مناسباً للأتمتة. يفيد ذلك في فحوص النشر ومسارات الموافقة والتحقق من الأرشيف وعمليات إدخال المستندات. يعني مؤشر المساواة الصحيح أن النص الموحد تطابق صفحة بصفحة؛ لكنه لا يثبت تطابق الصور أو التعليقات أو التوقيعات أو الألوان أو الخطوط أو البيانات الوصفية أو الطبقات المخفية أو المواضع الهندسية. وفي المقابل، قد تعكس فروق الاستخراج اختلافاً في ترميز PDF لا تعديلاً تحريرياً مقصوداً. عند المراجعة عالية الأهمية، تعامل مع التقرير وسيلة موثوقة لتحديد مواضع الفروق النصية، ثم افحص الصفحات الأصلية وطبق الحكم القانوني أو المالي أو التشغيلي الملائم للمستند.
حالات الاستخدام
مراجعة عقد منقح
حدد الصفحات التي تغيرت صياغتها المستخرجة قبل فحص البنود المتأثرة في النسخ الأصلية الموقعة أو المقترحة.
فحص تقرير قبل النشر
قارن نص المسودة والنص النهائي لاكتشاف المبالغ والتواريخ والتسميات المتغيرة أو الصفحات المضافة والمحذوفة بالخطأ.
أتمتة التحكم في إصدارات المستندات
استخدم مؤشر المساواة وقائمة الصفحات المختلفة لإرسال إصدارات PDF المتغيرة فقط إلى مسار موافقة يدوي.
الأسئلة الشائعة
هل تقبل هذه الأداة ملفات PDF مباشرة؟
لا. تقبل نصاً مستخرجاً مسبقاً ومنظماً في سلسلة واحدة لكل صفحة.
ماذا يحدث إذا كان أحد الإدخالين فارغاً؟
يفشل الطلب بخطأ إدخال غير صالح. يجب أن يتضمن كل PDF صفحة واحدة على الأقل تحتوي على نص مستخرج يتجاوز المسافات.
هل تعد فواصل الأسطر والمسافات المتكررة تغييرات؟
لا. توحد المسافات قبل فحص تطابق الصفحات، ولذلك تتجاهل فروق الالتفاف الناتجة عن الاستخراج وحده.
هل تستطيع اكتشاف الفروق المرئية أو فروق التنسيق؟
لا. تقارن النص المستخرج فقط، ولا تفحص الصور أو الطباعة أو التعليقات أو التوقيعات أو البيانات الوصفية أو هندسة الصفحة.
كيف يبلغ عن الصفحات المضافة أو المحذوفة؟
يسجل موضع الصفحة غير المتناظر على أنه موجود في PDF A فقط أو PDF B فقط، مع عدد كلماته المستخرجة.
ما تكلفة المقارنة؟
تبلغ تكلفة كل طلب API مقدار $0.002. ويمكن أيضاً تشغيل التطبيق الحتمي في المتصفح من دون اتصال بالشبكة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/compare-text \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages_a":["Quarterly report\nRevenue was $2.4 million.","Operating expenses were $1.1 million."],"pages_b":["Quarterly report\nRevenue was $2.7 million.","Operating expenses were $1.1 million."]}'const res = await fetch("https://api.kit.forhosting.com/pdf/compare-text", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages_a": [
"Quarterly report\nRevenue was $2.4 million.",
"Operating expenses were $1.1 million."
],
"pages_b": [
"Quarterly report\nRevenue was $2.7 million.",
"Operating expenses were $1.1 million."
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/compare-text",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages_a": [
"Quarterly report\nRevenue was $2.4 million.",
"Operating expenses were $1.1 million."
],
"pages_b": [
"Quarterly report\nRevenue was $2.7 million.",
"Operating expenses were $1.1 million."
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/compare-text", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages_a":["Quarterly report\\nRevenue was $2.4 million.","Operating expenses were $1.1 million."],"pages_b":["Quarterly report\\nRevenue was $2.7 million.","Operating expenses were $1.1 million."]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages_a":["Quarterly report\nRevenue was $2.4 million.","Operating expenses were $1.1 million."],"pages_b":["Quarterly report\nRevenue was $2.7 million.","Operating expenses were $1.1 million."]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/compare-text", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pages_a": [
"Quarterly report\nRevenue was $2.4 million.",
"Operating expenses were $1.1 million."
],
"pages_b": [
"Quarterly report\nRevenue was $2.7 million.",
"Operating expenses were $1.1 million."
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.compare_text",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
max_pages | 200 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |