عدّاد كلمات وأحرف وصفحات PDF
صفحتان فيهما 11 و8 كلمات تعطيان 19 كلمة و93 حرفًا و75 دون مسافات، بمتوسط 9.5 كلمة في الصفحة. الصق نص كل صفحة بالترتيب لتتحقق من الرسائل الجامعية أو المذكرات أو البروفات أمام حدود الطول. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
يُعدّ حساب كلمات ملف PDF خطوة روتينية للطلاب والمحررين والمترجمين وفرق الامتثال الذين يعملون ضمن حدود للصفحات والطول. تأخذ هذه الأداة النص المستخرج لكل صفحة من ملف PDF — مصفوفة من السلاسل النصية بترتيب الصفحات — وتُعيد مجاميع حتمية: إجمالي الكلمات، وإجمالي الأحرف مع المسافات وبدونها، وعدد الصفحات، ومتوسط الكلمات لكل صفحة، وتفصيلًا لكل صفحة يتيح لك رصد الصفحة الضعيفة أو المكتظة بنظرة واحدة. ولأن المدخل نص مستخرج مسبقًا، فلا توجد معالجة ثنائية ولا مخاطرة بحجم الرفع ولا اعتماد على مكتبة PDF معينة: أي مستخرج يُنتج نصًا لكل صفحة يصلح لتغذيتها.
كيف تُحسب أعداد الكلمات والأحرف والصفحات
يقسم عدّ الكلمات نص كل صفحة عند المسافات البيضاء وفق Unicode ويحسب كل مقطع غير فارغ، وهو ما يطابق سلوك أشرطة الحالة في المحررات والعدّادات الشائعة على الإنترنت: مقطع موصول بشرطات مثل state-of-the-art يُحسب كلمة واحدة، وتتسلسل المسافات والعلامات الجدولية وفواصل الأسطر المتتالية في فاصل واحد. أما عدد الأحرف فهو الطول الكامل لنص الصفحة كما استُخرج تمامًا، بما فيه المسافات وفواصل الأسطر، بينما يزيل الإجمالي الثاني كل المسافات البيضاء لتقارن طول المحتوى الصافي عندما يُضخّم التنسيق الرقم.
وعدد الصفحات هو ببساطة عدد عناصر مصفوفة الإدخال، لأن كل عنصر يمثل صفحة PDF واحدة بالترتيب — لذا تعتمد دقة التفصيل على المستخرج الذي استخدمته سابقًا. يقسم متوسط الكلمات لكل صفحة إجمالي الكلمات على عدد الصفحات ويقرّبه إلى منزلتين عشريتين، مما يسهّل مقارنة المخطوطات والتقارير والأطروحات مختلفة الأطوال بمقياس عادل واحد. تساهم الصفحات الفارغة أو ذات المسافات فقط بصفر كلمة لكنها تُحسب ضمن الصفحات، كما يراها القارئ عند تصفح مستند يتضمن فراغات مقصودة.
أين تظهر أعداد كلمات صفحات PDF في العمل الحقيقي
يتحقق الطلاب والباحثون من متطلبات طول الأطروحات والرسائل بعد تصدير النص من ملف PDF النهائي، بمقارنة الإجمالي الكلي ومتوسط الكثافة لكل صفحة بقواعد الكلية. ويستخدم المحررون وفرق الإنتاج عند مراجعة المطبوعات التجريبية التفصيلَ لكل صفحة لاكتشاف الصفحات شبه الفارغة أو الصفحات المكتظة أو الفصول التي تنحرف كثافتها كثيرًا عن متوسط الكتاب قبل إرسال الملفات إلى الطباعة. ويقدّر المترجمون ومورّدو التعريب الجهد والتكلفة من مجاميع الكلمات عندما لا يستطيع العميل تقديم سوى النص المصدَّر من المستند المصدر بدل الملفات القابلة للتحرير.
وتؤكد فرق القانون والامتثال أن الملفات المقدَّمة تبقى دون حدود الكلمات التي تفرضها المحاكم أو الجهات التنظيمية، إذ قد يعني تجاوز الحد رفض التقديم وفوات الموعد النهائي. ويخزّن مهندسو البيانات الذين يبنون خطوط معالجة المستندات أعداد الكلمات والأحرف لكل صفحة كمقاييس جودة، معلمين على الصفحات التي لم يُرجع الاستخراج منها شيئًا — وهي إشارة موثوقة إلى صفحات صور ممسوحة تحتاج إلى OCR بدل استخراج النص. ويقارن الأرشيفيون بين نسختين من تقرير بمطابقة أعداد الصفحات لكشف الصفحات المحذوفة أو المكررة بصمت.
ولأن هذه القدرة تستهلك نصًا مستخرجًا مسبقًا، فهي تتكامل بسلاسة مع أي مستخرج سابق ولا تعيد تحليل ملفات PDF الثنائية أبدًا؛ وإن احتجت إلى تحليل الملف الثنائي نيابة عنك، فتلك قدرة منفصلة مثل pdf.stats.
حالات الاستخدام
التحقق من طول الأطروحات والملفات المقدَّمة
صدّر نص PDF لكل صفحة وتحقق من إجمالي الكلمات ومتوسط الصفحة مقابل حدود الكلمات في الجامعة أو المحكمة قبل التقديم.
مراجعة كثافة المطبوعات التجريبية
افحص التفصيل لكل صفحة بحثًا عن صفحات شبه فارغة أو مكتظة وفصول تنحرف عن متوسط كثافة المستند.
مراقبة جودة الاستخراج
علّم على الصفحات ذات الكلمات الصفرية في خطوط معالجة المستندات بوصفها صورًا ممسوحة محتملة تحتاج إلى OCR، مستخدمًا أعداد الصفحات كإشارة جودة.
الأسئلة الشائعة
ما المدخل الذي تتوقعه هذه الأداة؟
يُقبل البديلان text أو content كسلسلة واحدة وتُعاملان كمستند من صفحة واحدة.
كيف تُحسب الكلمات؟
الكلمات مقاطع غير فارغة تفصل بينها مسافات بيضاء وفق Unicode. تنهار المسافات والعلامات الجدولية وفواصل الأسطر المتعددة في فاصل واحد، ويُحسب المقطع الموصول بشرطات كلمة واحدة.
هل تُحسب الصفحات الفارغة؟
نعم. الصفحة الفارغة أو ذات المسافات فقط تساهم بصفر كلمة لكنها تظل محسوبة ضمن إجمالي الصفحات، تمامًا كما يراها القارئ في المستند.
ماذا يحدث إذا كان المدخل فارغًا؟
غياب pages أو مصفوفة فارغة أو صفحات لا تحوي كلمات مجتمعةً تُعامل أخطاء من جانب العميل ولا تُحتسب.
لماذا يوجد مجموعان للأحرف؟
الأول يعدّ النص كما استُخرج بمسافاته وفواصل أسطره، والثاني يحذف كل المسافات البيضاء. ويفيد الثاني في مقارنة المحتوى الصافي حين يضخّم حشو التنسيق الرقم.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/count-words \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":["Chapter One\n\nThe quick brown fox jumps over the lazy dog.","A second page with only a few words."]}'const res = await fetch("https://api.kit.forhosting.com/pdf/count-words", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
"Chapter One\n\nThe quick brown fox jumps over the lazy dog.",
"A second page with only a few words."
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/count-words",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
"Chapter One\n\nThe quick brown fox jumps over the lazy dog.",
"A second page with only a few words."
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/count-words", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":["Chapter One\\n\\nThe quick brown fox jumps over the lazy dog.","A second page with only a few words."]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":["Chapter One\n\nThe quick brown fox jumps over the lazy dog.","A second page with only a few words."]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/count-words", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pages": [
"Chapter One\n\nThe quick brown fox jumps over the lazy dog.",
"A second page with only a few words."
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.count_words",
"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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يُرفض المدخل الفارغ — صفحات مفقودة أو مصفوفة فارغة أو صفحات بلا كلمات إطلاقًا — بخطأ invalid_input واضح بدلًا من أصفار صامتة. تتشارك الأداة المجانية في المتصفح وواجهة API المدفوعة دالة واحدة نقية متجانسة، فلا تختلف العروض والسكربتات وخطوط الإنتاج على المستند نفسه أبدًا.
كيف تُحسب أعداد الكلمات والأحرف والصفحات
كل قاعدة هنا حساب نصي صرف بلا اتصالات شبكية ولا عشوائية ولا اعتماد على الساعة، فالمدخل نفسه ينتج دائمًا JSON مطابقًا بايتًا ببايت يمكنك اختباره وتخزينه بأمان. تُرفض الصفحات غير النصية عنصرًا عنصرًا مع رسالة تذكر رقم الصفحة المخالفة، ويفشل النص المجمع الذي يتجاوز الحد الموثق للأحرف فورًا بخطأ invalid_input حتى لا يحتكر طلب واحد ضخم ذاكرة Worker.
ما الذي ترسله وما الذي تحصل عليه
المثال النمطي الناجح مقال من صفحتين يكون مجموعه ناتج جمع الصفحتين ويقع المتوسط بين رقميهما، ومستند يتضمن صفحات فارغة مقصودة يظل يُبلّغ عن عدد الصفحات الصحيح بصفر كلمة. استخدم نموذج المتصفح المجاني للفحص السريع باللصق للنصوص المصدّرة، ثم استدعِ العقد نفسه من السكربتات عند تدقيق أرشيف كامل من المستندات المستخرجة. أرسل حقلًا واحدًا إلزاميًا باسم pages: مصفوفة من السلاسل النصية تحمل النص المستخرج لكل صفحة PDF بترتيب القراءة. وللتيسير، يُقبل الاسمان البديلان text وcontent كسلسلة واحدة تُعامل كمستند من صفحة واحدة، ويعمل pages_text كاسم بديل للمصفوفة عند ربط العملاء القدامى. عند النجاح يُعيد الرد الحقول pages وtotal_words وtotal_characters وtotal_characters_no_spaces وwords_per_page_average، ومصفوفة per_page تتضمن رقم الصفحة والكلمات والأحرف وcharacters_no_spaces لكل صفحة، مع operation مضبوطة على pdf_count_words. حالات الخطأ صريحة ولا تُحتسب أبدًا: غياب حقل pages، أو قيمة ليست مصفوفة، أو مصفوفة فارغة، أو عناصر غير نصية، أو تجاوز عدد الصفحات أو الطول المجمع الحدود الموثقة، أو صفحات لا تحوي كلمات مجتمعةً — كلها تُطلق invalid_input برسالة توضح القاعدة التي فشلت بالضبط. تسعير طلبات API الناجحة هو الأساس المنشور $0.002 لكل عنصر؛ أما إخفاقات التحقق فلا تستهلك الرصيد المدفوع مسبقًا. ويشغّل شكل JSON نفسه أداة المتصفح المولّدة تلقائيًا، فتبقى الفحوص التفاعلية وخطوط الأتمتة متوافقة على كل اسم حقل.
أين تظهر أعداد كلمات صفحات PDF في العمل الحقيقي
تسعير API هو الأساس المنشور $0.002 لكل عنصر ناجح، والمدخل غير الصالح لا يُحتسب أبدًا، مما يجعل تدقيق الأرشيف بالجملة متوقع التكلفة.
أسئلة تقنية
كم التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل عنصر ناجح؛ والمدخل غير الصالح لا يُحتسب.