استخرج نصوص صفحات PDF واجمعها بالترتيب
نصان من صفحتين، تقرير ربع سنوي وملحقه، يصبحان مستندًا واحدًا بينهما الفاصل --- PAGE BREAK ---، بالترتيب الذي أرسلته ومن دون إعادة كتابة أي شيء. مفيد بعد قارئ نصوص أو أداة تعرّف ضوئي. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
حوّل كتل النص المنفصلة لكل صفحة PDF إلى سلسلة واحدة ثابتة من دون فقدان حدود الصفحات. أرسل النص المستخرج مسبقًا من كل صفحة وفق ترتيبها، فتجمعه القدرة مع علامة واضحة بين الصفحات. لا تنفذ OCR ولا تنزّل ملف PDF أو تحلله، بل تنجز مرحلة التجميع الأخيرة لمسارات عمل تنتج كتلة نص لكل صفحة وتحتاج إلى مخرج مستقر قابل للبحث أو التصدير.
جهّز كتل الصفحات مرتبة
أرسل مصفوفة pages تحتوي على كائن واحد على الأقل، وضع النص المستخرج من كل صفحة PDF في الحقل text للكائن المقابل. يحدد موضع العنصر داخل المصفوفة ترتيب الصفحة؛ فالسجل الأول هو الصفحة الأولى والثاني هو الصفحة الثانية، وهكذا. لا تعيد القدرة الترتيب ولا تستنتج أرقام الصفحات ولا تفحص ملف PDF، لأن ذلك قد يغيّر بصمت ترتيبًا حدده المستخرج السابق.
يمكن لكل قيمة text أن تتضمن عناوين وفقرات وأسطرًا فارغة ومحارف Unicode، كما يمكن أن تكون سلسلة فارغة إذا لم تحتو الصفحة الفعلية على نص قابل للاستخراج. تُقبل الصفحة الفارغة ويظل موضعها ظاهرًا بفضل العلامات المجاورة. ومع ذلك، يجب أن يكون كل عنصر كائنًا يحتوي على text من نوع string؛ وتُرفض القيم المفقودة والأرقام والمصفوفات المتداخلة والأشكال الأخرى.
يمنع هذا العقد الصارم التحويلات العرضية. الحد الأقصى لكل طلب هو 10000 كتلة صفحة.
افهم صيغة النتيجة المجمعة
يحتوي text على السلاسل الأصلية بالترتيب نفسه الذي أُرسلت به. بين كل صفحتين متجاورتين، تضيف الخوارزمية سطرين جديدين ثم العلامة --- PAGE BREAK --- ثم سطرين آخرين. لا تضيف علامة قبل الصفحة الأولى أو بعد الأخيرة.
وباستثناء إضافة الفواصل، لا تقص الخوارزمية المحتوى ولا تطبّعه أو تعيد تدفقه أو تفسره أو تعيد كتابته. لذلك تبقى المسافات في البداية والأسطر النهائية والأسطر الفارغة المتكررة وعلامات الترقيم والكتابات غير اللاتينية كما وردت. هذا سلوك مقصود، لأن مرحلة التجميع ينبغي أن تحفظ المادة المستخرجة.
إذا احتجت لاحقًا إلى نص منقح، فطبّق عملية تطبيع مستقلة وواضحة. ولتقسيم النتيجة مجددًا، استخدم العلامة المعادة مع الأسطر الجديدة المحيطة بها.
أدرجها في مسار استخراج PDF
استخدم هذه القدرة بعد أن ينتج قارئ طبقة النص أو نظام OCR أو محلل المستندات أو مسار الرفع كتلة واحدة لكل صفحة. تفيد عندما يتوقع النظام التالي سلسلة واحدة، بينما لا تزال المراجعة أو أدوات البحث أو منطق الاقتباس تحتاج إلى حدود صفحات ظاهرة. يستطيع مسار فهرسة البحث جمع الصفحات قبل الفهرسة مع إبقاء مواضع انتقال السياق.
ويمكن لمسار الأرشفة حفظ تمثيل نصي ثابت بجوار المستند الأصلي. كما تستطيع معالجة اللغة تمرير النص الكامل من دون تعليم كل مستهلك طريقة اجتياز المصفوفات. تنتج المدخلات نفسها النتيجة نفسها دائمًا.
وتعتمد الجودة كليًا على الاستخراج السابق؛ لذا يجب إصلاح الأعمدة المضطربة والمحارف المفقودة والصفحات المصورة في مرحلة الاستخراج أو OCR.
حالات الاستخدام
إعداد النص لفهرسة البحث
اجمع نتائج الصفحات في سلسلة قابلة للفهرسة مع إبقاء حدود صريحة للمراجعة وإبراز النتائج.
تجميع مخرجات OCR
ادمج الصفحات التي جرى التعرف عليها منفردة كي يتلقى التلخيص أو التصنيف مستندًا مرتبًا.
إنشاء نص مرافق للأرشيف
احفظ تمثيلًا نصيًا حتميًا بجوار ملف PDF مع إبقاء الانتقالات بين الصفحات ظاهرة.
الأسئلة الشائعة
هل تقرأ هذه القدرة ملف PDF نفسه؟
لا. تستقبل كتل نص مستخرجة مسبقًا من الصفحات المنفردة ولا تنفذ سوى تجميعها بالترتيب.
هل يمكن أن يكون نص الصفحة سلسلة فارغة؟
نعم. تمثل صفحة بلا نص مستخرج وتحافظ على موضعها الأصلي بين الحدود.
ما الذي يفصل الصفحة عن التي تليها في النتيجة؟
علامتا سطر جديد، ثم الفاصل --- PAGE BREAK ---، ثم علامتا سطر جديد أخريان. ولا يُضاف شيء قبل الصفحة الأولى أو بعد الأخيرة، فيبدأ النص وينتهي تمامًا كما أرسلته.
هل تُنظَّف المسافات أو فواصل الأسطر في نصي؟
لا. تبقى المسافات في بداية الأسطر وفواصل الأسطر في نهايتها والأسطر الفارغة المتكررة وعلامات الترقيم والكتابات غير اللاتينية كما هي. وإن أردت نصًا مرتبًا فطبّق بعد ذلك خطوة تنظيف منفصلة وواضحة.
هل يمكن تقسيم النص المجمّع إلى صفحات من جديد؟
نعم، بالقطع عند الفاصل مع فواصل الأسطر المحيطة به. لكن انتبه إلى أن النص الحرفي نفسه قد يكون موجودًا أصلًا داخل إحدى الصفحات، فمن الأفضل التحقق من ذلك قبل الاعتماد على التقسيم.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/pdf/extract-text \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"text":"Quarterly report\nRevenue increased by 12%."},{"text":"Appendix\nFigures are unaudited."}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/extract-text", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/extract-text",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/extract-text", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"text":"Quarterly report\\nRevenue increased by 12%."},{"text":"Appendix\\nFigures are unaudited."}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"text":"Quarterly report\nRevenue increased by 12%."},{"text":"Appendix\nFigures are unaudited."}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/extract-text", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.extract_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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
افهم صيغة النتيجة المجمعة
تعيد الاستجابة الحقول text وpages وpage_break_marker. يبين pages عدد الكتل التي جُمعت، ويتيح page_break_marker للبرمجيات اللاحقة معرفة الفاصل.
أدرجها في مسار استخراج PDF
المعالجة حتمية ومحلية ضمن JSON المرسل؛ فلا تستخدم الشبكة أو العشوائية أو الوقت الحالي أو OCR أو فك PDF. تبلغ كلفة الطلبات الآلية $0.002.
أسئلة تقنية
ما العلامة التي تفصل بين الصفحات؟
تضيف --- PAGE BREAK --- محاطة بسطرين جديدين من كل جانب، وتعيدها أيضًا في page_break_marker.
ماذا يحدث إذا لم أرسل أي صفحات؟
يفشل الطلب بخطأ invalid_input لأن وجود كتلة صفحة واحدة على الأقل إلزامي.
كم تبلغ كلفة الطلب؟
تستخدم الطلبات الآلية السعر الأساسي المنشور $0.002، ولا توجد رسوم إضافية لكل صفحة.