توسيع الروابط الطباعية وتصحيح fi وfl
قد يحتوي النص المنسوخ من ملف PDF أو مجلة أو كتاب إلكتروني أو مستند منضّد باحتراف على محارف Unicode منفردة تبدو مثل أزواج مألوفة من الحروف فقط.
شغّل الأداة مجانًا
قد تظهر كلمة تتضمن fi صحيحة على الشاشة، لكنها لا تظهر في بحث مطابق عن fi. توسّع هذه الأداة الروابط الطباعية إلى حروفها العادية من دون تغيير الكلمات المحيطة أو علامات الترقيم أو المسافات أو فواصل الأسطر. وبذلك يصبح النص الناتج أسهل في البحث والفهرسة والمقارنة والاقتباس والإرسال إلى الأنظمة التي تتوقع نصاً تقليدياً.
لماذا يصعب البحث في نص يبدو صحيحاً بصرياً
تستبدل برامج التنضيد أحياناً حرفين أو ثلاثة أحرف متجاورة برمز طباعي مرتبط واحد. ويشيع ذلك خصوصاً مع fi وfl وff وffi وffl لأن أشكالها قد تتلامس في خط مصمم بعناية. عندما يعرض ملف PDF ذلك الرمز كمحرف تقديم في Unicode، فإن نسخ الصفحة يحفظ الرابطة بدلاً من الحروف التي تمثلها. تبدو الكلمة الملصقة طبيعية للقارئ، لكن البرنامج قد يقرأ تسلسلاً مختلفاً من نقاط الترميز. لذلك لا يطابق البحث الحرفي عن «file» بالضرورة كلمة منسوخة تبدأ بالمحرف المفرد fi. وقد يؤثر الاختلاف نفسه في فهارس المستندات وكشف التكرار واستعلامات قواعد البيانات والبحث بسطر الأوامر وتحسين إمكانية الوصول ومقارنة النصوص. تعالج هذه الإمكانية تلك المشكلة المحددة مباشرة؛ فهي تحول محارف الروابط المدعومة إلى تسلسلات عادية من الحروف اللاتينية، وتحافظ على حالة الحروف عند وجود صيغة كبيرة، وتبقي جميع المحارف الأخرى كما هي، بما فيها علامات النبر والترقيم وعلامات الجدولة والمسافات ونهايات الأسطر.
ما الذي يغيره التوسيع وما الذي يحافظ عليه
أدخل المصدر في حقل النص، وستتلقى النص الموسع مع عدد الاستبدالات. تتعرف الخوارزمية على صيغ العرض في Unicode لكل من ff وfi وfl وffi وffl، إضافة إلى الصيغتين التاريخيتين للرابطة st. كما توسع حرفي الرابطة الشائعين AE وOE بصيغتيهما الكبيرة والصغيرة، فتنتج AE أو ae أو OE أو oe بحسب الحالة. يُحسب كل محرف معروف استبدالاً واحداً حتى إن تحول إلى ثلاثة أحرف. يفيد هذا العدد في التحقق مما إذا كان المقطع الملصق يتضمن بالفعل تنسيقاً مخفياً. المعالجة حتمية وتتم في مرور واحد؛ فالمدخل نفسه يعطي دائماً المخرج نفسه، ولا يحاول أي نموذج لغوي تخمين مقصد المؤلف. لا تطبّع الأداة علامات النبر، ولا تغير علامات الاقتباس، ولا تدمج المسافات، ولا تصحح الإملاء، ولا تستبدل الشرطات. وإذا احتوى المستند على أخطاء OCR بدلاً من روابط حقيقية، فإنها تبقى ظاهرة لمعالجتها في خطوة تصحيح منفصلة.
استخدام النص المنظف في البحث ومسارات المستندات
يكون توسيع الروابط أنسب مباشرة بعد استخراج النص أو نسخه إلى الحافظة، وقبل الفهرسة أو المقارنة أو تجزئة النص. لمعالجة مقطع واحد، ألصق النص ثم استخدم النتيجة في مربع بحث أو ملاحظة أو مدير مراجع أو ملف نص عادي. وفي مسار آلي، طبّق الإمكانية بصورة متسقة على المستندات المخزنة واستعلامات البحث الواردة إذا كان أي منهما قد أتى من مادة منضّدة. يمنع هذا الاتساق تمثيل كلمة متطابقة بصرياً بطريقة مختلفة في الفهرس والاستعلام. يبلغ السعر الأساسي لاستخدام API مقدار $0.002 لكل طلب، ويعالج الطلب عنصراً نصياً واحداً. ولأن التحويل لا يعتمد على الشبكة ولا يستخدم نموذجاً احتماليّاً، فهو مناسب أيضاً للاختبارات القابلة للتكرار وتنظيف المحفوظات. احتفظ بالمصدر الأصلي عندما يكون إثبات المنشأ مهماً، لأن التوسيع يغير نقاط الترميز عمداً، مع أنه يحافظ عادة على طريقة قراءة المقطع. ونفّذ تطبيع علامات الاقتباس وتنظيف المسافات وتصحيح OCR وتوحيد حالة الحروف كعمليات منفصلة وصريحة حتى يظل كل تحويل مفهوماً وقابلاً للتتبع.
حالات الاستخدام
إصلاح النص المنسوخ من ملفات PDF
حوّل محارف العرض المخفية fi وfl وffi وffl إلى حروف عادية قبل البحث في مقطع أو اقتباسه.
إعداد المستندات للفهرسة
طبّع الروابط قبل إضافة نص أكاديمي أو قانوني أو تحريري مستخرج إلى فهرس للبحث الحرفي.
تثبيت نتائج مقارنة النصوص
أزل فروق نقاط الترميز الناتجة عن التنضيد وحده قبل مقارنة نص منضّد بمصدر نصي عادي.
الأسئلة الشائعة
ما تكلفة الاستخدام؟
تبلغ تكلفة API مقدار $0.002 لكل طلب. ويمكن لإصدار المتصفح تنفيذ التحويل الحتمي نفسه محلياً.
ما الروابط التي يتم توسيعها؟
تُوسّع صيغ العرض ff وfi وfl وffi وffl وst، إضافة إلى حرفي الرابطة AE وOE بصيغتيهما الكبيرة والصغيرة.
هل تتغير تسلسلات fi وfl العادية؟
لا. الحروف المنفصلة قابلة للبحث أصلاً، لذلك لا تُستبدل إلا الروابط المعروفة المكونة من محرف واحد.
هل تصحح الأداة أخطاء OCR؟
لا. توسع الأداة محارف الروابط المعروفة فقط، وتحافظ على الحروف التي أسيء التعرف عليها والمسافات المفقودة وسائر أخطاء OCR.
هل تحافظ على التنسيق وفواصل الأسطر؟
نعم. باستثناء الروابط المدعومة، يُعاد النص بلا تغيير، بما في ذلك المسافات وعلامات الترقيم والنبر وفواصل الأسطر.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/expand-ligatures \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The office file is flexible."}'const res = await fetch("https://api.kit.forhosting.com/str/expand-ligatures", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The office file is flexible."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/expand-ligatures",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The office file is flexible."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/expand-ligatures", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The office file is flexible."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The office file is flexible."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/expand-ligatures", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "The office file is flexible."
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.expand_ligatures",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |