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